Bagaimana saya masuk ke ThoughtWorks atau contoh wawancara

Bagaimana saya masuk ke ThoughtWorks atau contoh wawancara

Bukankah aneh bagi Anda bahwa ketika Anda akan berganti pekerjaan dan ada kebutuhan untuk lulus wawancara, hal pertama yang Anda pikirkan adalah “Anda perlu mempersiapkan diri untuk wawancara”. Selesaikan masalah di HackerRank, baca Crack the coding interview, hafalkan cara kerja ArrayList dan perbedaannya dengan LinkedList. Oh ya, mereka mungkin juga bertanya tentang penyortiran, dan jelas tidak profesional jika mengatakan bahwa penyortiran cepat kemungkinan besar adalah pilihan terbaik.
Tapi tunggu dulu, Anda memprogram 8 jam sehari, memecahkan masalah yang menarik dan tidak sepele, dan di pekerjaan baru Anda, Anda akan melakukan hal yang sama, plus atau minus. Namun demikian, untuk lulus wawancara, Anda perlu mempersiapkan diri tambahan, bahkan tidak mengasah keterampilan harian Anda, tetapi mempelajari sesuatu yang tidak Anda perlukan di pekerjaan Anda saat ini dan kemungkinan besar tidak akan diperlukan di pekerjaan Anda berikutnya. Atas keberatan Anda bahwa ilmu komputer ada dalam darah kita, dan jika Anda membangunkan kami di tengah malam, kami wajib menulis dengan mata tertutup di atas sarung bantal berjalan-jalan selebar pohon tanpa sadar kembali, saya Saya akan menjawab bahwa jika saya mendapatkan pekerjaan di sirkus, dan trik utama saya adalah seperti ini - maka mungkin ya, saya setuju. Keterampilan ini perlu diuji.

Tapi mengapa menguji keterampilan yang tidak relevan dengan pekerjaan Anda saat ini? Hanya karena menjadi modis? Karena Google melakukan ini? Atau karena pemimpin tim masa depan Anda harus mempelajari semua metode pengurutan sebelum wawancara dan sekarang dia percaya bahwa “setiap programmer yang baik harus hafal implementasi pencarian palindrom dalam sebuah string.”

Ya, Anda bukan Google (c). Apa yang Google mampu, tidak bisa dilakukan oleh perusahaan biasa. Google, setelah menganalisis data karyawannya, sampai pada kesimpulan bahwa insinyur dengan latar belakang Olimpiade pandai menangani tugas-tugas spesifiknya. Selain itu, dengan merancang proses seleksi, mereka dapat mengambil risiko bahwa mereka mungkin tidak mempekerjakan beberapa insinyur yang baik karena mereka tidak dapat memecahkan soal matematika dengan mudah. Namun hal tersebut tidak menjadi masalah bagi mereka, banyak yang ingin bekerja di Google, posisinya akan ditutup.
Sekarang mari kita lihat ke luar jendela, dan jika di depan kantor Anda para insinyur yang ingin bekerja untuk Anda belum mendirikan tenda, dan pengembang Anda lebih sering mencari di stackoverflow untuk mengetahui apa yang perlu dipasang anotasi Spring berikutnya, daripada seluk-beluk algoritma pemeringkatan, sepertinya sudah waktunya bagi Anda untuk memikirkan apakah Anda harus meniru Google.

Nah, jika kali ini Google gagal dan tidak memberikan jawaban, apa yang harus Anda lakukan? Periksa dengan tepat apa yang akan dilakukan pengembang di tempat kerja. Apa yang Anda hargai dari pengembang?
Buatlah kriteria siapa yang ingin Anda pekerjakan dan kembangkan tes yang menguji keterampilan ini dengan tepat.

ThoughtWorks

