Bagaimana saya mendapat pekerjaan kejuruteraan perisian setelah bertahun-tahun bekerja keras

Ramai di antara kita berpendapat jalan untuk menjadi jurutera perisian memerlukan pendidikan bertahun-tahun dan IQ yang sangat tinggi. Walaupun kejuruteraan perisian adalah salah satu profesion yang paling terang, jangan biarkan hal itu melemahkan anda daripada belajar membuat kod dan menjadi jurutera perisian.

Saya fikir sudah terlambat untuk saya beralih ke sains komputer, tetapi di mana pun anda berada, tidak pernah terlambat untuk belajar dan mengejar minat anda.

Latar belakang bukan tradisional saya

Saya tidak menghadiri universiti peringkat tinggi dan juga tidak mempunyai latar belakang teknikal. Saya tidak mempunyai minat untuk menyelesaikan teka-teki semasa kecil dan tidak bertanding dalam pertandingan matematik. Saya sebenarnya menjauhkan diri daripada menyelesaikan masalah komputer ketika saya masih kecil setelah banyak percubaan gagal untuk menjadikan wifi berfungsi.

Saya lulus dengan ijazah Pentadbiran Perniagaan dan bekerja dua pekerjaan kewangan yang tidak mencabar saya. Mereka adalah pekerjaan yang mudah dan sederhana, tetapi sangat cepat dan membosankan. Saya tidak merasa kerja yang saya laksanakan itu dipenuhi dan ditolak setiap kali saya meminta lebih banyak tugas analisis. Saya kemudian memutuskan untuk meningkatkan kemahiran saya dan mencipta peluang saya sendiri.

Sedikit lebih dari setahun yang lalu, saya mengambil SQL kerana ini adalah kemahiran yang popular dalam analisis kewangan. Setelah mengetahui sintaksnya, pengekodan tidak begitu menakutkan lagi. Ia seperti belajar bahasa baru. Sebaik sahaja anda dapat membaca dan menulis, anda dapat memahami perkara-perkara yang pernah kelihatan asing. Saya sangat menikmati belajar bahasa baru dan menjadi teknikal dalam pekerjaan saya, jadi saya tahu bahawa ini adalah sesuatu yang harus saya kejar.

Memilih jalan yang betul

Saya mempertimbangkan jalan yang berbeza untuk meneruskan kerjaya dalam pembangunan. Saya tidak mahu menghabiskan dua tahun lagi dalam kelas, dan saya tidak mahu belajar semuanya sendiri. Saya pernah mendengar kisah kejayaan orang yang menghadiri pengekodan bootcamp dan dapat beralih ke peranan kejuruteraan perisian. Setelah melakukan banyak kajian, saya memutuskan bahawa ini adalah pilihan terbaik untuk saya dan memohon kohort Hack Reactor seterusnya.

Saya perlu menjalani temu ramah teknikal agar dapat masuk ke dalam program ini, jadi saya menghabiskan semua masa saya sama ada selepas bekerja atau pada hujung minggu untuk belajar sebanyak mungkin. Sukar meluangkan masa untuk belajar sesuatu yang benar-benar baru setelah dikurangkan dari pekerjaan sepenuh masa, tetapi motivasi saya untuk mencapai tujuan saya membuat saya terus maju.

Saya mengebom wawancara pertama saya sepenuhnya, tetapi saya belajar dari kesilapan saya dan saya menempah temu ramah lain pada hari tarikh akhir. Saya memastikan kali ini saya bersedia dan berkomunikasi dengan keseluruhan proses pemikiran saya. Keesokan harinya saya menerima surat penerimaan saya dan perjalanan saya untuk menjadi jurutera perisian telah dimulakan secara rasmi.

Mengasah kerajinan anda

Kampus yang saya putuskan untuk hadir adalah di San Francisco, salah satu hab teknologi terbesar di dunia. Berada di SoCal sepanjang hidup saya, itu pasti merupakan perubahan besar dan tidak mudah untuk mengucapkan selamat tinggal. Saya mengemas semua barang saya dan berpindah ke apartmen bersama di SF.

