Dari seorang penerjemah: Valery Aleksiev, seorang programmer berpengalaman,
berbicara tentang apa yang terbaik dilakukan oleh seorang pengembang perangkat lunak pada awal karirnya. Secara khusus, alat apa yang layak digunakan dan apa yang harus dicari dalam wawancara.
Beberapa tahun pertama karier saya adalah tahun pelatihan intensif. Saya menemukan kenyataan pahit dan menyadari bahwa saya perlu mendapatkan banyak keterampilan berbeda yang belum pernah saya pikirkan sebelumnya. Karena itu, saya memutuskan untuk menulis panduan kecil untuk pengembang lain. Artikel ini mengungkapkan topik-topik seperti wawancara, bekerja sebagai programmer, sumber daya yang akan membantu meningkatkan.
Wawancara kerja
Setelah memulai karier sebagai programmer, Anda akan segera menyadari bahwa wawancara itu payah. Mereka bisa mengerikan bagi semua pihak yang terlibat. Mereka hanyalah pembunuh waktu, faktor penghasil stres dan hambatan pertama menuju karier yang sukses. Tetapi Anda harus berurusan dengan mereka, jadi lebih baik untuk mengetahui apa yang harus dipersiapkan.
Persiapan pertempuranPertanyaan dan tugas bisa sangat berbeda, sebagai contoh saya akan mengutip tugas FizzBuzz yang populer.
Tulis program yang menampilkan angka dari 1 hingga 100. Tetapi untuk angka kelipatan tiga, Anda perlu menampilkan Fizz alih-alih angka itu sendiri, dan untuk kelipatan angka lima, Buzz. Untuk angka yang merupakan kelipatan dari tiga dan lima, tampilkan kata FizzBuzz.
Segalanya tampak sesederhana dan sejelas hari, bukan? Bahkan, sebagian besar programmer pemula gagal dalam wawancara kerja. Saya bahkan pernah melihat kasus di mana pelamar untuk posisi senior tidak menyelesaikan tugas, dan terlebih lagi, mereka memiliki akses ke jaringan. Saran saya adalah menyelesaikan tugas ini sebelum wawancara dalam bahasa pemrograman yang paling sering Anda gunakan. Kalau tidak, wawancara akan membuang-buang waktu untuk semua pesertanya.
Tentu saja, Anda membutuhkan lebih banyak pengetahuan. Khususnya:
- Struktur dan algoritma data dasar: daftar tertaut, array, pohon, dan penyortiran.
- Informasi umum tentang bahasa "Anda", termasuk string immutability, manajemen memori, dan banyak lagi.
- Konsep pemrograman berorientasi objek seperti kelas vs objek dan pewarisan.
Semua ini harus benar-benar dipoles menjadi bersinar jika Anda ingin menunjukkan diri Anda dari sisi terbaik. Saya dapat menyarankan sumber daya yang akan membantu mempersiapkan wawancara:
- "Cracking the Coding Wawancara ", hanya sebuah buku fantastis yang berisi informasi tentang sejumlah besar masalah pemrograman dan solusinya;
- CodeWars , sebuah situs dengan tugas pemrograman yang tidak biasa yang dapat Anda pecahkan tepat di browser Anda menggunakan berbagai bahasa.
Skillbox merekomendasikan: Kursus praktis "Pengembang Web Profesi" .
Kami mengingatkan Anda: untuk semua pembaca "Habr" - diskon 10.000 rubel saat mendaftar untuk kursus Skillbox apa pun menggunakan kode promo "Habr".
Dan sedikit lagi
Ada beberapa poin yang akan membantu Anda mendapatkan pengetahuan dan pengalaman tambahan.
Pertama, belajar untuk menyatakan pikiran Anda dengan jelas, serta menggambarkan pengetahuan dan kemampuan Anda. Pelajari cara membuat resume yang baik dan melipat. Ini mungkin terdengar konyol, tetapi banyak pencari kerja tidak tahu bagaimana melakukan ini, mereka tidak dapat menjelaskan apa yang mereka lakukan dalam pertemuan pribadi, atau menulis resume yang kompeten.
Kedua, memposting contoh kode Anda di GitHub atau repositori terbuka lainnya. Sampel kode tidak boleh terlalu rumit, tetapi kode harus dibuat bersih dan rasional. Ini adalah kesempatan Anda untuk menunjukkan beberapa keterampilan Anda sebelum wawancara.
Cobalah berpartisipasi dalam proyek sumber terbuka. Ini akan menunjukkan pengalaman Anda dan mengajarkan Anda untuk bekerja dalam tim.
Wawancarai pewawancara AndaYa, wawancara seharusnya tidak hanya bertanya pada Anda. Anda dapat dan harus tertarik dengan berbagai nuansa pekerjaan dan perusahaan masa depan Anda. Dengarkan baik-baik jawabannya. Mereka bisa sangat penting, berisi informasi eksplisit dan tidak terlalu tentang apa perusahaan baru itu, tim dan kerjanya.
Berikut adalah contoh pertanyaan untuk diajukan.
Apa yang akan menjadi hari kerja standar saya?Ini adalah masalah penting, karena tugas pengembang perangkat lunak di perusahaan yang berbeda dapat sangat berbeda. Jika jawabannya tidak terlalu percaya diri atau tidak jelas, Anda dapat menganggap ini sebagai peringatan, indikator bahwa ada sesuatu yang salah di sini. Orang yang mempekerjakan Anda harus memiliki pemahaman yang jelas tentang mengapa Anda adalah perusahaan.
Bagaimana Anda menguji perangkat lunak Anda?Idealnya, pengujian harus cukup beragam. Jika jawabannya adalah seperti "Kami hanya menulis semuanya sekaligus tanpa bug, haha," Anda harus memahami ini sedemikian rupa sehingga ada kesalahan, tetapi tidak ada yang mau atau tidak bisa memperbaikinya.
Sistem kontrol versi apa yang Anda gunakan?Sebuah pertanyaan penting karena perlu untuk kerja tim. Jika jawabannya adalah: "Apa, sistem kontrol versi?" - kemudian lari dari wawancara semacam itu dengan cepat dan jauh.