Apa hubungannya ThoughtWorks dengan ini? Di sinilah saya menemukan contoh model wawancara untuk diri saya sendiri. Siapakah ThoughtWorks? Singkatnya, ini adalah perusahaan konsultan Kelas Atas dengan kantor di seluruh dunia, dari Cina, Singapura hingga benua Amerika, yang telah berkonsultasi di bidang pembangunan selama kurang lebih 25 tahun, memiliki divisi Sains sendiri yang dipimpin oleh Martin Pemburu burung. Jika Anda mencari daftar 10 buku yang wajib dibaca untuk seorang Software Engineer, mungkin 2-3 di antaranya akan ditulis oleh orang-orang dari ThoughtWorks, seperti Refactoring Oleh Martin Fowler dan Building Microservices: Designing Fine-Grained Systems oleh Sam Newman atau Membangun Arsitektur Evolusioner
oleh Patrick Kua, Rebecca Parsons, Neal Ford.

Bisnis perusahaan dibangun dengan menyediakan layanan yang cukup mahal, namun pelanggan membayar untuk kualitas yang fenomenal, yang terdiri dari keahlian, standar internal dan, tentu saja, sumber daya manusia. Oleh karena itu, mempekerjakan orang yang tepat sangat penting di sini.
Orang seperti apa yang benar? Tentu saja, ada perbedaan untuk setiap orang. ThoughtWorks telah menetapkan bahwa kriteria terpenting untuk model bisnis pengembang mereka adalah:

  • Kemampuan untuk berkembang berpasangan. Itu adalah kemampuan, bukan pengalaman atau keterampilan. Tidak ada yang menyangka akan datang orang yang telah berlatih Pair programming selama 5 tahun, namun menerima pendapat orang lain dan mampu mendengarkan adalah keterampilan yang diperlukan.
  • Kemampuan untuk menulis tes, dan idealnya berlatih TDD
  • Memahami SOLID dan OOP serta mampu menerapkannya.
  • Sampaikan pendapat Anda. Sebagai seorang konsultan, Anda harus bekerja dengan pengembang klien, dengan konsultan lain, dan tidak banyak manfaatnya jika seseorang mengetahui cara melakukan sesuatu dengan baik, tetapi sama sekali tidak mampu menyampaikannya kepada anggota tim lainnya.

Sekarang penting untuk mengevaluasi keterampilan khusus ini pada kandidat. Dan disini saya ingin bercerita tentang pengalaman saya melakukan wawancara di ThoughtWorks. Saya akan langsung mengatakan bahwa saya pergi ke Singapura dan lulus, tetapi proses perekrutannya terpadu dan tidak akan jauh berbeda dari satu negara ke negara lain.

Tahap 0. SDM

Seperti yang sering terjadi, wawancara 20 menit dengan HR. Saya tidak akan membahasnya terlalu jauh, saya hanya akan mengatakan bahwa saya belum pernah bertemu dengan orang HR yang dapat berbicara selama 15 menit tentang budaya pengembangan di perusahaan, mengapa mereka menggunakan TDD, mengapa pemrograman berpasangan. Biasanya, HR tidak tertarik dengan pertanyaan ini dan mengatakan bahwa proses mereka normal: pengembang mengembangkan, penguji menguji, manajer mengemudi.

Tahap 1. Seberapa baik Anda di OOP, TDD?

1.5 jam sebelum wawancara dimulai, saya dikirimi tugas untuk membuat simulator Mars Rover.

