Bagaimana saya membangun karier saya di Amazon, di mana saya diambil secara tidak sengaja

Hari ini saya merayakan lima tahun di Amazon. Selama waktu ini, saya mentransfer lebih dari 500.000 baris kode ke produksi, memeriksa kode orang lain lebih dari 500 kali, merancang, mengembangkan, menerapkan, dan mendukung sistem skala besar yang digunakan oleh ribuan pelanggan dari seluruh dunia. Saya dianggap sebagai salah satu pemimpin teknis terkemuka di tim.



Tapi tidak selalu demikian. Pada tahun 2015, saya mendapat pekerjaan sebagai pengembang perangkat lunak peringkat pertama. Dan sia-sia. Saya adalah seorang penipu sejati. Tetapi keterampilan teknik saya yang sedikit tidak menghentikan saya untuk dipromosikan ke peringkat kedua pada akhirnya. Saya ingin berbagi cerita saya untuk membantu penipu lain berhasil di perusahaan FAANG - baik, atau lainnya.



Bagaimana saya menyelinap ke Amazon



Saya mengagumi orang-orang yang berhasil melalui siklus seleksi penuh di salah satu perusahaan FAANG. Ini adalah serangkaian wawancara dari pagi hingga sore, di mana kandidat ditanyai untuk pengetahuan teknis dan kualitas pribadi oleh lima karyawan perusahaan yang berbeda. Untuk lulus ujian ini, Anda perlu menghabiskan ratusan jam untuk persiapan, mempelajari struktur dan algoritme data yang kompleks secara menyeluruh, memecahkan masalah selama berbulan-bulan. Semua ini membutuhkan kesabaran, tekad, dan ketekunan sebanyak proses penerbitan buku.



Jalan saya melewati semua kesulitan ini. Pada 2014, Amazon melakukan wawancara kerja di kampus untuk magang musim panas. Beberapa teman mahasiswa saya pergi ke sana sebelum saya. Mereka semua kembali dengan cerita tentang pertanyaan pemrograman yang membingungkan yang telah mereka ajukan.



Saya menjalani empat ujian minggu itu dan tidur rata-rata empat jam sehari. Saya berhasil mengukir tiga jam untuk persiapan. Ada dua wawancara. Pertanyaan pemrograman yang saya dapatkan sangat mudah. Satu tentang manipulasi bit, yang lainnya tentang menggunakan daftar tertaut, dan saya juga harus berbicara tentang tabel hash. Itu saja. Saya hanya beruntung.



Magang di Amazon, jika mereka melakukannya dengan baik, dapatkan tawaran untuk pindah ke pengembang penuh waktu dari peringkat level awal pertama Mereka tidak perlu mengulang wawancara. Saya sedang melakukan magang di Seattle - dengan susah payah membuat situs Ruby on Rails dari awal. Mendapat tawaran dan mulai sebagai pengembang perangkat lunak pada tahun 2015 di Virginia.



Tentang kelangkaan pengetahuan saya



Pengembang peringkat 1 harus berpengalaman dalam struktur data tingkat lanjut: tumpukan, grafik, pohon awalan. Saya bahkan tidak tahu arti kata-kata ini. Pengembang peringkat 1 harus dapat memperkirakan kompleksitas temporal dan spasial algoritme untuk menyortir, mencari, menyisipkan, dan memisahkan. Saya tidak akan memberi tahu Anda kerumitan waktu dari penelusuran kedalaman-pertama yang dangkal dalam pohon biner.



Mengapa saya memiliki begitu banyak celah pengetahuan? Ada dua alasan.



Pertama, saya belajar teknik komputer, bukan ilmu komputer. Fokusnya adalah pada integrasi perangkat lunak dan perangkat keras daripada pengembangan sistem besar. Orientasi ini mengajari saya untuk memecahkan masalah kompleks dalam kondisi yang meragukan, tetapi program tersebut tidak menyediakan analisis rinci tentang struktur data dan algoritme sama sekali. Kedua, saya tidak melalui proses persiapan yang matang, saya tidak menghabiskan ratusan jam belajar - itulah mengapa saya tidak belajar.



Saya sendiri menyadari bahwa saya tidak mengikuti. Pada awalnya, sindrom penipu menyiksa saya dengan kekuatan yang mengerikan.



Pancake pertama



