Sebagai seorang insinyur perangkat lunak, kami selalu ingin mendapatkan alat yang efektif untuk meningkatkan produktivitas kami. Dan dalam pekerjaan kita sehari-hari, kita sering tidak puas dengan alat yang ada dan ingin memiliki cara yang lebih baik seperti konfigurasi skrip GDB yang lebih baik, skrip Vim dan beberapa skrip Python untuk membuat hal-hal membosankan menjadi otomatis.
Namun, ini sebenarnya merupakan pertukaran karena pembuatan alat juga membutuhkan waktu dan energi. Itu tidak segera meningkatkan produktivitas. Karena itu, bagaimana Anda menilai apakah sekarang saatnya untuk berhenti bekerja dan membuat beberapa alat untuk meringankan rasa sakit Anda di masa depan?
productivity
tools
xiao
sumber
sumber
Jawaban:
Saya "membuat alat" ketika salah satunya benar:
"Risiko" untuk opsi ke-2 tidak harus besar - biaya membangun satu alat kecil biasanya kecil, jadi jika yang Anda hemat adalah risiko menjalankan pembangunan 10 menit sekali lagi seminggu sekali, biasanya membayar sendiri dengan sangat cepat.
Saya mencoba membuat alat sekecil mungkin - hanya membuat tugas sedikit lebih mudah sekarang, dan mungkin meningkatkan lagi lain kali.
Ini berarti Anda hanya memperbaiki rasa sakit terbesar setiap kali, dan tidak membuat perbaikan untuk masalah yang tidak benar-benar menyakiti Anda.
sumber
Dengan pengalaman saya telah menemukan bahwa hanya mendorong keras pada pekerjaan kasar biasanya yang paling efisien waktu. Membuat alat sering menggoda. Saya menyerah saat:
sumber
Aturan praktis saya adalah bahwa ketika saya harus melakukan sesuatu untuk ketiga kalinya, saatnya untuk menulis naskah kecil untuk mengotomatiskannya, atau memikirkan kembali pendekatan saya.
Saya tidak membuat "alat" penuh pada saat ini, hanya sedikit skrip (biasanya bash atau python; perl akan bekerja juga, atau bahkan PHP) yang mengotomatiskan apa yang saya lakukan secara manual sebelumnya. Ini pada dasarnya merupakan penerapan prinsip KERING (atau prinsip Sumber Tunggal Kebenaran, yang pada dasarnya adalah hal yang sama) - jika Anda harus mengubah dua file sumber secara bersamaan, harus ada beberapa kebenaran umum yang mereka bagikan, dan bahwa kebenaran harus diperhitungkan dan disimpan di satu tempat utama. Sangat bagus jika Anda dapat menyelesaikan ini secara internal dengan refactoring, tetapi kadang-kadang, ini tidak layak, dan di situlah skrip kustom masuk.
Kemudian nanti, skrip mungkin berkembang atau tidak menjadi alat yang lengkap, tetapi saya biasanya memulai dengan skrip yang sangat spesifik dengan banyak hal yang dikodekan ke dalamnya.
Saya benci pekerjaan kasar dengan hasrat, tetapi saya juga sangat percaya bahwa itu adalah tanda desain yang buruk atau salah. Menjadi malas adalah kualitas penting dalam seorang programmer, dan lebih baik menjadi jenis di mana Anda berusaha keras untuk menghindari pekerjaan yang berulang.
Tentu, kadang-kadang saldo negatif - Anda menghabiskan tiga jam refactoring kode Anda atau menulis skrip untuk menghemat satu jam pekerjaan berulang; tetapi biasanya, keseimbangannya positif, apalagi jika Anda mempertimbangkan biaya yang tidak langsung terlihat: kegagalan manusia (manusia benar-benar buruk dalam pekerjaan yang berulang), basis kode yang lebih kecil, pemeliharaan yang lebih baik karena pengurangan yang berlebihan, dokumentasi mandiri yang lebih baik, masa depan yang lebih cepat pengembangan, kode bersih. Jadi, bahkan jika saldo tampak negatif sekarang, basis kode akan tumbuh lebih lanjut, dan alat yang Anda tulis untuk menghasilkan formulir web untuk tiga objek data akan tetap berfungsi saat Anda memiliki tiga puluh objek data. Dalam pengalaman saya, keseimbangan biasanya diestimasi mendukung pekerjaan kasar, mungkin karena tugas berulang lebih mudah untuk diperkirakan dan dengan demikian di bawah perkiraan, sementara refactoring, automating dan abstrak dianggap kurang dapat diprediksi dan lebih berbahaya, dan dengan demikian di atas perkiraan. Biasanya ternyata otomatisasi tidak terlalu sulit.
Dan kemudian ada risiko melakukannya terlambat: mudah untuk memperbaiki tiga kelas objek data baru menjadi bentuk dan menulis skrip yang menghasilkan formulir web untuk mereka, dan setelah Anda melakukannya, mudah untuk menambahkan 27 kelas lagi yang juga bekerja dengan skrip Anda. Tetapi hampir tidak mungkin untuk menulis skrip itu ketika Anda telah mencapai titik di mana ada 30 kelas objek data, masing-masing dengan formulir web tulisan tangan, dan tanpa konsistensi di antara mereka (alias "pertumbuhan organik"). Mempertahankan 30 kelas dengan bentuk mereka adalah mimpi buruk pengodean berulang dan pencarian semi-manual, mengganti aspek umum membutuhkan waktu tiga puluh kali lebih lama dari yang seharusnya, tetapi menulis skrip untuk menyelesaikan masalah, yang akan menjadi istirahat makan siang ketika proyek dimulai sekarang adalah proyek dua minggu yang menakutkan dengan prospek yang menakutkan setelah sebulan yang terdiri dari memperbaiki bug, mendidik pengguna, dan bahkan mungkin menyerah dan kembali ke basis kode lama. Ironisnya, menulis kekacauan 30-kelas membutuhkan waktu lebih lama daripada solusi bersih, karena Anda bisa menggunakan skrip yang nyaman sepanjang waktu itu. Dalam pengalaman saya, mengotomatiskan pekerjaan berulang sangat terlambat adalah salah satu masalah utama dalam proyek perangkat lunak besar yang sudah berjalan lama. karena Anda bisa saja mengendarai skrip yang nyaman sepanjang waktu itu. Dalam pengalaman saya, mengotomatiskan pekerjaan berulang sangat terlambat adalah salah satu masalah utama dalam proyek perangkat lunak besar yang sudah berjalan lama. karena Anda bisa saja mengendarai skrip yang nyaman sepanjang waktu itu. Dalam pengalaman saya, mengotomatiskan pekerjaan berulang sangat terlambat adalah salah satu masalah utama dalam proyek perangkat lunak besar yang sudah berjalan lama.
sumber
Saya baru ingat ini:
Masalah dengan ini tentu saja adalah bahwa dalam situasi kehidupan nyata Anda tidak dapat dengan mudah mengukur data tersebut untuk memilih sel yang tepat dalam tabel. Dan seperti yang disebutkan dalam jawaban lain, ada variabel lain (risiko kesalahan, tugas terlalu membosankan untuk melakukannya bahkan sekali, ...) Anda perlu menambahkan persamaan.
Jadi jawaban saya adalah itu benar-benar tergantung pada situasi dan Anda tidak dapat berharap untuk mendapatkan jawaban yang "benar" untuk semua situasi. Bagaimanapun, hidup akan membosankan jika kita memiliki buku masak untuk semuanya.
sumber
Ini adalah masalah besar dalam pengalaman saya. Pembuatan alat biasanya diserahkan kepada pengembang termotivasi yang berhenti bekerja untuk membangun alat. Ini sering mengganggu perkembangan bahkan jika itu memberikan nilai. Pembuatan alat perlu dilihat sebagai bagian terpadu dari "Proses" pengembangan.
Saya ingat menghadiri ulasan kode di mana kesalahan header akan mengakibatkan penjadwalan review lain. Banyak dari ini bisa dideteksi oleh alat. mis. jumlah sloc salah, persyaratan hilang, kesalahan format. Alat saya yang ditulis dalam perl menghasilkan header dari kode yang dikirimkan dan persyaratan yang divalidasi dari database Oracle. Itu bukan bagian dari "Proses" kami sehingga dalam jangka pendek alat ini dianggap menunda pengiriman.
Seluruh tim perlu berhenti secara berkala dan melihat di mana ada upaya manual yang dapat diotomatisasi dengan pembuatan alat.
sumber
Semua jawaban lain baik, tetapi saya akan menambahkan satu alasan lagi mengapa berharga menghabiskan waktu untuk membangun alat kecil (dan menyesuaikan .vimrc, .emacs dll.):
Kadang-kadang Anda secara kreatif atau motivasi "terjebak dalam kebiasaan" dan melakukan sesuatu, apa saja, akan "membuat jus mengalir" lagi (untuk mencampur metafora). Idealnya itu adalah sesuatu yang secara produktif mendorong proyek ke depan, tetapi jika itu agak singgung dan itu menginspirasi Anda, maka itu bagus juga.
Anda mungkin tidak menatap layar kosong, tetapi justru mengalami kesulitan melihat kemajuan yang Anda buat pada tugas besar. Dalam situasi itu, menandai sesuatu yang nyata dapat menghentikan Anda merasa seperti Anda tidak pergi ke mana pun.
Variasi dalam hal ini adalah ketika Anda terus memikirkan sesuatu yang seharusnya ada di "back burner" - hanya mengambil waktu sebentar dan melakukannya akan membuat Anda lupa dan membebaskan Anda untuk memasukkan energi penuh Anda ke tugas utama lagi.
sumber
Itu tergantung pada apa yang Anda anggap sebagai alat. Bisa dibilang saya membuat banyak dari mereka dengan cara yang dianggap devs lain remeh ... Karena saya membuat mereka untuk hampir semua hal kecuali perintah sistem file yang paling dasar.
Saya menggunakan 2 alasan untuk mendukungnya.
Kadang-kadang mereka tumbuh menjadi alat yang lebih besar dan mendapatkan fungsi interaktif, tetapi jika tidak, mereka masih memiliki nilai sebagai catatan.
sumber