Misi penjelajah MarsSekelompok robot penjelajah akan didaratkan oleh NASA di dataran tinggi Mars. Dataran tinggi ini, yang anehnya berbentuk persegi panjang, harus dinavigasi oleh para penjelajah agar kamera yang ada di dalamnya dapat memperoleh gambaran lengkap tentang daerah sekitarnya untuk dikirim kembali ke Bumi. Posisi dan lokasi penjelajah diwakili oleh kombinasi koordinat x dan y serta huruf yang mewakili salah satu dari empat titik mata angin kompas. Dataran tinggi dibagi menjadi beberapa kotak untuk menyederhanakan navigasi. Contoh posisinya mungkin 0, 0, N yang artinya rover berada di pojok kiri bawah dan menghadap Utara. Untuk mengendalikan penjelajah, NASA mengirimkan serangkaian surat sederhana. Kemungkinan hurufnya adalah 'L', 'R' dan 'M'. 'L' dan 'R' membuat penjelajah berputar masing-masing 90 derajat ke kiri atau ke kanan, tanpa berpindah dari tempatnya saat ini. 'M' berarti maju satu titik grid, dan mempertahankan arah yang sama.
Asumsikan persegi yang berada tepat di Utara dari (x, y) adalah (x, y+1).
MEMASUKKAN:
Baris input pertama adalah koordinat kanan atas dataran tinggi, koordinat kiri bawah diasumsikan 0,0.
Masukan selebihnya adalah informasi terkait rover yang telah dikerahkan. Setiap penjelajah memiliki dua jalur masukan. Baris pertama menunjukkan posisi penjelajah, dan baris kedua adalah serangkaian instruksi yang memberi tahu penjelajah cara menjelajahi dataran tinggi. Posisinya terdiri dari dua bilangan bulat dan satu huruf yang dipisahkan spasi, sesuai dengan koordinat x dan y serta orientasi penjelajah.
Setiap rover akan diselesaikan secara berurutan, artinya rover kedua tidak akan mulai bergerak sampai rover pertama selesai bergerak.
KELUARAN:
Output untuk setiap rover harus berupa koordinat dan arah akhir.
CATATAN:
Cukup terapkan persyaratan di atas dan buktikan bahwa penyedot debu berfungsi dengan menulis pengujian unit untuk penyedot debu tersebut.
Membuat segala bentuk antarmuka pengguna berada di luar cakupan.
Menyelesaikan masalah dengan mengikuti pendekatan TDD (Test Driven Development) akan lebih diutamakan.
Dalam waktu singkat yang tersedia, kami lebih mementingkan kualitas daripada kelengkapan.
*Saya tidak dapat memposting tugas yang dikirimkan kepada saya, ini adalah tugas lama yang diberikan beberapa tahun yang lalu. Tapi percayalah, pada dasarnya semuanya tetap sama.

Saya secara khusus ingin menarik perhatian pada kriteria evaluasi. Berapa kali Anda menghadapi situasi di mana hal-hal yang penting bagi seorang kandidat sama sekali tidak penting selama audit dan sebaliknya. Tidak semua orang berpikiran sama seperti Anda, namun banyak yang bisa menerima dan mengikuti nilai-nilai Anda jika dinyatakan dengan jelas. Jadi, dari kriteria evaluasi langsung terlihat bahwa keterampilan yang paling penting pada tahap ini adalah

  • TDD;
  • Kemampuan untuk menggunakan OOP dan menulis kode yang dapat dipelihara;
  • kemampuan pemrograman berpasangan

Jadi, saya diperingatkan untuk menghabiskan 1.5 jam itu memikirkan bagaimana saya akan melakukan tugas tersebut, daripada menulis kode. Kami akan menulis kodenya bersama-sama.

Ketika kami menelepon, orang-orang tersebut secara singkat memberi tahu kami siapa mereka dan apa yang mereka lakukan dan menawarkan untuk memulai pengembangan.

Selama seluruh wawancara, saya tidak pernah sekalipun merasa bahwa saya sedang diwawancarai. Ada perasaan bahwa Anda sedang mengembangkan kode dalam sebuah tim. Jika Anda mengalami kebuntuan di suatu tempat, mereka membantu, menasihati, berdiskusi, bahkan berdebat satu sama lain tentang cara terbaik untuk melakukannya. Pada wawancara, saya lupa cara memeriksa di JUnit 5 bahwa suatu metode memunculkan Pengecualian - mereka menawarkan untuk terus menulis tes, sementara salah satu dari mereka sedang mencari di Google bagaimana melakukannya.

Beberapa jam setelah wawancara, saya menerima masukan yang membangun - apa yang saya suka dan apa yang tidak. Dalam kasus saya, saya dipuji karena menggunakan kelas Sealed sebagai alternatif dari objek null; karena fakta bahwa sebelum menulis kode, saya menulis dalam kodesemu bagaimana saya ingin mengendalikan penjelajah, dan dengan demikian menerima sketsa kelas, setidaknya yang terlibat dalam API robot.

Langkah 2: Beritahu kami

