
Apakah tidak aneh bagi Anda bahwa ketika Anda akan mengubah tempat kerja Anda dan Anda harus melalui sebuah wawancara, pertama-tama Anda berpikir "Anda perlu mempersiapkan diri untuk wawancara." Selesaikan masalah di HackerRank, baca Crack the coding interview, hapal bagaimana ArrayList bekerja dan bagaimana bedanya dengan LinkedList. Oh ya, mereka masih bisa meminta penyortiran, dan jelas tidak profesional untuk mengatakan bahwa penyortiran cepat mungkin menjadi pilihan terbaik.
Tapi tunggu, Anda memprogram 8 jam sehari, menyelesaikan tugas-tugas yang menarik dan non-sepele, dan di tempat kerja baru Anda akan melakukan plus atau minus yang sama. Namun demikian, untuk lulus wawancara, penting untuk mempersiapkan, entah bagaimana, selain untuk mengasah keterampilan harian Anda, tetapi untuk mempelajari apa yang tidak Anda butuhkan pada pekerjaan Anda saat ini, atau tidak mungkin diperlukan pada pekerjaan berikutnya. Untuk keberatan Anda bahwa ilmu komputer ada dalam darah kami, dan membangunkan kami di tengah malam, kami diwajibkan untuk menulis dengan mata tertutup di atas sarung bantal berjalan di sekitar pohon lebar bahkan tanpa mendapatkan kembali kesadaran, saya akan menjawab bahwa jika saya menetap di sirkus, dan utama saya ini triknya - mungkin ya, saya setuju. Anda perlu memeriksa keterampilan ini.
Tetapi mengapa menguji keterampilan yang tidak relevan dengan pekerjaan Anda saat ini? Hanya karena sudah menjadi mode? Karena Google melakukan ini? Atau karena pemimpin tim Anda di masa depan harus mempelajari semua metode pemilahan sebelum melalui wawancara dan sekarang ia percaya bahwa "setiap programmer yang baik harus hafal penerapan hati menemukan palindrome dalam sebuah garis".
Bebek, Anda bukan Google. Apa yang Google mampu, perusahaan biasa tidak bisa. Google, setelah menganalisis data karyawannya, sampai pada kesimpulan bahwa itu khusus untuknya, khusus untuk tugas-tugasnya, baik bagi insinyur dengan masa lalu olimpiade untuk menanganinya. Selain itu, dengan membangun proses seleksi, mereka dapat mengambil risiko bahwa mereka mungkin tidak mempekerjakan beberapa insinyur yang baik karena fakta bahwa mereka tidak tahu bagaimana mengklik masalah matematika dengan mudah. Tetapi bagi mereka itu tidak masalah, ada banyak orang yang ingin bekerja di Google, posisinya akan ditutup.
Sekarang, mari kita lihat ke luar jendela, dan jika masih ada beberapa kemping di depan kantor Anda yang tidak ingin bekerja untuk Anda, dan pengembang Anda lebih cenderung mencari pada stackoverflow untuk anotasi mata air berikutnya, daripada seluk-beluk algoritma peringkat, maka, kemungkinan besar, Anda harus memikirkan apakah akan menyalin Google.
Nah, jika kali ini Google gagal dan tidak memberikan jawaban, apa yang harus saya lakukan? Periksa dengan tepat apa yang akan dilakukan pengembang di tempat kerja. Apa yang Anda nilai dari pengembang?
Buat kriteria untuk siapa Anda ingin merekrut dan mengembangkan tes yang menguji keterampilan khusus ini.
Pekerjaan pemikiran
Apa hubungan ThoughtWorks dengan itu? Di sinilah saya menemukan contoh wawancara model untuk diri saya sendiri. Siapakah ThoughtWorks? Singkatnya, ini adalah perusahaan konsultan High-End dengan kantor di seluruh dunia dari Cina, Singapura ke Amerika, yang telah memberikan nasihat dalam pengembangan sekitar 25 tahun, memiliki divisi Sains sendiri, yang dipimpin oleh Martin Fowler. Jika Anda mencari daftar 10 buku yang harus dibaca untuk Software Engineer, maka mungkin 2-3 di antaranya akan ditulis oleh ThoughtWorks guys, seperti Refactoring Oleh Martin Fowler dan Building Microservices: Merancang Sistem Butir-Butir oleh Sam Newman atau Building Arsitektur Evolusi
oleh Patrick Kua, Rebecca Parsons, Neal Ford.
Bisnis perusahaan didasarkan pada penyediaan layanan yang agak mahal, tetapi pelanggan membayar untuk kualitas yang fenomenal, yang terdiri dari keahlian, standar internal dan, tentu saja, orang. Karena itu, sangat penting untuk mempekerjakan orang yang tepat.
Orang macam apa yang benar? Tentu untuk masing-masing. ThoughtWorks menentukan bahwa untuk model bisnis mereka untuk pengembang, kriteria yang paling penting adalah:
- Kemampuan untuk memasangkan perkembangan. Itu adalah kemampuan, bukan pengalaman atau keterampilan. Tidak ada yang mengharapkan orang-orang yang telah mempraktikkan pemrograman Pair selama sekitar 5 tahun yang akan datang. Tetapi untuk menerima pendapat orang lain, untuk dapat mendengarkan adalah keterampilan yang diperlukan.
- Kemampuan menulis tes, dan idealnya berlatih TDD
- Memahami SOLID dan OOP dan dapat menerapkannya.
- Sampaikan pendapat Anda. Konsultan harus bekerja dengan pengembang pelanggan, dengan konsultan lain, dan tidak ada banyak manfaat jika orang tersebut tahu bagaimana melakukan sesuatu dengan baik, tetapi sama sekali tidak dapat menyampaikan hal ini kepada seluruh tim.
Sekarang penting untuk mengevaluasi keterampilan kandidat ini dengan tepat. Dan di sini saya ingin berbicara tentang pengalaman saya dalam wawancara di ThoughtWorks. Saya akan segera mengatakan bahwa saya pergi ke Singapura dan lulus, tetapi proses perekrutannya disatukan dan tidak akan berbeda jauh dari satu negara ke negara lain.
Tahap 0. SDM
Seperti yang sering terjadi, wawancara 20 menit dengan HR. Saya tidak akan memikirkannya, saya hanya bisa mengatakan bahwa saya belum pernah bertemu SDM yang bisa berbicara tentang budaya pengembangan di perusahaan selama 15 menit, mengapa mereka menggunakan TDD, mengapa pemrograman berpasangan. Biasanya, HR berbicara tentang pertanyaan ini dan mengatakan bahwa mereka memiliki proses normal: pengembang mengembangkan, menguji penguji, manajer mengemudi.
Tahap 1. Seberapa baik Anda di OOP, TDD?
1,5 jam sebelum wawancara, mereka mengirim saya tugas untuk membuat simulator Mars Rover.
Quest Mars roverSatu regu penemu robot akan didaratkan oleh NASA di dataran tinggi di Mars. Dataran tinggi ini, yang berbentuk persegi panjang yang aneh, harus dinavigasi oleh penjelajah sehingga kamera di pesawat mereka bisa mendapatkan tampilan lengkap dari medan sekitarnya untuk dikirim kembali ke Bumi. Posisi dan lokasi rover diwakili oleh kombinasi koordinat x dan y dan surat yang mewakili salah satu dari empat titik mata angin utama. Dataran tinggi dibagi menjadi grid untuk menyederhanakan navigasi. Posisi contoh mungkin 0, 0, N, yang berarti bajak berada di sudut kiri bawah dan menghadap ke Utara. Untuk mengendalikan penjelajah, NASA mengirimkan serangkaian huruf sederhana. Huruf yang mungkin adalah 'L', 'R' dan 'M'. 'L' dan 'R' membuat rover berputar masing-masing 90 derajat ke kiri atau ke kanan, tanpa bergerak dari titik saat ini. 'M' berarti bergerak maju satu titik kisi, dan mempertahankan pos yang sama.
Asumsikan bahwa kuadrat langsung dari Utara (x, y) adalah (x, y + 1).
INPUT:
Baris input pertama adalah koordinat kanan atas dataran tinggi, koordinat kiri bawah diasumsikan 0,0.
Sisa input adalah informasi yang berkaitan dengan rover yang telah dikerahkan. Setiap penjelajah memiliki dua jalur input. Baris pertama memberikan posisi bajak, dan baris kedua adalah serangkaian instruksi yang memberitahu bajak bagaimana menjelajahi dataran tinggi. Posisi ini terdiri dari dua bilangan bulat dan huruf yang dipisahkan oleh spasi, sesuai dengan koordinat x dan y dan orientasi rover.
Setiap rover akan selesai berurutan, yang berarti bahwa rover kedua tidak akan mulai bergerak sampai yang pertama selesai bergerak.
OUTPUT:
Output untuk setiap rover harus menjadi koordinat terakhir dan headingnya.
CATATAN:
Cukup terapkan persyaratan di atas dan buktikan penyedot debu berfungsi dengan menulis unit test untuknya.
Membuat segala bentuk antarmuka pengguna berada di luar jangkauan.
Mengatasi masalah dengan mengikuti pendekatan TDD (Test Driven Development) akan lebih disukai.
Dalam waktu singkat yang tersedia, kami lebih mementingkan kualitas daripada kelengkapan.
* Saya tidak dapat memposting tugas yang dikirim kepada saya, ini adalah tugas lama yang diberikan beberapa tahun yang lalu. Tapi percayalah, pada dasarnya semuanya tetap sama.
Secara terpisah, saya ingin memperhatikan kriteria evaluasi. Berapa kali Anda dihadapkan dengan situasi di mana hal-hal yang penting bagi kandidat sama sekali tidak relevan ketika memeriksa dan sebaliknya. Tidak semua orang berpikir dengan cara yang sama seperti Anda, tetapi banyak yang dapat menerima nilai-nilai Anda dan mengikuti mereka jika dinyatakan dengan jelas. Jadi, dari kriteria evaluasi segera jelas bahwa keterampilan yang paling penting pada tahap ini adalah
- TDD
- Kemampuan untuk menggunakan OOP dan menulis kode yang didukung;
- memasangkan kemampuan pemrograman
Jadi, saya diperingatkan untuk menghabiskan 1,5 jam ini memikirkan bagaimana saya akan melakukan tugas, daripada menulis kode. Kami akan menulis kode bersama.
Ketika kami menelepon, orang-orang itu dengan singkat memberi tahu siapa mereka dan apa yang mereka lakukan dan menawarkan untuk memulai pengembangan.
Selama wawancara berlangsung, saya tidak pernah merasa bahwa saya sedang dalam wawancara. Ada perasaan bahwa Anda sedang mengembangkan kode dalam sebuah tim. Jika Anda terjebak di suatu tempat - mereka membantu, memberi nasihat, berdiskusi, bahkan berdebat di antara mereka sendiri cara terbaik untuk melakukannya. Pada wawancara itu, saya lupa bagaimana di JUnit 5 untuk memeriksa bahwa metode ini membuang Pengecualian - mereka menyarankan untuk terus menulis tes, sementara salah satu dari mereka mencari cara untuk melakukan ini di Google.
Hanya beberapa jam setelah wawancara, saya menerima umpan balik yang membangun - apa yang saya suka dan apa yang tidak. Dalam kasus saya, dipuji karena menggunakan kelas Sealed sebagai alternatif dari objek \ null; karena saya menulis pseudo-code sebelum menulis kode, seolah-olah saya ingin mengendalikan bajak, dan dengan demikian mendapat sketsa kelas, setidaknya mereka yang terlibat dalam robot API.
Tahap 2. Beri tahu kami
Seminggu sebelum wawancara, saya diminta menyiapkan presentasi tentang topik apa saja yang menarik minat saya. Formatnya sederhana dan akrab: presentasi 15 menit, 15 menit jawaban atas pertanyaan.
Saya memilih Clean Architecture oleh Paman Bob. Dan lagi beberapa orang mewawancarai saya. Ini adalah pengalaman pertama saya dalam presentasi dalam bahasa Inggris, dan, mungkin, jika saya berada dalam situasi yang penuh tekanan, saya tidak akan berhasil. Tetapi sekali lagi, saya tidak pernah merasa bahwa saya sedang dalam sebuah wawancara. Semuanya seperti biasa - saya katakan, mereka mendengarkan dengan cermat. Bahkan sesi tanya jawab tradisional tidak seperti wawancara, sudah jelas bahwa pertanyaan-pertanyaan diminta untuk tidak "tenggelam", tetapi pertanyaan-pertanyaan yang benar-benar membuat saya tertarik pada presentasi saya.
Beberapa jam setelah wawancara saya menerima umpan balik - presentasi sangat bermanfaat dan mereka sangat menikmati mendengarkan.
Tahap 3. Kode Kualitas Produksi
Setelah memperingatkan bahwa ini adalah tahap terakhir dari wawancara teknis, saya diminta untuk membawa kode ke status siap-produksi di rumah, kemudian mengirimkan kode ke tinjauan dan menjadwalkan wawancara di mana persyaratan untuk tugas akan berubah dan kode perlu diubah. Ke depan, saya dapat mengatakan bahwa tinjauan kode dilakukan secara membabi buta, pengulas tidak tahu posisi yang dilamar kandidat, tidak melihat CV-nya, bahkan tidak melihat namanya.
Menelepon, dan lagi beberapa orang di sisi lain dari monitor. Semuanya seperti pada wawancara pertama: yang utama adalah jangan melupakan TDD, ceritakan apa yang Anda lakukan dan mengapa. Jika Anda belum pernah berlatih TDD sebelumnya, maka saya sarankan Anda segera melakukannya, bukan karena itu diperlukan di perusahaan, tetapi karena itu sangat menyederhanakan hidup Anda, mengurangi stres jika Anda mau. Ingat bagaimana Anda harus panik mencari dengan debugger untuk kesalahan yang direproduksi hanya melalui browser, tetapi Anda tidak dapat mereproduksi dengan tes? Sekarang bayangkan Anda harus menangkap kesalahan seperti itu selama wawancara - beberapa rambut abu-abu disediakan untuk Anda. Apa yang diberikan kepada kami dengan TDD? Kami mengubah kode dan tiba-tiba menyadari bahwa tes sekarang merah, tetapi kesalahan apa yang tidak dapat dipahami pertama kali? Oke, kita ucapkan “Ups” kepada pewawancara, tekan Ctrl-Z dan mulailah berjalan dengan langkah kecil ke depan. Dan ya, kemampuan untuk berkembang menggunakan TDD, Anda harus mengembangkan dalam diri Anda, kemampuan untuk mencapai tujuan sehingga tes Anda berwarna hijau permanen dan tidak merah selama setengah hari, karena "Anda memiliki banyak refactoring." Ini persis keterampilan yang sama dengan kemampuan untuk menulis kode yang didukung, atau kode produktif.
Jadi, seberapa baik kode Anda berubah tergantung pada desain apa yang Anda buat, seberapa sederhana, dan seberapa baik pengujian Anda.
Setelah wawancara, saya menerima umpan balik dalam beberapa jam. Pada tahap ini, saya menyadari bahwa saya praktis telah berlalu dan hanya ada sedikit yang tersisa sampai “bertemu dengan Fowler”.
Tahap 4. Final. Pertanyaan teknis yang cukup. Kami ingin tahu siapa Anda!
Jujur, saya agak bingung dengan rumusan pertanyaan seperti itu. Bagaimana saya bisa mengerti orang seperti apa saya dalam satu jam percakapan? Dan terlebih lagi, bagaimana saya bisa memahami hal ini ketika saya berbicara dalam bahasa yang tidak asli bagi saya, dan, sejujurnya, itu sangat buruk dan tidak jelas. Dalam wawancara sebelumnya, lebih mudah bagi saya secara pribadi untuk berbicara daripada menjawab pertanyaan, dan penekanannya adalah menyalahkan. Setidaknya salah satu pewawancara adalah orang Asia - dan penekanan mereka, yah, katakanlah, agak spesifik untuk telinga Eropa. Oleh karena itu, saya memutuskan untuk mengambil pendekatan proaktif - untuk mempersiapkan presentasi tentang diri saya dan pada awal wawancara untuk menawarkan untuk menceritakan tentang diri saya dengan presentasi ini. Jika mereka setuju, maka setidaknya akan ada lebih sedikit pertanyaan untuk saya, jika mereka menolak tawaran - yah, kemudian, 3 jam hidup saya dihabiskan untuk presentasi bukan harga tinggi. Tetapi apa yang harus ditulis dalam presentasi? Biografi - Dia lahir di sana, lalu, pergi ke sekolah, lulus dari universitas - tetapi siapa yang peduli?
Jika Anda sedikit Google tentang budaya Thoughtworks, Anda dapat menemukan artikel oleh Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], yang menggambarkan 3 Pilar: Bisnis Berkelanjutan, Keunggulan Perangkat Lunak, dan Keadilan Sosial.
Misalkan saya sudah memeriksa Keunggulan Perangkat Lunak. Tetap menunjukkan Keadilan Bisnis dan Sosial Berkelanjutan.
Selain itu, saya memutuskan untuk fokus pada yang terakhir.
Untuk mulai dengan, saya katakan mengapa ThoughtWorks - saat masih di institut, baca blog Martin Fowler, karena itu cinta untuk kode Bersih.
Proyek juga dapat disajikan dari berbagai sudut. Dia juga mengembangkan perangkat lunak untuk pengobatan yang membuat hidup lebih mudah bagi pasien, dan bahkan dikabarkan telah menyelamatkan satu nyawa. Dia juga mengembangkan perangkat lunak untuk bank, juga semacam penyederhanaan kehidupan bagi warga negara. Apalagi jika 70% populasi negara menggunakan bank ini. Ini bukan tentang Sberbank dan bahkan tentang Rusia.
Ingin tahu tentang saya? Baiklah Hobi saya adalah fotografi, entah bagaimana saya telah memegang kamera di tangan saya selama sekitar 10 tahun, ada foto yang tidak terlalu memalukan untuk ditampilkan. Juga, pada suatu waktu, saya membantu penampungan kucing: Saya memotret kucing yang membutuhkan rumah permanen. Dan dengan foto yang bagus akan lebih mudah untuk melampirkan kucing. Mungkin difilmkan dengan seratus kucing :)Pada akhirnya, 80% dari presentasi yang saya miliki dipenuhi dengan kucing.
Segera setelah presentasi, HR menulis kepada saya bahwa dia belum tahu hasil wawancara, tetapi seluruh kantor sudah terkesan dengan kucing.
Pada akhirnya, saya menunggu umpan balik - Saya memuaskan semua orang sebagai pribadi.
Tetapi HR dalam pembicaraan terakhir dengan bijaksana mengatakan bahwa Keadilan Sosial sangat baik dan perlu, tetapi tidak semua proyek seperti itu. Dan bertanya apakah ini membuatku takut. Secara umum, saya terlalu jauh dengan Keadilan Sosial, itu terjadi :)
Ringkasan
Sebagai hasilnya, saya telah bekerja di Singapura di Thoughtworks selama beberapa bulan sekarang, saya melihat bahwa di sini terlalu banyak perusahaan mengadopsi "praktik wawancara terbaik" dari Google, menggunakan selebaran dan Papan Tulis untuk pengkodean, meskipun fakta bahwa pengetahuan lebih jauh daripada Spring, Symfony, RubyOnRails ( menggarisbawahi) tidak diperlukan dalam pekerjaan. Insinyur mengambil cuti seminggu sebelum wawancara untuk "bersiap-siap."
Dalam Karya Pikiran, di samping persyaratan yang memadai untuk seorang kandidat, prinsip-prinsip berikut ditempatkan di garis depan:
Sukacita Wawancara. Apalagi untuk kedua belah pihak. Memang, jika Anda ingin mendapatkan staf terbaik (dan siapa yang tidak mau?), Maka wawancara itu bukan pasar tempat budak dipilih, melainkan mempelai laki-laki, tempat majikan dan kandidat mengevaluasi satu sama lain. Dan jika seorang kandidat mengaitkan emosi yang menyenangkan dengan sebuah perusahaan, kemungkinan dia akan memilih perusahaan ini.
Banyak pewawancara untuk mengurangi bias. Dalam Thoughtworks, pemrograman pasangan adalah standar de facto. Dan jika praktik ini dapat diterapkan di area lain, TW sedang mencoba untuk melakukannya. Pada setiap tahap, 2 orang melakukan wawancara. Dengan demikian, setidaknya 8 orang mengevaluasi setiap orang, dan TW mencoba untuk memilih pewawancara dengan latar belakang yang berbeda, arah yang berbeda (bukan hanya teknisi) dan gender.
Pada akhirnya, keputusan tentang perekrutan akan dilakukan berdasarkan pendapat setidaknya 8 orang, dan tidak ada yang memiliki hak pilih.
Mempekerjakan berdasarkan atribut Alih-alih membuat keputusan berdasarkan suka / tidak suka kandidat, formulir telah dikembangkan untuk setiap peran dan untuk setiap tahap, termasuk atribut yang sedang dievaluasi. Pada saat yang sama, ketika mengevaluasi, sangat disarankan untuk mengevaluasi bukan pengalaman dalam keterampilan tertentu, tetapi kemampuan untuk menerapkannya. Jadi, jika kandidat tidak mungkin untuk menerapkan keterampilan seperti TDD, tetapi meskipun demikian ia mencoba menerapkannya, mendengarkan tip untuk penggunaan yang tepat - ia memiliki setiap kesempatan untuk mendapatkan wawancara.
Sertifikat Pendidikan tidak diperlukan TW tidak mensyaratkan kandidat untuk mendapatkan sertifikat wajib atau pendidikan dalam Ilmu Komputer. Hanya keterampilan yang dievaluasi.
Ini adalah wawancara pertama dari mereka yang saya datangi ke perusahaan asing yang tidak harus saya persiapkan. Setelah setiap tahap, saya tidak merasa diperas seperti lemon, tetapi sebaliknya, saya senang bahwa saya dapat menerapkan praktik terbaik, bahwa orang-orang di sisi lain dari monitor menghargai ini, dan juga menerapkannya setiap hari.
Setelah beberapa bulan, saya dapat mengatakan bahwa harapan sepenuhnya terpenuhi. Bagaimana ThoughtWorks berbeda dari perusahaan biasa? Di perusahaan reguler, Anda dapat menemukan pengembang yang baik dan orang-orang baik, tetapi dalam TW konsentrasi mereka tidak masuk akal.
Jika Anda ingin bergabung dengan ThoughtWorks, pekerjaan terbuka dapat dilihat di
sini.Saya juga menyarankan untuk memperhatikan lowongan yang menarik:
Insinyur Perangkat Lunak Utama: Jerman ,
London ,
Madrid ,
SingapuraInsinyur Perangkat Lunak Senior: Sydney ,
Jerman ,
Manchester ,
BangkokInsinyur Perangkat Lunak: Sydney ,
Barcelona ,
MilanInsinyur Data Senior: MilanAnalis Kualitas: Jerman CinaInfrastacture: Jerman ,
London ,
Chili(Saya ingin secara jujur memperingatkan bahwa tautan tersebut adalah rujukan, jika Anda masuk ke TW, saya akan mendapatkan bonus yang bagus). Pilih kantor sesuai keinginan Anda, tidak perlu dibatasi hanya ke Eropa, lagipula, setiap 2 tahun TW akan dengan senang hati mengangkut Anda ke negara lain, karena itu adalah bagian dari kebijakan ThoughtWorks, sehingga budaya menyebar dan rata-rata.
Jangan ragu untuk bertanya di komentar atau minta saya merekomendasikan Anda.
Jika topiknya tampak menarik, saya akan menulis tentang cara kerjanya di ThoughtWorks dan bagaimana kehidupannya di Singapura.