Jika teman bicara Anda mulai berbicara tentang sistem kustom, maka tidak ada yang baik akan menunggu Anda di perusahaan ini juga, karena infrastruktur di sini jelas tidak diperbarui untuk waktu yang lama.
Apakah Anda melakukan tinjauan kode?Sebenarnya, tinjauan kode merupakan langkah penting dalam kerja tim karena memungkinkan Anda mengidentifikasi banyak kesalahan. Jika Anda dijawab negatif, itu berarti kerja tim tidak disampaikan dengan baik. Tentu saja, mungkin ada pengecualian, tetapi dalam kebanyakan kasus itu. Jika Anda diberi tahu sesuatu seperti "Kami saling mempercayai," maka itu layak dipertimbangkan. Kemungkinan besar, tidak ada yang memverifikasi apa pun di perusahaan ini.
Program pendidikan apa yang dapat Anda tawarkan? Seorang programmer harus terus berkembang, sehingga sebagian besar perusahaan menawarkan kesempatan untuk belajar. Jika ini bukan masalahnya, maka uang adalah masalah, atau pengembang sering berubah.
Proses pengembangan perangkat lunak apa yang Anda gunakan?Di perusahaan mana pun di mana lebih dari dua orang bekerja, harus ada semacam algoritme untuk keseluruhan kerja tim, proses yang disederhanakan. Jika tidak ada yang seperti ini, pekerjaan di perusahaan ini akan seperti mengendarai sepeda yang terbakar, dan semua yang ada di sekitarnya terbakar, semua orang terbakar.
Bagaimana Anda memecahkan masalah utang teknis?Utang teknis, atau utang coding, adalah istilah yang mengidentifikasi bug yang berumur panjang dalam arsitektur kode atau aplikasi. Masalah menumpuk dan pada akhirnya menjadi hambatan yang sangat serius untuk melanjutkan pekerjaan pada proyek.
Jika Anda dijawab bahwa tidak ada solusi, dan perusahaan βberfokus pada fitur-fitur baru,β maka kemungkinan besar masalahnya telah berkembang sedemikian rupa sehingga tidak dapat diselesaikan, atau kekacauan akan dimulai dalam waktu dekat.
Apa yang bisa Anda ceritakan tentang budaya perusahaan?Perusahaan yang berbeda memiliki suasana dan budaya yang sangat berbeda. Tetapi perlu diingat bahwa Anda harus berada di dalam tim 40+ jam seminggu selama beberapa tahun, jadi dengarkan apa yang Anda katakan.
Bekerja sebagai programmer
Oke, Anda melewati semua tahap wawancara dan mendapat pekerjaan. Selamat!

