Saya seorang pengembang Java dengan sedikit lebih dari satu tahun pengalaman yang menempatkan saya di suatu tempat di atas junior, tetapi belum di antara pengembang tingkat menengah. Baru-baru ini saya ditawari proyek jangka panjang yaitu mempelajari kode aplikasi perbankan yang ada selama 4 bulan dan kemudian memperkenalkan perubahan saat dibutuhkan. Sebagai programmer yang tidak terlalu berpengalaman, saya mencari cara untuk mengembangkan dan saya bertanya-tanya apa yang mungkin diberikan proyek semacam itu.
Apakah Anda menganggap berurusan dengan aplikasi yang besar dan mungkin tidak ditulis dengan baik sebagai praktik yang baik untuk pemula?
Jawaban:
Memecahkan masalah kode yang ada adalah cara super untuk dikembangkan sebagai seorang programmer. Jika kodenya jelek, Anda akan belajar dampak dari kesalahan yang mereka buat, dan mungkin menghindarinya ketika Anda sedang mendesain. Jika kodenya bagus, Anda akan belajar sesuatu tentang cara membuat aplikasi yang bisa dirawat.
Anda juga akan belajar untuk menangani kompleksitas aplikasi bisnis nyata. Karena ini ada di sektor perbankan, Anda akan belajar tentang hal-hal seperti regulasi federal dan kontrol akuntansi internal yang mungkin tidak pernah Anda pikirkan. Ini adalah hal-hal yang baik untuk diketahui ketika Anda diminta untuk merancang sesuatu yang lain di dunia keuangan. Dan pemrograman keuangan bisa menjadi sektor yang sangat menguntungkan untuk bekerja, jadi mendapatkan pengalaman perbankan mungkin sangat baik untuk Anda.
Anda bahkan dapat belajar bahwa hanya karena sesuatu ditulis 15 tahun yang lalu, dalam bahasa yang Anda lebih suka untuk tidak menggunakannya, itu tidak selalu buruk. Bagaimanapun, ini telah berjalan dengan sukses selama ini.
Jika, seperti pada sebagian besar aplikasi lawas, aplikasi tidak memiliki pengujian unit, Anda harus benar-benar memastikan perubahan tidak akan memengaruhi sesuatu yang lain, Anda dapat mempelajari cara menambahkan pengujian itu dan cara menjual manajemen tentang mengapa menambahkan pengujian itu diperlukan. sebuah ide bagus.
sumber
Saya pikir ini latihan yang bagus untuk siapa pun yang
pemula. Belajar dari pengalaman orang lain bisa sangat efektif.Tantangan sebenarnya bukan untuk menemukan kesalahan, tetapi untuk masuk ke kepala pengembang lain dan mencoba mencari tahu
why
kode itu ditulis seperti itu. Kadang-kadang itu karena mereka ceroboh, dan kadang-kadang itu karena mereka punya alasan kuat. Anggap dev itu setidaknya sebaik Anda tetapi mungkin memiliki lebih banyak pengetahuan domain.sumber
Ini adalah praktik yang baik untuk setiap pengembang di setiap titik dalam karir mereka. Jika Anda dapat meninjau dan menganalisis perangkat lunak yang ada dan menemukan cara untuk memperbaikinya, Anda akan menunjukkan bahwa Anda adalah pengembang yang berharga. Anda tidak hanya akan belajar bagaimana orang lain telah merancang dan mengembangkan perangkat lunak, tetapi sepanjang jalan Anda akan belajar apa yang tidak boleh dilakukan, yang merupakan pengetahuan yang berharga.
Jika Anda siap menghadapi tantangan, ambil proyek ini terus dan buatlah lebih baik.
sumber
Ini benar-benar akan membantu Anda, tetapi Anda harus berhati-hati.
Anda perlu memastikan Anda belajar dari kode lawas. Bagaimana Anda tahu apa yang baik dan apa yang buruk? Mungkin Anda bisa mengenali pro dan kontra dari berbagai pola / metode, tetapi jika Anda seorang pengembang junior yang baru memulai, Anda mungkin tidak bisa.
Dan tinggal terlalu lama dalam pekerjaan pertama itu, dan Anda mungkin tidak belajar atau membangun keterampilan yang cukup dan akhirnya terjebak di sana.
sumber
Legacy dapat berarti apa-apa selain berdasarkan komentar 'tidak ditulis dengan baik' Anda, saya akan berasumsi bahwa Legacy berarti teknologi dan pola 'buruk' atau setidaknya 'ketinggalan zaman'. Jika kode lawas itu baik, jangan menahan diri dan pelajari setiap barisnya.
Saya tidak berpikir ada peringatan yang cukup jelas terhadap jenis pekerjaan dan proyek yang mengalihkan karir Anda dan membuat Anda terjebak dalam lubang wastafel berharga di utas ini sampai saat ini.
Waspada analogi olahraga: Apakah Anda pikir seorang penyokong lini di NFL belajar lebih banyak dan menjadi lebih berharga dengan bermain di tim dengan rekor terburuk atau terbaik? Jawaban saya: Bukan saja mereka lebih berharga bermain untuk tim terbaik, tetapi mereka mungkin mengambil praktik dan pengetahuan terbaik dan menghindari mengambil praktik dan sikap mengakhiri karier.
Ada banyak kode anti-pola yang mengerikan di luar sana yang benar-benar bekerja untuk bisnis dan membayar banyak gaji dev. Saya mengusulkan bahwa pengembang yang belum melihat cukup kode melakukan cara yang 'benar' mungkin salah kode anti pola untuk solusi yang sah untuk suatu masalah. Bisnis ini mungkin mengatakan bahwa solusinya bekerja, tetapi itu bukan yang Anda inginkan di resume Anda atau yang Anda akan banggakan tentang pengembang lain. Ini juga hanya relevan jika jalur pertumbuhan pribadi Anda termasuk mendapatkan rasa hormat dari rekan-rekan teknik Anda dan tidak hanya sementara meningkatkan pendapatan perusahaan tempat Anda bekerja (Kedengarannya buruk, tetapi pada akhirnya, teknik terbaik benar-benar menghasilkan banyak uang IMO) .
Sayangnya ada banyak kode dan banyak waktu yang dapat berlalu sebelum utang teknologi terungkap. Dan utang teknologi itu biasanya diakui tepat ketika sudah terlambat. Siapa pun yang mungkin telah mencoba untuk menghentikan utang teknologi atau pola anti sebelumnya, bisa saja dikesampingkan karena biaya tambahan yang dirasakan atau kurangnya pemahaman tentang skalabilitas dll. Adalah tugas kita sebagai insinyur untuk mengekspos utang teknologi segera. Proyek tanpa insinyur berpengalaman dalam bahaya menabrak dinding bata di beberapa titik, sebenarnya semua proyek bahkan dengan pengembang yang berbakat. Sebagian besar bisnis melihat 'beberapa titik' sebagai banyak waktu untuk memperbaikinya nanti. Ini membuat pilihan pekerjaan bagi pengembang yang akan datang dan yang akan datang menjadi masalah yang sangat rumit. Ini juga menunjukkan tujuan dan pola pikir yang sama sekali berbeda antara pengembang dan bisnis dan betapa rumitnya menjembatani kesenjangan.
Ini adalah tujuan para insinyur untuk 'memasukkan' karya ilmiah dan pertimbangan desain yang sebenarnya sementara itu adalah tujuan bisnis untuk 'mengecualikan' biaya dan waktu yang tidak perlu. Karena insinyur sering tidak tahu apa tingkat usaha dan waktu sampai keadaan akhir benar-benar dilakukan, pengembangan perangkat lunak berjalan seperti drama yang baik dengan karakter seperti gesit, scrum, dan kanban memainkan peran utama.
Satu langkah mungkin untuk menjauh dari kode yang buruk sampai Anda telah melihat kode yang cukup baik untuk tidak 'rusak'. Saya suka mengatakan bahwa pengembang senior menciptakan solusi sederhana untuk masalah yang kompleks. Seperti bijaksana, pengembang tingkat menengah junior menciptakan solusi kompleks untuk masalah sederhana dan kompleks.
Cara lain yang bisa diambil adalah Anda harus mengerjakan kode yang baik DAN buruk di berbagai titik untuk mendapatkan pemahaman. Jika Anda tidak melakukan keduanya maka lakukanlah dan bersiaplah untuk melepaskan semuanya ketika Anda menemukan sistem yang lebih baik. Saya pikir ini mungkin lintasan yang lebih umum bagi kebanyakan pengembang.
Saya bias tahun ini karena saya merasa seperti mendaki gunung 'saus rahasia' yang sangat rumit. Sementara saya akan meningkatkan kemampuan saya untuk menguraikan beberapa pola terburuk yang pernah saya lihat, itu sangat 'kebiasaan' dan 'satu' bahwa saya tidak percaya perjuangan saya akan meningkatkan kemampuan pemasaran saya atau keterampilan yang dapat digunakan yang saya tetapkan di masa depan saya.
Untuk menjaga kewarasan saya, saya hanya berjalan dengan kecepatan tetap dan merangkul setiap blok jalan sebagai hal yang wajar untuk kursus. Baru saja meninjau tujuan tahunan saya dengan atasan saya yang termasuk menggali lubang warisan ini, saya agak berpikir itu mungkin pendakian pengorbanan. Saya bisa bertahan dalam proses dengan ulasan buruk dan kelambatan yang dirasakan. Ini adalah peringatan yang realistis dan firasat bagi Anda yang bertanya-tanya pekerjaan apa yang harus diambil.
Penafian: Posting ini akan hidup lebih lama dari pendapat saya jadi bawa dengan sebutir garam. Besok saya mungkin suka kode warisan! (Meragukannya).
sumber
Ini sangat tergantung pada bagaimana Anda mendefinisikan "warisan" dalam konteks ini. Biarkan saya memberi Anda contoh dari C dan C ++. Banyak programmer C ++ menyebutnya praktik yang buruk untuk menggunakan string C dalam aplikasi C ++, yang lain tidak menuntut pencampuran, sementara yang lain, mengklaim bahwa itu adalah semata-mata dan sama sekali tidak ada gunanya menggunakan bit kode C karena mereka sudah tua, yaitu, " Kode Warisan. Beberapa melangkah lebih jauh dan menghindari penggunaan pra-C ++ X (ganti 'X' dengan angka yang sesuai) idiom standar, gaya - yaitu sintaks, untuk gaya "warisan".
Mengesampingkan masalah kinerja aliran dan string C ++ dan beberapa kekhasan STL, sungguh merupakan praktik yang bagus untuk melihat apa yang ada di dalam arahan preprosesor yang sangat Anda cintai
#include <string.h>
. Jika Anda mengikuti jalan untuk pelaksanaan dan menemukan diri Anda pada mesin unix / linux di/usr/include/string.h
(dan mendapatkan sumber pelaksanaan libc, misalnya, dari gnu.org ) dan membacastrcmp.c
ataustrlen.c
ataustrtok.c
, saya yakin Anda sedang akan mendengar "Apa dunia yang indah "pentahapan secara bertahap.Namun, ada peringatan untuk prosa ini - yaitu, kelas dan metode yang sudah ketinggalan zaman. Di Jawa cukup banyak barang warisan masih dapat diakses dari dalam lingkungan baru-baru ini, tetapi jika saya ingat dengan benar, tidak semuanya. Di sektor IB, dari pengalaman saya sendiri, tidak semua perangkat lunak ditulis oleh programmer yang baik. Banyak lulusan yang memiliki hampir nol paparan pemrograman dunia nyata sebelum mereka mulai pada posisi analis / pengembang. Tapi jangan menyamaratakan pernyataan ini. Saya tahu banyak orang yang menggunakan Java dan C # pada inti throughput tinggi, lingkungan latensi rendah. Saya tidak setuju dengan mereka, tapi yah, untungnya ini urusan mereka. Seandainya mereka benar-benar menjadi HFT, mereka akan terdorong ke belakang dalam barisan. Tapi lagi, mudah disimpulkan dari kalimat ini adalah asumsi (dan dalam banyak kasus faktanya) bahwa kode Java sangat dioptimalkan. Dan jika Anda dapat unggul dalam mengoptimalkan, jika diperlukan, tidak hanya memperbaiki ini atau itu, Anda akan menjadi sangat berharga sebagai seorang dev. Sangat memuaskan dengan cara menyadari berapa banyak Anda telah berkontribusi. Saya akan melakukannya.
sumber