Selama beberapa hari pertama mengikuti program ini, saya dapat mengenali rakan sekelas saya. Sebilangan besar dari mereka berasal dari universiti yang sangat dihormati dan mempunyai ijazah STEM. Sebilangan besar dari mereka memiliki pengetahuan sebelumnya tentang bahasa skrip lain dan pengalaman dengan Pengaturcaraan Berorientasikan Objek. Saya tahu saya perlu banyak mengejar sekiranya saya tidak mahu ketinggalan.

Mereka menyebutnya sebagai bootcamp pengekodan dengan alasan. Kelas dijadualkan dari jam 9 pagi - 8 malam, enam hari seminggu, tetapi saya biasanya tinggal sehingga 10 malam atau tengah malam. Saya cukup hidup, bernafas, dan tidur lena.

Beberapa minggu pertama saya benar-benar berjuang. Saya akan mengumpulkan seberapa banyak maklumat yang saya dapat sambil memastikan saya masih menyimpan maklumat hari-hari sebelumnya, dan mengulangi proses ini lagi pada keesokan harinya. Ada saat-saat di mana saya meragui diri sendiri dan tidak menyangka saya mempunyai apa yang diperlukan untuk menjadi pengaturcara. Saya banyak berkorban untuk berada di sana dan rakan-rakan dan keluarga saya bergantung pada saya untuk berjaya. Saya tahu ini satu-satunya tembakan saya, jadi saya bertahan dan mengharungi ribut.

Hari dan minggu mula berlalu dan saya perlahan-lahan mula memasuki arus. Saya mula belajar "bagaimana belajar" dan bergantung pada kemahiran saya sendiri untuk mengetahui masalah yang saya hadapi. Google adalah rakan baik pemaju dan kemungkinan orang lain mengalami kesalahan yang sama dengan yang anda alami.

Saya mengusahakan sprint setiap dua hari yang merangkumi asas-asas JavaScript, kerangka depan, pelayan, pangkalan data, penggunaan dan banyak lagi. Saya hanya bergerak dengan gerakan untuk beberapa minggu pertama, tetapi ketika akhirnya saya membuat keseluruhan aplikasi tumpukan penuh, di situlah semuanya diklik. Saya akhirnya memahami tujuan teknologi tertentu yang saya gunakan dan semuanya masuk akal.

Mari membina sesuatu

Setelah yayasan ditetapkan, kurikulum program saya beralih ke projek pembinaan. Saya akan mengerjakan projek batu penjuru dengan pasukan yang akan menekankan sama ada frontend atau backend. Mereka mengatakan bahawa anda mengeluarkan apa yang anda masukkan, jadi saya memastikan untuk menunjukkan karya terbaik saya dalam projek-projek ini. Bukan hanya perlu berfungsi, tetapi kodnya harus bersih dan mudah dibaca sekiranya majikan berpotensi meninjau git repositori saya.

Projek batu permata yang terakhir disebut MVP, juga dikenali sebagai Produk Minimum yang Bervariasi. Pada dasarnya kami mempunyai masa 72 jam untuk membuat apa sahaja yang kami mahukan selagi ia adalah aplikasi tumpukan penuh. Masa yang terhad adalah satu cabaran dan saya harus memastikan saya dapat menguruskan masa dengan cekap. Saya tidak boleh terlalu bercita-cita tinggi dengan projek saya, tetapi saya juga mahu ia menjadi sesuatu yang boleh saya banggakan.

Idea pertama saya adalah untuk membina aplikasi terdesentralisasi yang akan menggunakan blockchain Ethereum. Kedengarannya mengagumkan bagi majikan, tetapi saya tidak biasa dengan bahasa Solidity dan tidak pasti sama ada saya dapat menyelesaikan keseluruhan dapp tepat pada waktunya. Idea lain yang akan saya lawak ialah aplikasi penarafan boba untuk semua kedai boba berdekatan yang akan dikunjungi rakan sekelas saya.

Ketika tiba masanya untuk membuat keputusan, saya teringat bahawa saya memilih pengekodan kerana ia menyeronokkan bagi saya. Saya rasa saya akan memasukkan 110% ke dalam sesuatu yang akan saya nikmati, dan bukannya sesuatu yang selalu saya tekankan. Saya akhirnya memilih aplikasi penarafan boba dan suka setiap saat.

