Pengalaman dan kesimpulan pribadi setelah berganti profesi dari perancang menjadi programmer

Tentang apa artikel ini


Sebenarnya, artikel ini adalah tentang bagaimana cara berpikir saya seharusnya berubah dengan perubahan profesi, pemahaman konteks dan momen apa yang harus diperhatikan, serta seberapa kuat pilihan "apa yang harus saya ajarkan" mempengaruhi tahun-tahun berikutnya dalam pengembangan karier pribadi saya.


Saya harus segera mengatakan bahwa saya tidak akan dan tidak menganggapnya bermakna untuk memulai, seperti dalam kebanyakan artikel, bahasa mana yang dipilih. Itu tidak masuk akal. Tidak, Anda tidak memilih bahasa pemrograman. Bahkan, Anda memilih masa depan Anda, tidak lebih, tidak kurang. Pilihan masa depan Anda akan didasarkan pada aplikasi dan platform Anda.


Sedikit untuk diriku sendiri


Saya menjadi seorang programmer pada awal 2016 pada usia 35, ini adalah jika Anda melihat sejarah aktivitas di profil GitHub saya dan menerima pekerjaan serius pertama. Usia yang lumayan untuk pergantian profesi. Ya, ini bukan momen yang tidak penting - saya meninggalkan desain. Ini sebenarnya perubahan yang sangat radikal, dan bukan hanya karena untuk pertama kalinya Anda berurusan dengan profesi yang agak bersifat kemanusiaan, dengan gambar, desain, komposisi, bahkan kegunaan dalam kasus saya, dan kemudian tiba-tiba Anda beralih ke kode, teknologi, kompilasi, basis data dan sebagainya. Ini pada dasarnya hanya puncak gunung es, terlihat dari luar. Saya akan berbicara tentang kesimpulan pribadi yang lebih dalam sedikit lebih jauh dalam teks.


Bagaimana ini terjadi dan mengapa? Ada dua alasan - saya tidak mengelola desain saat ini, depresi adalah dua. Untuk menjadi desainer yang sukses sebanyak yang saya inginkan, saya membutuhkan efek WOW, dan bukan hanya UX logis, komposisi ringkas, skenario operasi untuk menggunakan produk, dan beberapa keterampilan manajer produk, lagi. Kami membutuhkan gambar yang keren dan menarik. Bagi mereka, saya tidak memiliki cukup kepemilikan komposisi warna, dan entah karena depresi atau karena alasan lain saya tidak bisa menguasainya. Dan kemudian ... pertama, menonton film Ex Machina sesuatu membuatku berbalik dan aku mengikuti kursus Machine Learning dari Andrew Ng. Aku benar-benar menyukainya, hanya liar, meskipun malam tanpa tidur dan mata merah di pagi hari.


Kemudian saya membuat keputusan yang paling sepele dan paling sederhana menurut saya - saya membuat pilihan yang tak terhindarkan untuk volume dan kualitas pengetahuan industri TI modern dan kemampuan saya yang saya miliki saat itu. Saya memutuskan untuk secara bertahap beralih dari pemrograman front-end ke front-end aplikasi berbasis browser dalam JavaScript. Dan dari sini kita dapat mengatakan jalan sebenarnya trial and error, berjalan menyapu dan serangkaian penemuan luar biasa yang tak terhitung dimulai.


Sekarang saya telah sampai pada titik di mana saya sudah dapat dengan tertib mengekspresikan pemikiran saya tentang transisi ini, lubang dan garu apa yang harus diharapkan dalam perjalanan. Saya berharap bahwa seseorang yang menghadapi pilihan yang sama seperti yang saya lakukan beberapa tahun yang lalu akan bermanfaat. Jadi silakan!


Tentang garu dan kesalahan pemula