Seminggu sebelum wawancara, saya diminta menyiapkan presentasi tentang topik apa pun yang saya minati. Formatnya sederhana dan familiar: 15 menit presentasi, 15 menit menjawab pertanyaan.
Saya memilih Arsitektur Bersih oleh Paman Bob. Dan lagi-lagi saya diwawancarai oleh beberapa orang. Ini adalah pengalaman pertama saya melakukan presentasi dalam bahasa Inggris, dan mungkin jika saya berada dalam situasi stres, saya tidak akan mampu mengatasinya. Tapi sekali lagi, saya tidak pernah sekalipun merasa seperti sedang berada di sebuah wawancara. Semuanya seperti biasa - saya memberi tahu mereka, mereka mendengarkan dengan cermat. Bahkan sesi tanya jawab tradisional pun tidak seperti wawancara, yang jelas pertanyaan-pertanyaan yang diajukan bukan untuk “tenggelam”, melainkan pertanyaan yang benar-benar membuat mereka tertarik dengan presentasi saya.

Beberapa jam setelah wawancara, saya menerima masukan - presentasinya sangat berguna dan mereka sangat senang mendengarkannya.

Tahap 3. Kode Kualitas Produksi

Setelah diperingatkan bahwa ini adalah tahap terakhir dari wawancara teknis, saya diminta untuk membawa kode di rumah ke keadaan siap produksi, kemudian mengirimkan kode untuk ditinjau dan menjadwalkan wawancara di mana persyaratan untuk tugas tersebut akan berubah dan kode tersebut akan berubah. memerlukan modifikasi. Ke depan bisa saya katakan bahwa code review dilakukan secara membabi buta, reviewer tidak mengetahui posisi yang dilamar kandidat, tidak melihat CV-nya, bahkan tidak melihat namanya.

Telepon berdering, dan lagi-lagi ada beberapa pria di balik monitor. Semuanya sama seperti pada wawancara pertama: yang utama jangan melupakan TDD, ceritakan apa yang Anda lakukan dan mengapa. Jika Anda belum pernah berlatih TDD sebelumnya, maka saya sarankan untuk segera melakukannya, bukan karena hal ini diperlukan di perusahaan, tetapi karena ini sangat menyederhanakan hidup Anda, mengurangi tingkat stres Anda jika Anda mau. Ingat bagaimana Anda harus dengan panik mencari kesalahan dengan debugger yang hanya dapat direproduksi melalui browser, tetapi Anda tidak dapat mereproduksinya dengan pengujian? Sekarang bayangkan Anda harus mengetahui kesalahan seperti itu selama wawancara - Anda dijamin akan memiliki beberapa uban. Apa yang kita dapatkan dengan TDD? Kami mengubah kodenya dan tiba-tiba menyadari bahwa sekarang pengujiannya berwarna merah, tetapi kesalahan apa yang tidak dapat kami temukan untuk pertama kalinya? Oke, kita ucapkan “Ups” kepada pewawancara, tekan Ctrl-Z dan mulailah mengambil langkah kecil ke depan. Dan ya, Anda perlu mengembangkan kemampuan untuk mengembangkan menggunakan TDD dalam diri Anda, kemampuan untuk mencapai tujuan sehingga pengujian Anda berwarna hijau secara permanen, dan tidak merah selama setengah hari, karena “Anda memiliki banyak pemfaktoran ulang.” Keterampilan ini sama persis dengan menulis kode yang dapat dipelihara, atau menulis kode produktif.

Jadi, seberapa baik kode Anda dapat diubah bergantung pada desain apa yang Anda pikirkan untuk memulai, seberapa sederhananya, dan seberapa bagus pengujian Anda.

Setelah wawancara, saya menerima tanggapan dalam beberapa jam. Pada tahap ini, saya menyadari bahwa saya hampir selesai dan hanya tinggal sedikit lagi sampai saya “bertemu Fowler.”

Tahap 4. Terakhir. Pertanyaan teknis yang cukup. Kami ingin tahu siapa Anda!

