Bagaimana saya masuk ke ThoughtWorks atau contoh wawancara

Bagaimana saya masuk ke ThoughtWorks atau contoh wawancara

Tidakkah pelik bagi anda apabila anda akan bertukar kerja dan timbul keperluan untuk lulus temu duga, perkara pertama yang anda fikirkan ialah "anda perlu bersedia untuk temu duga." Selesaikan masalah pada HackerRank, baca Crack the coding interview, hafal cara ArrayList berfungsi dan cara ia berbeza daripada LinkedList. Oh ya, mereka mungkin juga bertanya tentang pengisihan, dan jelas sekali tidak profesional untuk mengatakan bahawa isihan pantas kemungkinan besar akan menjadi pilihan terbaik.
Tetapi tunggu, anda memprogramkan 8 jam sehari, selesaikan masalah yang menarik dan bukan remeh, dan pada pekerjaan baharu anda, anda akan melakukan perkara yang sama, tambah atau tolak. Namun begitu, untuk lulus temu duga, anda perlu menyediakan, malah tidak mengasah kemahiran harian anda, tetapi mempelajari sesuatu yang anda tidak perlukan pada pekerjaan semasa anda dan tidak mungkin diperlukan pada pekerjaan anda yang seterusnya. Untuk bantahan anda bahawa sains komputer adalah dalam darah kami, dan jika anda membangunkan kami di tengah malam, kami diwajibkan untuk menulis dengan mata tertutup pada sarung bantal berjalan-jalan di sekitar lebar pokok tanpa sedar, saya akan menjawab bahawa jika saya mendapat pekerjaan dalam sarkas, dan perkara utama saya silap mata adalah betul-betul ini - maka mungkin ya, saya bersetuju. Kemahiran ini perlu diuji.

Tetapi mengapa menguji kemahiran yang tidak relevan dengan pekerjaan semasa anda? Hanya kerana ia menjadi bergaya? Kerana Google melakukan ini? Atau kerana ketua pasukan masa depan anda perlu mempelajari semua kaedah pengisihan sebelum temu duga dan kini dia percaya bahawa "setiap pengaturcara yang baik mesti mengetahui dengan teliti pelaksanaan mencari palindrom dalam rentetan."

Nah, anda bukan Google (c). Apa yang Google mampu, syarikat biasa tidak mampu. Google, setelah menganalisis data pekerjanya, membuat kesimpulan bahawa jurutera dengan latar belakang Olympiad pandai menangani tugas khususnya. Selain itu, dengan mereka bentuk proses pemilihan mereka, mereka mampu mengambil risiko bahawa mereka mungkin tidak mengupah beberapa jurutera yang baik kerana mereka tidak dapat memecahkan masalah matematik dengan mudah. Tetapi ini tidak menjadi masalah bagi mereka, ada ramai orang yang ingin bekerja di Google, jawatan akan ditutup.
Sekarang mari kita lihat ke luar tingkap, dan jika di hadapan pejabat anda jurutera yang ingin bekerja untuk anda belum lagi menyediakan khemah, dan pembangun anda lebih kerap melihat pada stackoverflow untuk mengetahui anotasi Spring seterusnya yang perlu dipasang, daripada kerumitan algoritma kedudukan, maka, nampaknya, Sudah tiba masanya untuk anda memikirkan sama ada anda perlu menyalin Google.

Nah, jika kali ini Google gagal dan tidak memberikan jawapan, apakah yang perlu anda lakukan? Semak dengan tepat perkara yang akan dilakukan oleh pembangun di tempat kerja. Apakah yang anda hargai dalam pembangun?
Buat kriteria untuk siapa yang anda ingin ambil dan bangunkan ujian yang menguji kemahiran ini dengan tepat.

ThoughtWorks