Setiap inspeksi kode adalah bencana. Saya mengirimkan potongan untuk ditinjau (dalam bentuk permintaan untuk menerima perubahan, misalnya), itu dikembalikan kepada saya dengan delapan puluh komentar. Itu tidak akan berhasil. Saya mengoreksi dan mengirimkan versi baru. Lima puluh komentar lagi. Itu tidak akan berhasil. Dan lain sebagainya.



Dengan beberapa fragmen, semuanya menjadi sangat buruk sehingga rekan kerja tidak tahu bagaimana menjelaskan esensi masalah untuk saya pahami. Mereka harus mengunduh kode dan menulis ulang. Mereka ingin membantu saya dan cukup ramah, tetapi saya benar-benar kelelahan karena malu. Saya hidup dalam ketakutan bahwa orang akan mengerti: Saya tidak pantas berada di sini. Tidak ada satu hari kerja pun yang berlalu tanpa pemikiran bahwa hari ini saya akan dipecat.



Mengekspos penipu



Sedikit demi sedikit saya menarik diri. Akhirnya, saya mulai memenuhi tenggat waktu dan secara konsisten memberikan kode ke produksi. Sekitar sembilan bulan kemudian, saya mengembangkan kepercayaan diri. Saya memutuskan sudah waktunya untuk menyingkirkan sindrom penipu untuk selamanya. Saya beralih ke masalah di LeetCode, hanya untuk membuktikan kepada diri saya sendiri bahwa saya ada di tempat saya. Saya ingat berpikir, “Saya sekarang adalah pengembang penuh di Amazon. Saya memiliki komitmen dalam produksi. Mengapa, saya tidak dapat mengatasi tugas sederhana ini? "



Saya memilih salah satu yang mudah di LeetCode - dan saya tidak bisa menyelesaikannya. Saya memilih yang lain - dan saya juga tidak bisa. Dan yang ketiga dan keempat. Kemudian menjadi jelas bagi saya bahwa saya tidak menderita sindrom apapun. Saya seorang penipu.



Jadilah, sepertinya tidak



Setelah dua setengah tahun, saya dipromosikan menjadi pengembang tingkat kedua. Pengembang peringkat kedua mampu membuat dan memelihara sistem besar sendiri dengan bantuan minimal dari luar. Jadi bagaimana saya melakukannya? Bagaimana saya berhasil menafsirkan kembali aturan permainan yang menguntungkan saya?



Yah ... tidak mungkin. Penipuan tidak digunakan di Amazon. Sistem tidak dapat diputar ulang. “Berpura-pura menjadi spesialis sampai Anda berhasil” adalah nasihat yang sangat umum dan sangat buruk. Ini tidak bekerja. Satu-satunya cara agar diri Anda ditunjuk sebagai pengembang tingkat 2 adalah menjadi pengembang tingkat 2.



Promosi adalah proses yang melelahkan. Anda perlu menjelaskan kelebihan dan pencapaian Anda di lebih dari dua puluh halaman dokumentasi, sedemikian rupa sehingga rekan dan atasan Anda percaya. Anda perlu terus mengumpulkan metrik dan bukti bahwa kemajuan Anda berada pada level yang lebih tinggi. Anda dapat mengandalkan kenaikan hanya jika Anda secara konsisten mempertahankan level level berikutnya selama enam bulan, atau bahkan setahun penuh.



Anda mungkin pernah mendengar ungkapan: "Kepribadian kami terdiri dari apa yang kami lakukan secara teratur." Di bawah ini saya akan memberi tahu Anda tindakan apa yang saya ambil untuk berhenti menjadi penipu dan menjadikan diri saya sebagai pengembang tingkat yang lebih tinggi.



Apa yang saya lakukan







Mengikuti untuk memaksimalkan penerimaan umpan balik Pendatang baru di FAANG sering kali memiliki ego yang tinggi. Ini menghilangkan kemampuan mereka untuk menerima dan mempertimbangkan kritik yang membangun dari rekan kerja. Tetapi rekan-rekan ini adalah orang-orang pintar, yang masing-masing memiliki pengalaman unik di bidang TI.



Saya tidak punya masalah dengan harga diri. Bagi saya, dengan cara yang bersahabat, tidak ada yang bisa dilakukan di perusahaan. Oleh karena itu, ketika saya diberi umpan balik, saya mendengarkan, dan mendengarkan dengan penuh pertimbangan.