Apa sekarang? Anda perlu menyadari banyak hal yang menarik dan tidak begitu. Karena kita adalah programmer, mari kita membahas kode.
Kode yang baikItu harus memenuhi kriteria berikut:
- Agar dapat dibaca, karena kode dianalisis lebih sering daripada yang tertulis. Jadi kode Anda harus dapat dibaca dan dimengerti oleh Anda dan kolega Anda.
- Andal. Anda harus yakin bahwa semua kelas dan metode digunakan dengan benar dan tidak akan menyebabkan program macet.
- Dioptimalkan. Anda seharusnya tidak menjadi perfeksionis, tetapi Anda masih perlu meninjau kode Anda secara teratur. Anda harus selalu siap untuk melakukan sedikit optimasi kode.
Berikut beberapa hal lagi yang perlu dipelajari.
Anda tidak akan banyak pemrograman.
Ya, ini mungkin tampak aneh, tetapi memang Anda akan menghabiskan lebih banyak waktu di:
- debugging
- membaca kode;
- rapat dan menulis email / jawaban;
- perencanaan.
Dan mari kita bicara tentang keterampilan yang penting untuk karier seorang programmer.
Debugging dan membaca kode
- Untuk menjadi pro dalam debugging, Anda perlu memutuskan alat yang tepat. Sebagian besar bahasa pemrograman populer memiliki alat yang diperlukan untuk debugging. Kenali mereka, pelajari cara menggunakannya - ini akan menghemat banyak waktu Anda.
- Memahami fondasi, struktur basis kode. Anda dapat mempelajari kode dengan alat-alat seperti ReSharper, grep, atau Sourcegraph.
- Pelajari manualnya. Anda akan terkejut jika mengetahui betapa sedikit pengembang yang mempelajari dokumentasi teknis. Akibatnya, banyak yang tidak tahu bagaimana seharusnya perangkat lunak bekerja, yang berarti lebih banyak waktu dihabiskan untuk debugging. Cukup baca dokumentasi - ini akan menghemat waktu Anda.
Organisasi dan PerencanaanKarena Anda harus banyak berkomunikasi dengan kolega, merencanakan dan melaksanakan tugas (dan beberapa di saat bersamaan), Anda harus dapat mengatur waktu Anda. Ini akan membantu Anda:
- TODO / Tugas. Perusahaan Anda kemungkinan besar memiliki sistem untuk mempertahankan tugas dan memantau pelaksanaannya, tetapi tidak ada salahnya untuk memulai sistem Anda sendiri. Gunakan Trello, Todoist atau yang lainnya.
- Catatan. Dalam prosesnya, Anda sering perlu mengingat berbagai hal kecil yang diperlukan. Yang terbaik untuk merekamnya - misalnya, menggunakan Evernote, OneNote dan alat lainnya.
- Grafik dan visualisasi. Yang terbaik untuk mengevaluasi kinerja Anda dengan alat-alat seperti Lucidchart, Visio, dan lainnya.
Kapan harus menggunakan perpustakaan?Hampir selalu. Tidak perlu menemukan kembali roda lagi dan lagi. Dalam kebanyakan kasus, bekerja tanpa perpustakaan menyebabkan hilangnya waktu. Tentu saja, ini tidak berarti bahwa Anda harus tetap tidak tahu tentang cara menggunakan algoritma atau apa struktur basis data, karena Anda perlu memahami bagaimana dan di mana harus menggunakan semua ini.
Perpustakaan standar bahasa paling populer sangat efisien. Tinjau dokumentasi untuk lebih memahami cara menggunakannya.
Anda seharusnya tidak takut untuk bekerja dengan perpustakaan tambahan jika mereka membantu menghemat waktu. Itu bisa:
- Pustaka sumber terbuka tempat Anda dapat mengevaluasi kualitas kode.
- Perpustakaan berlisensi di bawah MIT dan BSD, Anda dapat menggunakannya tanpa masalah. Hati-hati dengan GPL.
- Mereka yang sudah digunakan untuk waktu yang lama dan memiliki berbagai kemampuan.
- Didukung - yang secara rutin menerima pembaruan.
- Digunakan oleh perusahaan / proyek lain, yang dapat menunjukkan keandalannya.
Terus tingkatkanIni mungkin terdengar klise, tetapi Anda perlu belajar bahkan selama bekerja, serta di waktu luang Anda - setiap hari. Ini dibantu oleh kursus online, buku, blog, serta pendidikan kedua (ketiga). Perlu juga memperhatikan konferensi dan berbagai jenis lokakarya. Di antara konferensi paling terkenal saya akan memilih GOTO (arah umum), Strange Loop (juga umum), PyCon (Python), CPPCon (C ++), DEF CON (keamanan), Fluent (webdev).