Sejujurnya, saya agak bingung dengan rumusan pertanyaan ini. Bagaimana Anda bisa memahami orang seperti apa saya dalam satu jam percakapan? Terlebih lagi, bagaimana Anda bisa memahami hal ini ketika saya berbicara dalam bahasa yang bukan bahasa ibu saya, dan, sejujurnya, sangat buruk dan tidak bisa diucapkan. Dalam wawancara sebelumnya, secara pribadi lebih mudah bagi saya untuk berbicara daripada menjawab pertanyaan, dan aksennya yang patut disalahkan. Setidaknya salah satu pewawancara adalah orang Asia - dan aksen mereka, anggap saja, agak spesifik di telinga orang Eropa. Oleh karena itu, saya memutuskan untuk mengambil pendekatan proaktif - menyiapkan presentasi tentang diri saya dan di awal wawancara, tawarkan untuk berbicara tentang diri saya dengan presentasi ini. Kalau mereka setuju, setidaknya pertanyaanku akan berkurang, kalau mereka menolak tawaran itu, ya, 3 jam hidupku untuk presentasi bukanlah harga yang mahal. Tapi apa yang harus Anda tulis dalam presentasi Anda? Biografi - Lahir di sana, saat itu, bersekolah, lulus universitas - tapi siapa yang peduli?

Jika Anda mencari sedikit di Google tentang budaya Thoughtworks, Anda akan menemukan artikel oleh Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html] yang menjelaskan 3 Pilar: Bisnis Berkelanjutan, Keunggulan Perangkat Lunak, dan Keadilan Sosial.

Anggaplah Keunggulan Perangkat Lunak telah diperiksa untuk saya. Tetap menunjukkan Bisnis Berkelanjutan dan Keadilan Sosial.

Selain itu, saya memutuskan untuk fokus pada yang terakhir.

Pertama-tama, saya memberi tahu dia alasannya ThoughtWorks - Saya membaca blog Martin Fowler saat masih kuliah, karena itulah kecintaan saya pada kode Bersih.

Proyek juga dapat disajikan dari berbagai sudut. Dia juga mengembangkan perangkat lunak untuk pengobatan yang menyederhanakan kehidupan pasien, dan bahkan, menurut rumor, menyelamatkan satu nyawa. Saya juga mengembangkan perangkat lunak untuk bank, yang juga membuat hidup lebih mudah bagi masyarakat. Apalagi jika bank ini digunakan oleh 70% penduduk Tanah Air. Ini bukan tentang Bank Tabungan dan bahkan bukan tentang Rusia.

Ingin tahu tentang saya? OKE. Hobi saya adalah fotografi, entah bagaimana saya sudah memegang kamera selama kurang lebih 10 tahun, ada foto-foto yang saya tidak terlalu malu untuk menunjukkannya. Selain itu, pada suatu waktu, saya membantu tempat penampungan kucing: Saya memotret kucing yang membutuhkan rumah permanen. Dan dengan foto yang bagus, akan lebih mudah untuk menempatkan kucing. Saya mungkin memotret seratus kucing :)

Pada akhirnya, 80% presentasi saya diisi dengan kucing.

Segera setelah presentasi, HR menulis kepada saya bahwa dia belum mengetahui hasil wawancaranya, tetapi seluruh kantor sudah terkesan dengan kucing-kucing itu.

Pada akhirnya, saya menunggu masukan - saya memuaskan semua orang sebagai pribadi.

Namun pada perbincangan terakhir, HR dengan bijaksana mengatakan bahwa Keadilan Sosial sangat baik dan perlu, namun tidak semua proyek seperti ini. Dan dia bertanya apakah itu membuatku takut. Secara umum, saya sedikit berlebihan dengan Keadilan Sosial, itu terjadi :)

Total

Hasilnya, saya telah bekerja di Singapura di Thoughtworks selama beberapa bulan, dan saya melihat bahwa di sini terlalu banyak perusahaan yang mengadopsi “praktik wawancara terbaik” dari Google, menggunakan daun dan Papan Tulis untuk pengkodean, meskipun memiliki pengetahuan lebih banyak daripada Spring, Symfony, RubyOnRails (Garis bawahi apa yang diperlukan) tidak diperlukan dalam pekerjaan. Insinyur mengambil cuti seminggu sebelum wawancara untuk “bersiap.”