Ketika saya mengubah profesi saya, saya tidak tahu beberapa hal dan membuat beberapa kesalahan yang harus saya bayar dengan gugup, malam tanpa uang dan uang.
Pertama, seperti yang saya pikirkan, ada skala tertentu di mana Anda dapat mendefinisikan seorang programmer dan mungkin seseorang juga. Semuanya menarik baginya di satu ujung, ia ingin membantu tujuan bersama, di ujung lain ia akan berkonsentrasi penuh pada satu hal, ia akan menggali satu parit selama bertahun-tahun, puluhan tahun, dan ia baik-baik saja dengan itu (mungkin). Baik di sana maupun di sana ada kelebihan, kekurangan, dan perangkap yang perlu Anda ketahui. Saya sendiri termasuk tipe pertama, "Macan gila", jadi saya bisa berbicara lebih banyak tentangnya. Tapi yang paling penting adalah memahami tipe apa yang Anda miliki sedini mungkin.
Jika Anda suka menggali satu hal, maka kemungkinan besar Anda tidak akan kesulitan mencari pekerjaan di pasar tenaga kerja terbuka - spesialis sempit mendapatkan pengalaman mendalam yang lebih cepat di bidang mereka pada saat yang sama, majikan lebih mudah membawa Anda karena ia bahkan tahu bahwa Anda memakan seekor anjing pada satu hal yang sangat penting baginya - misalnya, mengoptimalkan animasi tombol di peramban di situs. Tapi tidak sesederhana itu. Saat merekrut, tentu saja, Anda akan sangat bahagia, tetapi kesulitan mungkin timbul selama bekerja, karena kolega kemungkinan besar akan mengharapkan keterlibatan dalam produk secara keseluruhan dan seluruh tumpukan teknologinya. Kesediaan untuk membantu, termasuk melampaui lingkup tugas langsung mereka - untuk bekerja tanpa tugas teknis tertentu, untuk menyerbu dengan toko kelontong, berbicara dengan pendukung dalam bahasanya, dll. Dan di sini mungkin akan sampai satu tempat. Kemungkinan besar Anda tidak akan dibesarkan, dan Anda sendiri tidak akan mau. Seperti yang saya pahami, mereka yang duduk di ujung skala ini berganti pekerjaan sekali atau dua tahun sekali untuk membuat indeks upah. Karena ini pada dasarnya satu-satunya cara jika Anda bekerja di kantor. Cara kedua adalah freelance dengan akses ke pasar yang lebih maju, meskipun pada akhirnya, jika Anda benar-benar membutuhkan banyak uang, Anda masih harus memperluas gudang keterampilan Anda.


Jika Anda lebih senang membantu rekan kerja, bersiap-siaplah. Setelah Anda memiliki cukup (untuk perekrutan pertama) untuk mempelajari satu hal, maka dengan apa yang Anda putuskan untuk memasuki pasar untuk pertama kalinya, Anda akan diganggu dari tumpukan ke tumpukan dari satu teknologi ke teknologi lainnya. Anda dapat menemukan diri Anda dalam peran devops, manajer proyek, perancang produk (bukan orang yang menggambar), arsitek dan iblis tahu siapa lagi. Anda akan mendapatkan pengalaman yang sangat beragam dan Anda akan memiliki sesuatu untuk diceritakan. Dan jika Anda masuk ke tim serbaguna yang baik dengan produk menarik yang hebat - maka pertahankan saya tujuh. Masalahnya adalah bahwa proyek berakhir, perusahaan bangkrut, bos membodohi diri mereka sendiri, dan di sini Anda tanpa pekerjaan, Anda memiliki pasar tenaga kerja terbuka dan Anda tidak membutuhkannya, ia membutuhkan spesialis sempit yang dapat diandalkan. Semua pintu akan ditutup. Yah, karena bahkan jika Anda menjalani semua wawancara teknis dalam satu spesialisasi, mereka akan memberi tahu Anda bahwa Anda telah memoles tombol hanya enam bulan dalam beberapa tahun terakhir, dan mereka memerlukan pemoles tombol. Dan kemudian ternyata Anda harus pergi ke pengembang utama atau lebih tinggi, tetapi mengecewakan - mereka biasanya tidak mengambilnya dari jalan. Satu-satunya cara saya tahu adalah membangun merek pribadi. Tidak masalah jika Anda bekerja di kantor atau jauh di bawah kontrak - melakukan sesuatu. Referensi tidak akan membantu Anda. Saya tahu sejauh ini tentang dua opsi - menghadiri konferensi industri, menghadirkan chic secara umum, dan menulis blog pribadi. Apa pun, setidaknya omong kosong, tetapi untuk mulai melakukannya di tahun pertama sejak Anda dipekerjakan untuk pertama kalinya. Ini penting.