Apakah kaitan ThoughtWorks dengan ini? Di sinilah saya dapati contoh temuduga model untuk diri saya sendiri. Siapa ThoughtWorks? Ringkasnya, ini adalah syarikat perunding High-End dengan pejabat di seluruh dunia, dari China, Singapura hingga benua Amerika, yang telah berunding dalam bidang pembangunan selama kira-kira 25 tahun, mempunyai bahagian Sains sendiri, yang diketuai oleh Martin Fowler. Jika anda mencari senarai 10 buku yang mesti dibaca untuk Jurutera Perisian, maka mungkin 2-3 daripadanya akan ditulis oleh lelaki dari ThoughtWorks, seperti Refactoring Oleh Martin Fowler dan Building Microservices: Designing Fine-Grained Systems oleh Sam Newman atau Membina Seni Bina Evolusi
oleh Patrick Kua, Rebecca Parsons, Neal Ford.

Perniagaan syarikat dibina dengan menyediakan perkhidmatan yang agak mahal, tetapi pelanggan membayar untuk kualiti yang luar biasa, yang terdiri daripada kepakaran, piawaian dalaman dan, sudah tentu, orang. Oleh itu, mengupah orang yang betul adalah penting di sini.
Apakah jenis orang yang betul? Sudah tentu, ada yang berbeza untuk setiap orang. ThoughtWorks telah menentukan bahawa kriteria yang paling penting untuk model perniagaan pembangun mereka ialah:

  • Keupayaan untuk berkembang secara berpasangan. Ia adalah kebolehan, bukan pengalaman atau kemahiran. Tiada siapa menjangkakan bahawa orang yang telah mengamalkan pengaturcaraan Pair selama 5 tahun akan datang. Tetapi menerima pendapat orang lain dan boleh mendengar adalah kemahiran yang diperlukan.
  • Keupayaan untuk menulis ujian, dan idealnya mengamalkan TDD
  • Fahami SOLID dan OOP dan dapat menerapkannya.
  • Kemukakan pendapat anda. Sebagai perunding, anda perlu bekerjasama dengan pembangun pelanggan, dengan perunding lain, dan tidak banyak faedah jika seseorang itu tahu cara melakukan sesuatu dengan baik, tetapi tidak dapat menyampaikannya kepada seluruh pasukan.

Sekarang adalah penting untuk menilai kemahiran tertentu ini dalam calon. Dan di sini saya ingin bercakap tentang pengalaman saya menemuduga di ThoughtWorks. Saya akan katakan dengan segera bahawa saya pergi ke Singapura dan lulus, tetapi proses pengambilan adalah bersatu dan tidak akan banyak berbeza dari negara ke negara.

Peringkat 0. HR

Seperti yang sering berlaku, temu bual selama 20 minit dengan HR. Saya tidak akan memikirkannya, saya hanya akan mengatakan bahawa saya tidak pernah bertemu dengan orang HR yang boleh bercakap selama 15 minit tentang budaya pembangunan dalam syarikat, mengapa mereka menggunakan TDD, mengapa memasangkan pengaturcaraan. Biasanya, HR akan menjawab soalan ini dan mengatakan bahawa proses mereka adalah normal: pembangun membangun, menguji penguji, pengurus memandu.

Peringkat 1. Sejauh manakah anda berada di OOP, TDD?

1.5 jam sebelum temuduga bermula, saya telah dihantar tugasan untuk membuat simulator Mars Rover.

