Saya bekerja di lingkungan di mana kami memiliki banyak proyek dengan tenggat waktu yang ketat untuk hasil kerja. Kami bahkan berbicara langsung dengan klien sehingga menyelesaikan pekerjaan dan cepat adalah suatu keharusan.
Masalah saya adalah saya selalu menulis kode untuk solusi pertama yang muncul di benak saya, yang tentu saja saya pikir terbaik pada saat itu. Itu selalu berakhir jelek dan saya kemudian menyadari bahwa ada cara yang lebih baik untuk melakukannya tetapi tidak mampu untuk berubah karena batasan waktu.
Apakah ada tips yang dapat saya gunakan untuk membuat kode saya efisien namun tepat waktu?
self-improvement
dengan senang hati
sumber
sumber
Jawaban:
Jika kode perlu dipertahankan, jelaskan bahwa diperlukan waktu tambahan untuk membuat kode lebih mudah dikelola, yang akan menghemat uang mereka di backend. Dengan kata lain, buat kode yang bisa dikelola menjadi persyaratan.
Jika mereka tidak peduli tentang itu, saya pikir Anda tidak perlu melakukan sesuatu yang berbeda, selain menjadi lebih baik setiap saat dan melakukan yang terbaik untuk menggabungkan praktik terbaik bila memungkinkan.
sumber
Oke, ini mungkin terdengar agak gila tapi saya bersumpah itu berhasil. Ini bukan hanya untuk pemrograman, itu adalah resep untuk peningkatan kreativitas, konsentrasi, dan memori:
Sebelum Anda menyadarinya, Anda akan melihat peningkatan yang nyata dalam produktivitas pemrograman Anda dan kualitas solusi (belum lagi peningkatan di bidang lain).
Sumber:
sumber
Ini kontra-intuitif, tetapi Anda mungkin perlu memperlambat. Ketika Anda menerapkan solusi pertama yang muncul di benak Anda, Anda membuat banyak pekerjaan ekstra untuk diri sendiri di ujung jalan. Dengan "menyusuri jalan", maksud saya sedini sore itu. Masalah yang Anda buat sendiri tidak butuh waktu berbulan-bulan untuk berkembang. Pertimbangkan opsi Anda. Ketik kurang dan renungkan lebih lanjut. Bahkan dalam proyek singkat, Anda akan menemukan bahwa lebih sedikit pengkodean sebenarnya dapat mempercepat Anda.
Jika klien Anda mengelompok di industri tertentu, cobalah untuk membangun proyek yang memiliki komponen yang dapat digunakan kembali. Tidak menulis kode lebih cepat daripada menulisnya.
Dari perspektif klien Anda, ini sedikit berbau seperti " Cepat, bagus dan murah, pilih dua ". Tentu, kita semua menginginkan apa yang kita inginkan segera, tetapi klien Anda perlu mempertimbangkan apakah ini yang terbaik dalam jangka panjang. Cobalah untuk mengartikulasikan trade off dan membantu mereka membuat keputusan yang baik.
sumber
Mencari pekerjaan lain.
Anda akan menemukan bahwa setelah sekitar 6 mos. sampai satu tahun Anda tidak akan bangga dengan pekerjaan yang telah Anda lakukan. Lebih jauh, Anda tidak akan menghabiskan waktu untuk belajar tentang teknik, teknologi, atau kerangka kerja baru - jadi setelah satu tahun, Anda tidak akan mampu mengikuti teknologi baru. Anda akan menjadi pemrogram yang lebih buruk dibandingkan dengan pasar setelah satu tahun dari pada awalnya.
Jika terlalu banyak waktu berlalu (katakanlah beberapa tahun atau lebih), Anda akan mengalami kesulitan mendapatkan pekerjaan di mana pun kecuali untuk pekerjaan cepat seperti ini di mana kode kualitas tidak dihargai, hanya kecepatan.
Yang mengatakan, sebagai pengalaman belajar "dunia nyata", ada sesuatu yang bisa dikatakan untuk lingkungan yang bergerak cepat, tetapi saya akan mengatakan bahwa sekitar 6 mos. cukup. Di luar itu, Anda harus mencari pasangan dengan beberapa perekrut dan mencari tempat yang lebih baik. Anda akan jauh lebih bahagia, jujur.
sumber
Dari klien Anda, melihat efisiensi kode mungkin tidak terlalu penting, dan bisa sangat mahal. Hari-hari ini menghabiskan waktu membuat kode perlu menghemat waktu CPU untuk membenarkan satu jam waktu Anda. Untuk kebanyakan program, efisiensi tidak terlalu penting. Bahkan bagi mereka yang ada di sana, sebagian besar kode tidak perlu seefisien itu. Diberi pilihan, preferensi saya adalah solusi pemeliharaan yang mudah daripada yang lebih efisien, lebih sulit untuk mempertahankan kode.
Meluangkan waktu untuk merencanakan pengkodean Anda sebelum memulai dapat memberi Anda waktu untuk mengevaluasi solusi dan mempertimbangkan pendekatan alternatif. Ini akan menghemat waktu Anda dalam pengkodean dan pengujian. Saya telah menemukan bahwa kode yang lebih sederhana seringkali lebih efisien.
Tata letak kode dengan bersih menggunakan sebanyak mungkin baris yang diperlukan. Kode kompleks dapat membingungkan pengoptimal dan dapat menyebabkan kode lebih lambat. Kompiler modern sangat baik dalam mengoptimalkan kode, percaya untuk melakukan tugasnya.
Terima bahwa cukup baik itu cukup baik. Ketika Anda melakukan pendekatan yang lebih efisien, buat catatan untuk diri sendiri. Jika Anda punya waktu, bandingkan beberapa desain Anda yang lebih efisien dengan yang Anda terapkan. Cobalah mereka dalam yang kecil (hanya kode yang terpengaruh) dan juga yang besar (program yang menggunakannya). Ini akan memberi Anda perasaan ketika pendekatan yang lebih efisien tepat.
Banyak orang menganggap optimasi dini sebagai pendekatan yang buruk. Ini bisa mahal untuk diimplementasikan. Sayangnya, banyak optimasi prematur sebenarnya tidak efisien karena kode mereka dioptimalkan. Untuk mengoptimalkan kode dengan benar, Anda perlu memasukkan kode sebelum dan sesudah perubahan untuk melihat apakah Anda benar-benar telah meningkatkan efisiensi.
Pelajari teknik yang membantu Anda menulis kode bersih dengan kopling rendah dan kohesi tinggi. Dalam banyak kasus, mengurangi kompleksitas meningkatkan efisiensi. Teknik yang membantu Anda meminimalkan bug yang harus Anda perbaiki selama pengembangan akan membantu Anda memberikan lebih cepat. Ini dapat meluangkan waktu bagi Anda untuk menguji pendekatan alternatif.
sumber
Robert membahas aspek terpenting.
Saya telah bekerja di lingkungan seperti itu, di mana kode tidak (tidak bisa) hidup selama lebih dari enam bulan. Ada beberapa aturan praktis yang dapat saya pikirkan:
sumber
Pada fase desain, bicara dengan rekan kerja .
Diskusikan desain Anda dan bagaimana Anda ingin melakukannya, dan minta mereka memeriksa keputusan Anda. Jika dan ketika Anda semua sepakat tentang apa yang pintar, Anda memiliki desain yang jauh lebih sehat.
sumber
Praktek. Berlatihlah menulis kode yang baik sampai menjadi kebiasaan. Kemudian berlatih coding lebih cepat. Kemudian berlatih coding lebih baik. Dan ketika Anda selesai ... berlatih lagi.
sumber
Tidak, itu bukan masalah Anda. Itu suatu kebajikan. Itu melakukan hal paling sederhana yang mungkin bisa berhasil. Tapi itu hanya berfungsi ketika dikombinasikan dengan refactoring. Ini adalah proses berkelanjutan: melakukan hal paling sederhana berikutnya yang mungkin dapat bekerja, berulang-ulang, sehingga sistem Anda selalu merupakan ekspresi dari pemahaman Anda saat ini tentang ruang solusi.
Masalah Anda adalah Anda memiliki manajemen yang tidak memahami biaya siklus hidup sebenarnya dari sistem perangkat lunak. 90% dari biaya itu adalah pemeliharaan, bukan implementasi awal. Pengujian dan refactoring adalah alat terbaik kami untuk mengurangi biaya siklus hidup total sistem perangkat lunak. Jika manajer Anda tidak akan membiarkan Anda melakukan hal-hal ini, mereka tidak bertanggung jawab dan perlu dilatih ulang. Atau Anda perlu mencari pekerjaan baru.
Akhirnya: seperti yang saya katakan sebelumnya *, Anda perlu belajar bagaimana mengatakan tidak .
* Bagaimana kode pada jadwal yang sangat ketat?
sumber
Jika mereka memperbaiki ruang lingkup dan waktu yang dapat Anda lakukan untuk membuat tenggat waktu adalah kualitas drop.
Jika mungkin turun kualitas eksternal, terlihat oleh para pemangku kepentingan, jangan kompromi pada kualitas internal, hal-hal yang menyakiti kelayakhunian Anda dalam basis kode.
Saya benar-benar tidak berpikir perbaikan diri akan membantu Anda sedikit pun dalam situasi ini. Jika ada, maaf untuk mengatakan, biasanya ketegasan.
Cobalah untuk mendapatkan kaki di pintu ketika pekerjaan diperkirakan. Bagaimana atasan Anda memperkirakan berapa lama waktu yang Anda butuhkan untuk melakukan sesuatu?
Bawa pilihan ke atasan dan / atau pelanggan Anda. Seringkali pengembang sendiri yang memilih untuk menjatuhkan kualitas tanpa mengkomunikasikan apa pun. Proyek / pekerjaan yang terlambat sangat umum dan biasanya 'dikelola'. Bertindak tepat waktu, peringatkan orang jika Anda melihat tenggat waktu yang terlewat datang.
Mereka tidak dapat memotong ruang lingkup atau memindahkan tenggat waktu jika Anda tidak memberi tahu mereka.
Jika Anda akan berkompromi pada kualitas dalam bentuk apa pun, cobalah untuk membiarkannya menjadi keputusan mereka. Beri mereka hal-hal yang berbobot satu sama lain.
Beberapa hal yang hanya ANDA dapat memutuskan. Jika Anda baru saja berhasil. Tapi itu sangat tidak bisa dipelihara. Mungkin Anda tidak yakin apakah itu berfungsi dalam semua kasus. Jangan bilang siapa-siapa kamu sudah selesai. Ulangi itu. Sangat sering itu keputusan yang hanya bisa Anda buat. Entah karena masalahnya sangat memakan waktu untuk mengartikulasikan atau Anda memiliki manajer non-teknis.
Terkadang itu bagian dari etos kerja Anda, apakah Anda hanya menjahit seorang pasien tanpa mencuci tangan Anda menyebabkan 'tidak ada waktu'?
Yang terpenting, ingat: tidak ada yang lebih baru.
sumber
Saya adalah pengembang .Net yang bekerja pada aplikasi web.
Hal-hal yang sudah mulai saya lakukan adalah -
Jika itu kode C #, saya mencoba menulis kode itu di LinqPad terlebih dahulu (jika mungkin).
Jika itu kode Javascript, saya pertama-tama menulis kode itu dan mengujinya di jsfiddle / jsbin (jika mungkin).
Saya menemukan bahwa ini membantu dengan kualitas kode tetapi tidak memperlambat saya (dan dalam beberapa kasus, saya merasa lebih cepat).
sumber