Di Thoughtworks, selain persyaratan yang memadai untuk kandidat, prinsip-prinsip berikut dikedepankan:
Kegembiraan Wawancara. Apalagi untuk kedua belah pihak. Memang benar, jika Anda ingin mendapatkan personel terbaik (dan siapa yang tidak?), maka wawancara bukanlah pasar di mana budak dipilih, namun sebuah pertunjukan di mana pemberi kerja dan kandidat saling mengevaluasi. Dan jika seorang kandidat mengasosiasikan emosi yang menyenangkan dengan suatu perusahaan, kemungkinan besar dia akan memilih perusahaan tersebut

Beberapa pewawancara untuk mengurangi bias. Di Thoughtworks, pemrograman berpasangan adalah standar de facto. Dan jika praktik ini bisa diterapkan di daerah lain, TW mencoba melakukannya. Pada setiap tahap wawancara dilakukan oleh 2 orang. Dengan demikian, setiap orang dinilai oleh minimal 8 orang, dan TW mencoba memilih pewawancara dengan latar belakang yang berbeda, arah yang berbeda (tidak hanya teknisi) dan gender.

Pada akhirnya, keputusan perekrutan akan dibuat berdasarkan pendapat minimal 8 orang, dan tidak ada seorang pun yang memiliki hak suara.

Perekrutan berbasis atribut Daripada membuat keputusan berdasarkan suka atau tidak suka kandidat, sebuah formulir dikembangkan untuk setiap peran dan setiap tahapan yang mencakup atribut yang dinilai. Pada saat yang sama, ketika menilai, sangat disarankan untuk mengevaluasi bukan pengalaman dalam suatu keterampilan tertentu, tetapi kemampuan menerapkannya. Jadi, jika seorang kandidat tidak dapat menerapkan keterampilan apa pun, misalnya TDD, namun ia mencoba menerapkannya, mendengarkan nasihat tentang cara menggunakannya dengan benar, ia memiliki peluang besar untuk lulus wawancara.

Sertifikat Pendidikan tidak diperlukan TW tidak memerlukan sertifikasi atau pendidikan apa pun di bidang Ilmu Komputer. Hanya keterampilan yang dinilai.

Ini adalah wawancara pertama yang saya lakukan dengan perusahaan asing yang tidak perlu saya persiapkan. Setelah setiap tahap, saya tidak merasa lelah, namun sebaliknya, saya senang bisa menerapkan praktik terbaik, sehingga orang-orang di balik monitor menghargainya dan menerapkannya setiap hari.

Setelah beberapa bulan, saya dapat mengatakan bahwa harapan saya sepenuhnya terpenuhi. Apa perbedaan ThoughtWorks dengan perusahaan biasa? Di perusahaan biasa Anda dapat menemukan pengembang yang baik dan orang-orang baik, tetapi di TW konsentrasi mereka tidak masuk akal.

Jika Anda tertarik untuk bergabung dengan ThoughtWorks, Anda dapat melihat posisi terbuka kami di sini
Saya juga menyarankan untuk memperhatikan lowongan yang menarik:
Insinyur Perangkat Lunak Utama: Jerman, London, Madrid, Singapura
Insinyur Perangkat Lunak Senior: Sydney, Jerman, Manchester, Bangkok
Insinyur Perangkat Lunak: Sydney, Barcelona, Milan
Insinyur Data Senior: Milan
Analis Kualitas: Jerman Cina
Infrastruktur: Jerman, London, Chili
(Sejujurnya saya ingin memperingatkan Anda bahwa tautan tersebut adalah tautan rujukan, jika Anda pergi ke TW, saya akan menerima bonus yang bagus). Pilih kantor yang kamu suka, tidak perlu membatasi diri di Eropa, lagipula setiap 2 tahun sekali TW akan dengan senang hati memindahkanmu ke negara lain, karena... ini adalah bagian dari kebijakan ThoughtWorks, sehingga budayanya tersebar dan dihomogenisasi.

Jangan ragu untuk mengajukan pertanyaan di komentar atau meminta rekomendasi kepada saya.
Jika topiknya menarik, saya akan menulis tentang bagaimana rasanya bekerja di ThoughtWorks dan seperti apa kehidupan di Singapura.

Sumber: www.habr.com

Tambah komentar