Sebaik sahaja saya menurunkan fungsi asas, saya akan terus menerapkan ciri tambahan kepadanya. Ia akhirnya menjadi projek semangat dan akan selalu menjadi projek yang tidak dapat dilupakan yang saya banggakan. Jangan buat sesuatu kerana mungkin kelihatan menarik bagi orang lain, lakukan kerana anda benar-benar menikmatinya.

Menjelang akhir minggu ke-13, keseluruhan pemikiran saya berubah daripada ketika saya memulakan program saya. Saya berasa lebih yakin sebagai pemaju dan bangga dengan semua yang saya capai. Saya belajar banyak teknologi baru yang memerlukan saya bertahun-tahun untuk belajar sendiri. Saya menjadi lebih autonomi dan bergantung pada kemahiran saya sendiri untuk menyelesaikan masalah. Saya akhirnya bersedia untuk memasuki pencarian pekerjaan saya dan tidak sabar untuk memulakannya.

The Grind

Sebelum program saya berakhir, saya tahu bahawa saya harus terus berlari. Saya telah bersiap selama berbulan-bulan dan sekarang ini adalah peluang saya untuk menunjukkan apa yang saya ada kepada majikan. Saya tahu keseluruhan MVC dan bagaimana membina timbunan penuh, tetapi apabila saya mengadakan temu ramah, saya akan merasa gementar dan kosong. Pada ketika itu, ia akan menjadi putaran ke bawah dan seluruh proses pemikiran saya akan tergelincir. Bagaimana saya akan menjalani wawancara teknikal yang sebenarnya ketika saya tidak dapat menangani yang palsu?

Saya dua kali ganda mengkaji struktur data dan algoritma sambil mengisar soalan Leetcode. Saya harus memastikan bahawa saya tidak menghafal masalah tertentu, tetapi memahami proses penyelesaian masalah untuk mengatasi sebarang persoalan. Setelah saya dapat mencari penyelesaian asas untuk masalah (juga dikenali sebagai brute force), saya tahu penemuduga akan mencari jalan keluar yang optimum. Mereka ingin tahu sama ada anda boleh menggunakan algoritma anda dengan cekap berkaitan dengan masa dan ruang.

Setelah saya membina asas penyelesaian masalah yang lebih baik, sudah tiba masanya saya menghadapi ketakutan saya untuk menemu ramah. Saya mendengar konsep terapi kejutan, yang pada asasnya menghadapi ketakutan anda secara langsung. Sama seperti bagaimana Batman mengatasi rasa takutnya kelelawar dengan mengelilingi dirinya di sebuah gua yang penuh dengan mereka, saya harus berlatih untuk lebih banyak menemu ramah.

Saya menggunakan laman web bernama Pramp yang akan menghubungkan anda dengan orang lain dan anda bergiliran menemu ramah satu sama lain. Saya mengumpulkan keberanian dan menjadualkan wawancara pertama saya. Saya akan membincangkan proses pemikiran saya dan penyelesaiannya secara semula jadi datang kepada saya. Saya perlahan-lahan dapat merasakan kegelisahan saya semakin pudar dan saya mula menikmati temu ramah.

Pada akhir temu ramah tiruan, saya meminta maklum balas dan mengetahui apa yang boleh saya perbaiki. Setelah semuanya selesai, saya berasa hebat! Menemubual tidak begitu menakutkan dan anda benar-benar dapat memanfaatkan prosesnya. Saya kemudian berlatih setiap hari supaya saya bersedia untuk temu duga sebenar.

"Kejayaan tidak muktamad, kegagalan tidak membawa maut: keberanian untuk meneruskannya." - Winston churchill

Semua permainan nombor

Semasa saya bersiap untuk wawancara, saya juga mulai melamar pekerjaan kerana proses permohonan akan memakan waktu, terutama untuk perusahaan besar yang dapat memakan waktu berminggu-minggu atau berbulan-bulan.