Misi rover MarikhSkuad rover robotik akan didaratkan oleh NASA di dataran tinggi di Marikh. Dataran tinggi ini, yang berbentuk segi empat tepat, mesti dilayari oleh rover supaya kamera atas kapal mereka boleh mendapatkan pandangan lengkap tentang rupa bumi sekeliling untuk dihantar semula ke Bumi. Kedudukan dan lokasi rover diwakili oleh gabungan koordinat x dan y dan satu huruf yang mewakili salah satu daripada empat mata kompas kardinal. Dataran tinggi dibahagikan kepada grid untuk memudahkan navigasi. Kedudukan contoh mungkin 0, 0, N, yang bermaksud rover berada di sudut kiri bawah dan menghadap ke Utara. Untuk mengawal rover, NASA menghantar rentetan surat yang mudah. Huruf yang mungkin ialah 'L', 'R' dan 'M'. 'L' dan 'R' membuat rover berputar 90 darjah ke kiri atau kanan masing-masing, tanpa bergerak dari tempat semasanya. 'M' bermaksud bergerak ke hadapan satu titik grid, dan mengekalkan tajuk yang sama.
Andaikan bahawa kuasa dua terus Utara dari (x, y) ialah (x, y+1).
MASUKKAN:
Baris pertama input ialah koordinat atas kanan dataran tinggi, koordinat kiri bawah diandaikan sebagai 0,0.
Input selebihnya ialah maklumat yang berkaitan dengan rover yang telah digunakan. Setiap rover mempunyai dua baris input. Baris pertama memberikan kedudukan rover, dan baris kedua ialah satu siri arahan yang memberitahu rover cara meneroka dataran tinggi. Kedudukan terdiri daripada dua integer dan satu huruf yang dipisahkan oleh ruang, sepadan dengan koordinat x dan y serta orientasi rover.
Setiap rover akan selesai secara berurutan, yang bermaksud bahawa rover kedua tidak akan mula bergerak sehingga rover pertama selesai bergerak.
PENGELUARAN:
Output untuk setiap rover hendaklah koordinat dan tajuk terakhirnya.
NOTA:
Cukup laksanakan keperluan di atas dan buktikan pembersih vakum berfungsi dengan menulis ujian unit untuknya.
Mencipta sebarang bentuk antara muka pengguna adalah di luar skop.
Menyelesaikan masalah dengan mengikuti pendekatan TDD (Test Driven Development) akan diutamakan.
Dalam masa yang singkat, kami lebih mementingkan kualiti daripada kesempurnaan.
*Saya tidak dapat menghantar tugasan yang dihantar kepada saya, ini adalah tugasan lama yang diberikan beberapa tahun yang lalu. Tetapi percayalah, pada asasnya semuanya tetap sama.

Saya terutamanya ingin menarik perhatian kepada kriteria penilaian. Berapa kali anda menghadapi situasi di mana perkara yang penting kepada calon adalah tidak penting sama sekali semasa audit dan begitu juga sebaliknya. Tidak semua orang berfikir dengan cara yang sama seperti anda, tetapi ramai yang boleh menerima dan mengikut nilai anda jika ia dinyatakan dengan jelas. Jadi, daripada kriteria penilaian, jelaslah bahawa kemahiran yang paling penting pada peringkat ini adalah

  • TDD;
  • Keupayaan untuk menggunakan OOP dan menulis kod yang boleh diselenggara;
  • kebolehan pengaturcaraan pasangan

Jadi, saya diberi amaran untuk menghabiskan 1.5 jam itu memikirkan bagaimana saya akan melakukan tugas itu, dan bukannya menulis kod. Kami akan menulis kod bersama-sama.

Apabila kami menghubungi telefon, lelaki itu memberitahu kami secara ringkas siapa mereka dan apa yang mereka lakukan dan menawarkan untuk memulakan pembangunan.

Sepanjang temu bual, saya tidak pernah merasakan bahawa saya sedang ditemu bual. Terdapat perasaan bahawa anda sedang membangunkan kod dalam satu pasukan. Jika anda terperangkap di suatu tempat, mereka membantu, menasihati, berbincang, malah berdebat antara satu sama lain tentang cara terbaik untuk melakukannya. Pada temu bual itu, saya terlupa bagaimana untuk menyemak dalam JUnit 5 bahawa kaedah membuang Pengecualian - mereka menawarkan untuk terus menulis ujian, manakala salah seorang daripada mereka sedang mencari cara untuk melakukannya.

Secara harfiah beberapa jam selepas temu bual, saya menerima maklum balas yang membina - perkara yang saya suka dan tidak. Dalam kes saya, saya dipuji kerana menggunakan kelas Sealed sebagai alternatif kepada objek nol; kerana fakta bahawa sebelum menulis kod, saya menulis dalam pseudocode bagaimana saya ingin mengawal rover, dan dengan itu menerima lakaran kelas, sekurang-kurangnya mereka yang terlibat dalam API robot.

Langkah 2: Beritahu kami