Pernyataan rekan kerja benar, kontroversial, atau tidak benar. Jika pernyataan itu benar, saya mengikuti nasihat itu tanpa syarat. Jika ini tentang sesuatu yang kontroversial, pertama-tama saya mencoba memahami sudut pandang pengembang lain, dan baru kemudian - untuk menyampaikan sudut pandang saya sendiri. Dan, tiba-tiba, saya mendengarkan bahkan komentar yang salah.



Dalam hal ini, alur pemikirannya adalah: "Mengapa saya yakin saya benar? Apa yang membuat seseorang mendapatkan ide seperti itu? Dapatkah saya menjelaskan agar reaksi seperti itu tidak muncul? " Inilah yang saya sebut keterbukaan maksimum. Orang pintar, bahkan ketika mereka salah, melanjutkan dari sesuatu dalam kesimpulan mereka. Saya mengetahui dari mana asalnya dan meningkatkan kode saya dengan mengingat informasi ini. Mengajukan



pertanyaan bodoh



Pendatang baru di perusahaan FAANG sering mencoba untuk tidak mengajukan pertanyaan - mereka takut akan dianggap buruk. Unsur sindrom penipu ini secara paradoks hidup berdampingan dengan kesombongan yang meningkat. Yah, saya, sebagai penipu sejati, mengerti betul bahwa pertanyaan saya bodoh. Itu tidak mengganggu saya.



Misalnya:



« , . , ?»



« , ?»



« , . - ?»


Segera saya mendapatkan ratusan penanda, mengumpulkan banyak informasi tambahan, dan menjadi sangat sukses dalam berpartisipasi dalam pertemuan.



Menemukan Pemeriksa Kode yang Gelisah



Pada awalnya, sangatlah penting bagi sebanyak mungkin pengembang lain untuk meninjau kode Anda. Setiap karyawan yang melakukan inspeksi akan memiliki kesukaannya sendiri, cerewet, kesal. Tapi yang lebih penting adalah mencari tahu inspektur yang gelisah.



Ada satu di tim mana pun. Pekerjaannya tidak pernah puas. Itu menempel pada nama setiap variabel, setiap log, setiap parameter API yang dipilih. Saya melakukan upaya khusus untuk menemukan orang ini dan memberikan kode saya kepadanya sesering mungkin. Mengapa? Karena saya mengerti: semakin banyak komentar konstruktif yang saya terima, semakin cepat pelatihannya.



Menggunakan pola yang ada untuk menghindari kesalahan.



Junior sering mencoba menemukan kembali roda. Sebagian besar tugas pengembangan bukanlah hal baru. Sebelum mulai menulis kode yang diminta, saya mencari solusi serupa pada sumber daya internal. Saya melihat beberapa contoh berbeda, mempelajari bagaimana kode terstruktur di dalamnya. Kemudian saya beralih ke kode tim saya dan menemukan cara terbaik untuk mengikat fragmen baru ke sistem keseluruhan.



Saya melakukan pendekatan yang sama ketika menulis dokumentasi desain dan laporan post mortem. Sampel pertama, lalu tindakan.



Berfokus pada kebenaran dan kesesuaian



Saya menghindari jebakan biaya hangus. Jika saya melakukan sesuatu yang salah, tidak masalah bahwa saya telah menghabiskan empat jam untuk itu. Saya tahu bahwa saya harus mengesampingkan apa yang telah saya kembangkan dan mengulanginya dengan cara yang benar.



Untuk seratus baris kode yang dikirim untuk diperiksa, ada dua ratus lima puluh baris sampah yang saya tulis dan buang. Saya mencoba memastikan bahwa masing-masing dari seratus baris ini dapat dimengerti, ditulis dengan sengaja, dan diperlukan untuk sesuatu. Sekarang kode saya biasanya mendapat lampu hijau setelah satu atau dua revisi.



Melempar ke dalam kesulitan



Anda tidak akan pernah merasa "siap" untuk mengerjakan fungsi-fungsi utama, menyebarkan proyek ke produksi, melakukan wawancara, dan menghilangkan keadaan darurat. Cara terbaik untuk mempersiapkan semua ini adalah dengan menerimanya dan melakukannya.