Saya perhatikan bahawa adalah kebiasaan bagi pemaju baru untuk hanya memfokuskan diri pada persiapan sebelum mengajukan permohonan, tetapi itu boleh menjadi kesalahan yang mahal. Selalu ada sesuatu untuk dikaji berkaitan dengan kejuruteraan perisian sehingga anda tidak dapat mempersiapkan semuanya. Saya telah ditanya mengenai semua jenis topik seperti struktur data dan algoritma, reka bentuk sistem, reka bentuk frontend, pengujian, dan pengetahuan domain. Pada masa anda mempelajari "semuanya", mungkin diperlukan beberapa bulan untuk mendapatkan wawancara pertama anda.

Salah satu strategi adalah menemu ramah dengan syarikat yang anda tahu bukan pilihan pertama anda. Dengan cara ini anda akan lebih bersedia dan tahu apa yang harus dilakukan dengan betul apabila anda berpeluang untuk menemuramah syarikat impian anda.

Saya tahu menghadiri Bootcamp tidak akan menjamin pekerjaan saya. Saya bersaing dengan mereka yang mempunyai ijazah Sains Komputer dan pengalaman industri sebelumnya. Sebagai pemohon tanpa ijazah teknikal atau pengalaman kerja yang relevan, saya akan mencari pekerjaan dengan kekurangan.

Saya menggunakan peranan jurutera atau pemaju yang saya temui dan menghubungi mana-mana hubungan di syarikat berpotensi yang ingin saya kerjakan. Saya menghantar lebih daripada 300 aplikasi sejuk dan menerima kadar respons yang sangat rendah. Saya disaring dan menerima e-mel penolakan automatik yang tidak terkira banyaknya.

Apa yang saya dapati sebagai kaedah paling berkesan untuk berhubung dengan perekrut adalah melalui rujukan. Rujukan masuk akal dari sudut pandangan majikan. Mengapa mempercayai orang asing yang belum anda temui ketika calon anda dijamin oleh pekerja semasa yang boleh anda percayai? Satu perkara yang boleh dilakukan oleh sesiapa sahaja ialah mengembangkan rangkaian mereka dengan mengadakan perjumpaan dan acara. LinkedIn adalah alat yang baik untuk mencari hubungan bersama di syarikat; memanfaatkannya dengan sepenuhnya.

Akan ada banyak halangan dalam pencarian pekerjaan pertama anda. Saya telah membunuhnya berkali-kali di skrin teknikal dan mendapat maklum balas hebat dari penemuduga, hanya untuk mendapatkan e-mel penolakan dari perekrut di kemudian hari. Anda hanya perlu gigih, belajar dari wawancara lalu, dan teruskan. Sekiranya anda terus melakukan semuanya dengan betul, anda pasti akan menemui peluang yang tepat dan memberikan tawaran.

Kerja keras yang jujur ​​membuahkan hasil

Menjelang akhir pencarian pekerjaan selama tiga bulan, saya dijemput untuk lima temu duga di lokasi dan menerima tiga tawaran. Setelah banyak berfikir, saya dengan senang hati mengumumkan bahawa saya akan bergabung dengan Zume Inc. di San Francisco Bay Area. Saya suka misi dan semua orang yang saya temui. Semua kerja keras dan malam yang panjang saya akhirnya terbayar dan saya tidak dapat merasa lebih bahagia di mana saya berada dalam hidup saya sekarang. Saya sangat berterima kasih kepada semua orang yang telah menyokong saya dalam perjalanan ini. Saya tahu saya akan dicabar setiap hari dan memberi kesan yang lebih besar kepada pekerjaan saya.

Apa yang saya gemari mengenai kejuruteraan perisian adalah bahawa tidak kira latar belakang anda. Sesiapa sahaja boleh belajar bagaimana mengekod dan mengasah kemahiran mereka. Sekiranya anda datang dari jalan bukan tradisional seperti saya, ia mungkin memerlukan lebih banyak kerja daripada yang lain, tetapi semuanya akan membuahkan hasil. Kehidupan terlalu pendek untuk menetap lebih sedikit, jadi lakukan sesuatu yang anda sukai.

Mengucapkan semoga berjaya dalam usaha anda - Andrew

Jangan ragu untuk berhubung dan ikuti saya di LinkedIn kerana saya membantu memberi inspirasi kepada mereka yang ingin memasuki industri teknologi: www.linkedin.com/in/andrew-ngo/