Seminggu sebelum temuduga, saya diminta untuk menyediakan pembentangan mengenai mana-mana topik yang menarik minat saya. Formatnya mudah dan biasa: 15 minit pembentangan, 15 minit menjawab soalan.
Saya memilih Seni Bina Bersih oleh Uncle Bob. Dan sekali lagi saya ditemu bual oleh beberapa orang. Ini adalah pengalaman pertama saya menyampaikan dalam bahasa Inggeris, dan, mungkin, jika saya berada dalam situasi yang tertekan, saya tidak akan dapat mengatasinya. Tetapi sekali lagi, saya tidak pernah mempunyai perasaan bahawa saya berada di temuduga. Semuanya seperti biasa - saya memberitahu mereka, mereka mendengar dengan teliti. Malah sesi soal jawab tradisional tidak seperti temu bual; jelas bahawa soalan itu tidak diminta untuk "tenggelam", tetapi soalan yang benar-benar menarik minat mereka dalam pembentangan saya.

Beberapa jam selepas temu bual, saya menerima maklum balas - pembentangan itu sangat berguna dan mereka benar-benar seronok mendengar.

Peringkat 3. Kod Kualiti Pengeluaran

Setelah memberi amaran bahawa ini adalah peringkat terakhir temu duga teknikal, saya diminta untuk membawa kod di rumah kepada keadaan sedia pengeluaran, kemudian menghantar kod untuk semakan dan menjadualkan temu duga di mana keperluan untuk tugasan akan berubah dan kod akan memerlukan pengubahsuaian. Melihat ke hadapan, saya boleh mengatakan bahawa semakan kod dijalankan secara membuta tuli, penyemak tidak tahu jawatan yang dipohon oleh calon, mereka tidak melihat CVnya, mereka tidak melihat namanya.

Telefon berdering, dan sekali lagi terdapat beberapa lelaki di sisi lain monitor. Segala-galanya sama seperti pada temu bual pertama: perkara utama adalah jangan lupa tentang TDD, beritahu apa yang anda lakukan dan mengapa. Sekiranya anda tidak mengamalkan TDD sebelum ini, maka saya cadangkan mula melakukannya dengan segera, bukan kerana ia perlu dalam syarikat, tetapi kerana ia memudahkan hidup anda dengan ketara, mengurangkan tahap tekanan anda jika anda suka. Ingat bagaimana anda terpaksa mencari ralat dengan penyahpepijat secara tergesa-gesa yang hanya boleh dihasilkan semula melalui penyemak imbas, tetapi anda tidak boleh menghasilkan semula dengan ujian? Sekarang bayangkan bahawa anda perlu menangkap kesilapan sedemikian semasa temu duga - anda dijamin beruban. Apa yang kita dapat dengan TDD? Kami menukar kod dan secara tidak dijangka menyedari bahawa kini ujian berwarna merah, tetapi apakah ralat yang tidak dapat kami ketahui pada kali pertama? Okey, kami katakan "Op" kepada penemuduga, tekan Ctrl-Z dan mula mengambil langkah kecil ke hadapan. Dan ya, anda perlu membangunkan keupayaan untuk membangunkan menggunakan TDD dalam diri anda, keupayaan untuk pergi ke arah matlamat supaya ujian anda kekal hijau, dan bukan merah selama setengah hari, kerana "anda mempunyai banyak pemfaktoran semula." Ini adalah kemahiran yang sama seperti menulis kod yang boleh diselenggara, atau menulis kod produktif.

Jadi, sejauh mana kod anda boleh ditukar bergantung pada reka bentuk yang anda fikirkan untuk bermula, betapa mudahnya dan sejauh mana ujian anda.

Selepas temu bual, saya menerima maklum balas dalam masa beberapa jam. Pada peringkat ini, saya menyedari bahawa saya hampir selesai dan hanya tinggal sedikit sehingga saya "bertemu Fowler."

Peringkat 4. Akhir. Soalan teknikal cukup. Kami ingin tahu siapa anda!