Pada kesempatan pertama, saya hanya memberi tahu atasan saya: Saya siap. Bahkan jika sebelumnya saya tidak memiliki kesempatan untuk mengamati tindakan orang lain secara detail, seperti yang biasanya disarankan. Terkadang saya harus meminta bantuan atau seseorang dari rekan kerja saya untuk mengikuti pekerjaan saya. Tetapi pada akhirnya, hal itu memungkinkan saya untuk memperluas zona kenyamanan saya dan mempercepat pertumbuhan saya.



Mengambil inisiatif dalam hal-hal kecil



saya melihat peluang untuk meningkatkan keunggulan operasional tim, proses kerja, pengalaman pengembangan. Lebih dari sekali atau dua kali, saya secara sukarela melakukan tugas-tugas yang membosankan: Saya mengotomatiskan prosedur yang dilakukan secara manual, menyelesaikan dokumentasi, memperbaiki pipeline CI / CD, memperbarui kode lama.



Saya mencoba untuk menjadi profesional



Pemrograman adalah jenis kreativitas yang didasarkan pada logika. Setiap tugas, setiap fungsi baru, saya anggap sebagai lembar kosong tempat Anda dapat menunjukkan keahlian Anda dan meninggalkan kreasi.



Pengembang lapis kedua haruslah seorang insinyur perangkat lunak, atau seorang profesional, menurut Stephen Pressfield, penulis The War of Art. Saya mengerahkan semua upaya saya untuk menulis kode yang bersih (Anda pasti harus membaca buku dengan nama yang sama) dan menciptakan solusi yang indah dan elegan.



Dia dengan jelas menunjukkan keinginannya untuk meningkat



Di perusahaan FAANG tidak ada yang menawarkan kenaikan - Anda bertanya kepada mereka sendiri, dan lebih dari sekali. Jika ini tidak dilakukan, prosesnya akan berlarut-larut selama berbulan-bulan.



Dalam percakapan pribadi dengan bos, saya menjelaskan bahwa saya ingin dipromosikan. Saya meminta tanggapan untuk memahami area mana yang kendur. Saya secara obyektif mengevaluasi hasil dari pekerjaan yang sudah selesai dan menerima kritik ketika datang kepada saya. Saya mencari peluang untuk mengasah keterampilan dan menutup celah. Jika saya bisa memamerkan beberapa keterampilan, saya mencoba untuk menyimpan umpan balik secara tertulis. Lagi pula, Anda tidak dapat memprediksi kapan restrukturisasi berikutnya akan dilakukan dan bos Anda akan berubah.



Menempatkan pekerjaan untuk promosi di atas yang lain



Saya mengerti: Anda tidak dapat bekerja hanya dan secara eksklusif untuk promosi. Jika semua orang melakukan ini, suasana tim pasti akan menjadi tidak cocok untuk kehidupan. Tetapi pada saat yang sama, saya benar-benar menempatkan tugas yang saya butuhkan untuk promosi di tempat pertama.



Artinya, jika saya perlu fokus pada fungsi penting, yang tenggat waktunya ketat, saya melakukannya sejak pagi. Dengan begitu saya bisa yakin bahwa saya punya cukup waktu untuk melakukan pekerjaan dengan baik. Jika saya perlu lebih aktif melakukan inspeksi kode, maka pagi hari dihabiskan untuk itu. Jika saya perlu menghadiri wawancara lebih sering, saya memulai hari kerja saya dengan mendaftar untuk wawancara yang akan datang.



Terus mengumpulkan bukti kesuksesan saya



Seseorang tidak dapat melakukannya tanpa kemampuan untuk mempresentasikan pencapaiannya melalui kombinasi indikator kuantitatif dan kualitatif.



Sebelum mengambil tugas untuk bekerja, saya mencari metrik yang menguraikan keadaan sistem saat ini. Setelah menyelesaikan pekerjaan, saya melihat indikator baru dan melakukan perhitungan untuk memahami sejauh mana tindakan saya memengaruhi situasi. Dan akhirnya, saya memasukkan semua yang terkait dengan tugas dalam dokumentasi yang seharusnya berfungsi sebagai pembenaran untuk peningkatan: analisis menurut metode STAR, indikator kuantitatif, tautan ke hasil pemeriksaan kode, grafik, dan peninggalan pekerjaan lainnya.



