Bagaimana cara menulis kode yang efisien meskipun ada tenggat waktu yang berat

28

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?

dengan senang hati
sumber
11
Jangan fokus pada kode efisien , melainkan kode yang benar . Itu berjalan bermil-mil lebih jauh. Hemat efisiensi Anda untuk rilis berikutnya.
Jesse C. Slicer

Jawaban:

23

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.

Robert Harvey
sumber
3
Benar, saya setuju dengan semua itu, kecuali itu jarang bekerja seperti itu dalam kenyataan. Bos Anda ingin sesuatu dilakukan sebelum tanggal X dan tidak mau mengalah? Sayang sekali, Anda masih harus menyelesaikannya, atau mungkin Anda dapat menemukan pekerjaan di tempat lain, yang seringkali bukan pilihan.
Ed S.
4
@EdS. Mencari pekerjaan di tempat lain selalu merupakan pilihan ... ini disebut "mempertahankan karier Anda" dan butuh waktu dan upaya untuk melakukannya.
Spoike
17

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:

  • Makan dengan baik
  • Merenungkan
  • Tidur nyenyak (7-9 jam tergantung orangnya)
  • Tidur siang setiap kali otak Anda tidak jelas
  • Tidur dengan masalah yang belum terpecahkan. Jangan akhiri hari Anda dengan semua yang lengkap. Tinggalkan satu tugas sulit yang tertunda - alam bawah sadar Anda sangat efektif.
  • Pakailah pakaian yang nyaman
  • Olahraga
  • Luangkan waktu untuk melakukan latihan mental hafalan - sudoku (tidak diprogram), teka-teki silang, latihan matematika, teka-teki spasial, dll.
  • Lakukan eksperimen obyektif pada diri Anda untuk melihat mana dari perilaku Anda yang berdampak pada kinerja (Anda akan memerlukan cara yang andal untuk menguji kinerja agar ini berfungsi).
  • Hadir untuk kesehatan spiritual Anda
  • Celana katun
  • Hadir untuk kesehatan seksual Anda
  • Luangkan waktu untuk keluarga dan teman-teman Anda
  • Menjadi ahli dalam sesuatu di luar profesi Anda (musik, memasak, olahraga, dll) dan bersosialisasi dengan orang lain melakukan hal yang sama
  • Bagi sebagian orang, hewan peliharaan adalah suatu keharusan

Sebelum Anda menyadarinya, Anda akan melihat peningkatan yang nyata dalam produktivitas pemrograman Anda dan kualitas solusi (belum lagi peningkatan di bidang lain).

Sumber:

  1. Otak Keajaiban Anda: Maksimalkan Kekuatan Otak Anda, Tingkatkan Memori Anda, Angkat Mood Anda, Tingkatkan IQ dan Kreativitas Anda, Cegah dan Balikkan Penuaan Mental
  2. Diri yang Terkuantifikasi
  3. Seth Roberts - dalam Scientific American
Hanya sedikit Roger
sumber
6
Anda lupa: Tidak Ada Kafein.
Christopher Mahan
Anda lupa: Jangan Tonton PORN sambil mengode! Terima kasih!
AmirHossein
9

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.

Corbin March
sumber
Saya setuju dengan ini. Pertimbangkan dua atau tiga kemungkinan pendekatan sebelum mulai membuat kode. Kemudian berdasarkan beberapa kombinasi kemudahan implementasi, kemudahan pengujian, efisiensi, dan ekstensibilitas, tentukan pilihan Anda.
Omega Centauri
8

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.

Mike Rosenblum
sumber
2
Apa yang kamu maksud dengan "mos." ?
Darius.V
mos = bulan. Dua karakter lagi ...
gnasher729
Saya tidak mengenal Anda tetapi "mos" dalam bahasa Persia memiliki arti yang buruk. itu berarti pantat. ;)
AmirHossein
3

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.

BillThor
sumber
1

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:

  1. Gunakan pustaka sumber terbuka, solusi pihak ketiga, dll., Pembelajaran yang terlibat terbayar dengan sedikit pemeliharaan dan debugging. Namun, jika Anda terjebak dengan perpustakaan kereta, Anda akan menemui ajal.
  2. Secara ketat memastikan desain Anda dapat diperluas. Persyaratan wajib: sebagian besar pekerjaan datang sebagai perbaikan, bukan membangun fitur baru.
  3. Bangun rencana pengujian yang ketat. Dapatkan QA, atau tes otomatis untuk memastikan pengujian regresi.
  4. Gunakan alat pintar - IDE, utilitas pembuatan kode, dll.,.
  5. Pertahankan segala sesuatunya dapat dikonfigurasi. (Sisi lain peningkatan upaya pengujian)
  6. Tingkatkan kecepatan mengetik Anda :-)
CMR
sumber
1

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
1

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.

Michael Brown
sumber
0

Masalah saya adalah saya selalu menulis kode untuk solusi pertama yang muncul di benak saya, yang tentu saja saya pikir terbaik pada saat itu.

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?

Rein Henrichs
sumber
0

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.

Joppe
sumber
0

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).

pengguna637563
sumber
posting ini agak sulit dibaca (dinding teks). Maukah Anda mengeditnya menjadi bentuk yang lebih baik?
nyamuk
@gnat - terima kasih atas sarannya. Membantu menerima saran dengan downvote. Saya harap pemformatan lebih baik sekarang.
user637563
Menemukan solusi di luar lingkungan penuh dapat memiliki manfaatnya. Anda akan memiliki sesuatu yang berfungsi sehingga Anda akan tahu bahwa jika itu tidak berfungsi dalam sistem lengkap masalahnya maka harus menjadi konflik dengan seluruh sistem. Anda kemudian dapat mencoba memodifikasi solusi untuk menghilangkan konflik sambil dapat melihat apakah solusi masih berfungsi di luar lingkungan penuh. Kewarasan Anda mungkin berterima kasih untuk ini di telepon.
Bent