Sejujurnya, saya agak hairan dengan rumusan soalan ini. Bagaimanakah anda boleh memahami jenis orang saya dalam satu jam perbualan? Dan lebih-lebih lagi, bagaimana anda boleh memahami perkara ini apabila saya bercakap bahasa yang bukan bahasa ibunda saya, dan, terus terang bercakap, sangat buruk dan terikat lidah. Dalam temu bual sebelum ini, lebih mudah bagi saya secara peribadi untuk bercakap daripada menjawab soalan, dan loghat adalah untuk dipersalahkan. Sekurang-kurangnya salah seorang penemuduga adalah orang Asia - dan loghat mereka, baiklah, katakan sahaja, agak khusus untuk telinga Eropah. Oleh itu, saya mengambil keputusan untuk mengambil pendekatan proaktif - menyediakan pembentangan tentang diri saya dan pada awal temuduga tawaran untuk bercakap tentang diri saya dengan pembentangan ini. Jika mereka bersetuju, maka sekurang-kurangnya akan ada lebih sedikit soalan untuk saya; jika mereka menolak tawaran itu, 3 jam hidup saya dihabiskan untuk pembentangan bukanlah harga yang tinggi. Tetapi apa yang perlu anda tulis dalam pembentangan anda? Biografi - Dilahirkan di sana, pada masa itu, pergi ke sekolah, lulus dari universiti - tetapi siapa yang peduli?

Jika anda Google sedikit tentang budaya Thoughtworks, anda akan menemui artikel oleh Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html] yang menerangkan 3 Tonggak: Perniagaan Mampan, Kecemerlangan Perisian dan Keadilan Sosial.

Mari kita anggap bahawa Kecemerlangan Perisian telah pun disemak untuk saya. Ia kekal untuk menunjukkan Perniagaan Mampan dan Keadilan Sosial.

Lebih-lebih lagi, saya memutuskan untuk memberi tumpuan kepada yang terakhir.

Sebagai permulaan, saya memberitahunya mengapa ThoughtWorks - Saya membaca blog Martin Fowler di kolej, oleh itu saya menyukai kod Bersih.

Projek juga boleh dibentangkan dari sudut yang berbeza. Dia juga membangunkan perisian untuk perubatan yang memudahkan kehidupan pesakit, malah, menurut khabar angin, menyelamatkan satu nyawa. Saya juga membangunkan perisian untuk bank, yang juga memudahkan kehidupan rakyat. Lebih-lebih lagi jika bank ini digunakan oleh 70% penduduk negara. Ini bukan mengenai Sberbank dan bukan juga mengenai Rusia.

Nak tahu tentang saya? OKEY. Hobi saya adalah fotografi, satu cara atau yang lain saya telah memegang kamera di tangan saya selama kira-kira 10 tahun, ada gambar yang saya tidak terlalu malu untuk menunjukkan. Juga, pada satu masa, saya membantu tempat perlindungan kucing: Saya mengambil gambar kucing yang memerlukan rumah kekal. Dan dengan gambar yang bagus adalah lebih mudah untuk meletakkan kucing. Saya mungkin mengambil gambar seratus kucing :)

Akhirnya, 80% pembentangan saya dipenuhi dengan kucing.

Sejurus selepas pembentangan, HR menulis kepada saya bahawa dia belum tahu keputusan temuduga, tetapi seluruh pejabat sudah kagum dengan kucing-kucing itu.

Akhirnya, saya menunggu maklum balas - saya memuaskan hati semua orang sebagai seorang.

Tetapi semasa perbualan terakhir, HR dengan bijak mengatakan bahawa Keadilan Sosial adalah sangat baik dan perlu, tetapi tidak semua projek seperti ini. Dan dia bertanya sama ada ia menakutkan saya. Secara umum, saya melampaui batas dengan Keadilan Sosial, ia berlaku :)

Jumlah

Hasilnya, saya telah bekerja di Singapura di Thoughtworks selama beberapa bulan sekarang, dan saya melihat bahawa di sini terlalu banyak syarikat menggunakan "amalan temu bual terbaik" daripada Google, menggunakan daun dan Papan Putih untuk pengekodan, walaupun mempunyai pengetahuan yang lebih daripada Spring, Symfony, RubyOnRails ( Gariskan apa yang perlu) tidak diperlukan dalam kerja. Jurutera mengambil cuti seminggu sebelum temu duga untuk "menyediakan."