Di sini, ya, ada kontradiksi dengan pasar tenaga kerja - mereka ingin melihat satu hal dalam perekrutan, tetapi kemudian mereka ingin bekerja dalam tim dengan yang lain.


Tentang teknologi dan "bahasa apa yang harus saya pilih?"


Di sini kita memiliki skala gradasi lagi. Bahkan skala, ruang multi-dimensi. Ada teknologi modern yang sering dibicarakan di konferensi, mereka banyak menulis di blog dan jejaring sosial. Ada teknologi yang tidak memiliki pesaing, seperti JavaScript dan variasinya di browser web. Ada dinosaurus tua di mana banyak hal ditulis dan ini harus didukung. Dan di antara titik-titik ini ada persimpangan berbeda dalam bentuk kasus tertentu.


Ketika Anda memilih, Anda harus memutuskan, dan semakin cepat semakin baik - untuk menyadari bahwa tumpukan yang Anda pilih membatasi Anda tidak terlalu baik. Putuskan apa yang Anda inginkan - keandalan, uang, dan basis pengetahuan yang baik, atau saya bahkan tidak tahu hal lain. Jika yang pertama - menurut saya lebih baik memilih dari dinosaurus yang masih hidup dan berkembang dengan baik. Karena saya sendiri semua tentang web, saya dapat mengatakan ada dua teknologi yang dapat diandalkan. C # dan Java. Pengembang PHP mungkin marah, tetapi saya sarankan meninggalkan pertanyaan ini sesuai selera dan warna, sehingga untuk berbicara ... Keunikannya adalah bahwa proyek dapat hidup dan berkembang untuk waktu yang lama tanpa kesulitan tambahan hanya ketika mereka ditulis dalam bahasa dewasa dengan alat yang cukup untuk menyusun kode. Kali ini Pilihan kedua adalah kerangka kerja spesifik. Net atau Spring atau sesuatu yang lain adalah mungkin. Di sini kriterianya adalah ini - ini harus sering ditemukan, digunakan dalam perusahaan besar dan proyek berumur panjang, dan idealnya, itu harus nyaman untuk dikerjakan. Sebagai contoh, Spring Boot sekarang memungkinkan Anda untuk dengan cepat membuat prototipe layanan, serta menulis hal-hal serius dengan arsitektur yang sangat canggih dan banyak fungsi yang dibutuhkan oleh bisnis, dan menyebarkannya keluar dari kotak.


Sebaliknya, segala sesuatu yang β€œmodis” - sebagai aturan, masih sangat muda, memiliki infrastruktur yang lemah atau naif, tetapi komunitas penggemar dengan mata menyala siap untuk menjual apa pun kepada Anda hanya karena kebaikan. Masalah dengan semua teknologi baru atau yang tidak banyak digunakan adalah bahwa mereka tidak memiliki cukup alat siap pakai - Anda kemungkinan besar harus menulis sendiri banyak fungsi sepele, misalnya, otorisasi melalui jejaring sosial. Ini sebenarnya mengerikan. Sebuah bisnis jarang ingin membayar uang untuk sepeda. Dan kemudian Anda masih harus mempertahankan kode ini. Contohnya? Untuk Python, tidak ada satu kerangka kerja web lengkap (kecuali untuk Django, dengan beberapa pemesanan) yang dapat digunakan untuk hidup dan tidak menjadi gila mengerjakan proyek selama lebih dari satu atau dua tahun. Masalah Anda akan segera dimulai, dan sangat sepele, seperti impor siklik modul. Saya minta maaf karena saya mem-bypass PHP, mereka melakukan banyak hal di dalamnya, tetapi ada benarnya - saya tidak mendengar bahwa salah satu perusahaan besar menggunakannya, dan bukan garpu yang banyak dikerjakan ulang, seperti yang dilakukan Facebook.