Saya menyadari apa yang tergantung pada saya dan apa yang tidak



Saya jadi mengerti bahwa apapun bisa terjadi. Terkadang sebuah tim kehilangan fungsi penting. Terkadang proyek ditutup. Terkadang, karena restrukturisasi, manajemen berubah. Terkadang pipeline CI / CD sudah sempurna dan tidak ada yang perlu diperbaiki di dalamnya.



Dan pada saat yang sama, saya menyadari bahwa jika saya fokus bekerja hingga batas dan mendekati tugas secara profesional, saya akan siap menghadapi momen ketika kesempatan untuk menunjukkan diri muncul. Kesempatan muncul - dia menunjukkan dirinya sebagai seorang profesional. Ini membawa lebih banyak peluang - sekali lagi saya melakukan segalanya di level tersebut. Dll



Refleksi



Apakah "budaya Leetcode" yang telah berkembang dalam proses perekrutan merugikan bisnis?



Saya berhasil mendapatkan pijakan di Amazon, meskipun ketika saya pertama kali tiba, tugas dengan Leetcode terlalu sulit bagi saya. Kemudian, ketika saya sendiri mulai melakukan wawancara, saya tentu saja sengaja membongkar semua algoritma dan struktur data yang diperlukan agar dapat mengevaluasi tanggapan para kandidat.



Saya pikir pendekatan saat ini terbayar. Perusahaan tertarik pada orang-orang yang memiliki ketekunan dan motivasi untuk mempelajari hal-hal baru dan menggunakan informasi ini dalam hubungannya dengan keterampilan yang ada. Proses yang sudah mapan melakukan pekerjaan yang baik dalam memilih orang-orang seperti itu.



Jadi lebih mudah masuk ke developer peringkat 1 lewat magang?



Saya tidak akan mengatakan itu. Kedua wawancara ini biasanya tidak lebih mudah bagi pekerja magang daripada lima wawancara untuk karyawan penuh waktu. Saat saya mewawancarai tahun 2014, saya tidak beruntung. Jika seseorang memutuskan bahwa mereka pasti akan mendapatkan pertanyaan sederhana yang sama seperti saya, maka mereka menyabotase diri mereka sendiri.



Di perusahaan, persyaratan yang sama diberlakukan pada pekerja magang seperti untuk pengembang peringkat pertama. Setiap aspek pekerjaan diperiksa hampir di bawah mikroskop. Saya mengenal banyak programmer yang telah menyelesaikan magang mereka, tetapi mereka tidak pernah mendapat tawaran pekerjaan.



Selama lima tahun ini, saya sendiri telah melatih beberapa magang dan sekarang, melihat proses dari sisi lain, saya memahami seberapa tinggi standar yang ditetapkan untuk mereka. Sekarang, melihat ke belakang dan mengevaluasi pekerjaan magang saya, saya menyadari bahwa saya melakukannya dengan baik di musim panas itu dan sangat pantas untuk dipromosikan menjadi pengembang.



Jadi Amazon seharusnya tidak mempekerjakan Anda?



Sampai saat ini, saya cenderung menjawab dengan tegas. Tidak diragukan lagi bahwa pengetahuan pemrograman saya pada saat itu tidak memenuhi persyaratan. Namun lambat laun saya sampai pada kesimpulan bahwa dalam jangka panjang, perusahaan membuat keputusan yang tepat untuk mempekerjakan saya. Saya pasti telah membawa manfaat nyata ke Amazon.



Saya membuat AWS lebih aman, membantu program pendidikan dan penjualan. Saya telah memberikan solusi untuk sejumlah besar klien internal dan eksternal. Saya telah memberikan kursus pengantar kepada audiens dari beberapa ratus orang. Saya menjadi mentor bagi banyak pemrogram yang bercita-cita menjadi pengembang tingkat kedua. Sebelum bergabung dengan Amazon, saya adalah kapten tim sepak bola dan bola basket, yang keduanya berhasil mencapai perempat final di Virginia. Selama bertahun-tahun saya telah mengasah keterampilan saya dalam bekerja dengan orang dan memimpin orang - keterampilan ini berguna di Amazon. Ke depannya, saya berharap dapat memberikan lebih banyak lagi kepada komunitas pengembang karena saya tahu bagaimana rasanya menjadi penipu.



All Articles