Di Thoughtworks, sebagai tambahan kepada keperluan yang mencukupi untuk calon, prinsip berikut adalah di hadapan:
Kegembiraan Temuduga. Lebih-lebih lagi, untuk kedua-dua pihak. Sesungguhnya, jika anda ingin mendapatkan kakitangan terbaik (dan siapa yang tidak?), maka temuduga bukanlah pasaran di mana hamba dipilih, tetapi pertunjukan di mana kedua-dua majikan dan calon menilai satu sama lain. Dan jika calon mengaitkan emosi yang menyenangkan dengan syarikat, kemungkinan besar dia akan memilih syarikat ini

Berbilang penemuduga untuk mengurangkan berat sebelah. Di Thoughtworks, pengaturcaraan pasangan ialah standard de facto. Dan jika amalan ini boleh digunakan untuk kawasan lain, TW cuba melakukannya. Pada setiap peringkat, temu bual dijalankan oleh 2 orang. Oleh itu, setiap orang dinilai oleh sekurang-kurangnya 8 orang, dan TW cuba memilih penemuduga dengan latar belakang yang berbeza, hala tuju berbeza (bukan sahaja juruteknik) dan jantina.

Akhirnya, keputusan pengambilan pekerja akan dibuat berdasarkan pendapat sekurang-kurangnya 8 orang, dan tiada siapa yang mempunyai undi pemutus.

Pengambilan berdasarkan atribut Daripada membuat keputusan berdasarkan suka atau tidak suka calon, borang dibangunkan untuk setiap peranan dan setiap peringkat yang merangkumi atribut yang dinilai. Pada masa yang sama, apabila menilai, sangat disyorkan untuk menilai bukan pengalaman dalam kemahiran tertentu, tetapi keupayaan untuk menerapkannya. Oleh itu, jika calon tidak dapat menggunakan sebarang kemahiran, seperti TDD, tetapi dia cuba menerapkannya, mendengar nasihat tentang cara menggunakannya dengan betul, dia mempunyai setiap peluang untuk lulus temu duga.

Sijil Pelajaran tidak diperlukan TW tidak memerlukan sebarang pensijilan atau pendidikan dalam Sains Komputer. Hanya kemahiran yang dinilai.

Ini adalah wawancara pertama saya dengan syarikat asing yang tidak perlu saya sediakan. Selepas setiap peringkat, saya tidak berasa letih, tetapi sebaliknya, saya gembira kerana saya boleh menggunakan amalan terbaik, kerana orang di sisi lain monitor menghargainya dan menggunakannya setiap hari.

Selepas beberapa bulan, saya boleh mengatakan bahawa jangkaan saya dipenuhi sepenuhnya. Bagaimanakah ThoughtWorks berbeza daripada syarikat biasa? Dalam syarikat biasa, anda boleh menemui pembangun yang baik dan orang yang baik, tetapi dalam TW tumpuan mereka di luar carta.

Jika anda berminat untuk menyertai ThoughtWorks, anda boleh melihat jawatan terbuka kami di sini
Saya juga mencadangkan memberi perhatian kepada jawatan kosong yang menarik:
Jurutera Perisian Utama: Jerman, London, Madrid, Singapura
Jurutera Perisian Kanan: Sydney, Jerman, Manchester, Bangkok
Jurutera perisian: Sydney, Barcelona, Milan
Jurutera Data Kanan: Milan
Penganalisis Kualiti: Jerman China
Infrastruktur: Jerman, London, Chile
(Saya ingin memberi amaran secara jujur ​​kepada anda bahawa pautan itu adalah pautan rujukan, jika anda pergi ke TW, saya akan menerima bonus yang bagus). Pilih pejabat yang anda suka, anda tidak perlu menghadkan diri anda ke Eropah, lagipun, setiap 2 tahun TW akan gembira untuk memindahkan anda ke negara lain, kerana... Ini adalah sebahagian daripada dasar ThoughtWorks, jadi budaya disebarkan dan diseragamkan.

Jangan ragu untuk bertanya soalan dalam ulasan atau tanya saya untuk cadangan.
Jika topik itu kelihatan menarik, saya akan menulis tentang bagaimana rasanya bekerja di ThoughtWorks dan bagaimana kehidupan di Singapura.

Sumber: www.habr.com

Tambah komen