Garis yang terpisah adalah semacam monopoli. Swift untuk ekosistem Apple, yang dengan sendirinya menciptakan kerangka pengembangan aplikasi sendiri. Google dengan Android (omong-omong, juga Java / Kotlin). Bahasa R dan lingkungan pengembangan untuk analisis data. JavaScript sebagai satu-satunya bahasa pemrograman yang berjalan di browser.


Dengan Swift, semuanya tampak jelas. Ada beberapa programmer, mereka membayar dengan baik (menurut rumor), bahasanya berkembang pesat, modis, tetapi berbeda dari hype karena kompatibel dengan dinosaurus ObjC dan segala sesuatu yang telah ditulis di dalamnya selama bertahun-tahun. Apple juga di belakangnya, dan dengan cepat mengembangkan kerangka kerja platform. Selain itu, dapat dikompilasi ke dalam sistem lain dan tampaknya menjanjikan kompatibilitas dengan C / C ++. Jika ini terjadi, saya bahkan tidak tahu ... akan ada sesuatu atau sangat baik, atau sesuatu yang lain. Karena begitu banyak yang telah ditulis dalam C / C ++ sehingga Anda dapat memutar kepala Anda, ini adalah sumber daya yang sangat besar.


Javascript Bahasa sebagai bahasa. Banyak yang menganggapnya sebagai bahasa yang inferior. Dia punya banyak masalah, itu benar. Ini terutama cedera kelahiran yang hampir tidak mungkin diatasi dalam hal teknis. Itu dapat digunakan untuk aplikasi server, tetapi saya tidak akan merekomendasikan pergi jalan ini. NodeJS adalah hype murni tentang yang penciptanya sendiri secara langsung mengatakan bahwa kesalahan mendasar dibuat selama penciptaannya. Adapun pengembangan browser, saya akan merekomendasikan mengambil apa yang paling banyak digunakan sekarang, ini Bereaksi bersama dengan Redux. Cukup banyak. Dia dibutuhkan di mana-mana. Anda akan menemukan pekerjaan. Meskipun Anda hanya berada di peramban, meskipun Anda penuh, antek dari panggangan keramik akan selalu mencukupi pada filet.


Hasilnya, kesimpulan pribadi Anda


Jika saya memilih kembali, saya akan mengambil sekelompok Java / Spring + Bereaksi. Tentu saja Musim Semi bukan musim semi sekarang, dan hal yang sama berlaku untuk Bereaksi, tetapi kriteria adalah sama.


Apa yang secara pribadi menyentuh saya di tumpukan ini. Relatif mudah untuk "menjual" ke klien Bereaksi, ini terkenal untuk semua orang, karena ini adalah sensasi yang pada saat yang sama telah ditumbuhi dengan infrastruktur dan tertanam kuat di pasar, sehingga dapat digunakan dalam proyek-proyek serius. Pada saat yang sama, tidak ada kontradiksi yang merisaukan mengenai pengembangan dan masa depan pemrograman browser - ini berorientasi komponen, komunitas sangat sadar akan pemrograman reaktif, yang sekarang cukup relevan, dan menggunakannya. Versi baru Bereaksi tidak merusak kode lama tanpa peringatan, aturan komposisi aplikasi tidak berubah secara dramatis. Anda tidak dapat mengatakan tentang Angular yang telah mencoreng reputasinya berkali-kali (saya harap sekarang semuanya baik-baik saja dan tidak lagi badai). Yah, kecuali untuk Vue, yang lainnya lebih baik untuk tidak menyentuh sama sekali, menurut saya.


Java, di sisi lain, menyediakan bidang besar solusi siap pakai, dan hampir semua "Wishlist" dari klien atau atasan Anda bisa, jika tidak mudah, tetapi setidaknya tidak diwujudkan melalui pagar kruk. Saya sungguh-sungguh percaya bahwa dengan. Net dan terutama pengembangan lintas-platform. Net Core semuanya baik-baik saja, tapi saya pribadi tidak terlalu suka C #, well, ternyata.

Source: https://habr.com/ru/post/id465767/


All Articles