Apakah menggunakan teknik baru merusak produktivitas? [Tutup]

20

Tampaknya seiring dengan bertambahnya pengalaman dengan seperangkat alat khusus yang harus Anda kerjakan, insentif untuk mencoba hal-hal baru melemah.

Ketika saya masih baru di pekerjaan pemrograman ini, mencoba hal-hal baru, meneliti online, membuat saya lebih produktif, karena saya sering menemukan cara (atau perpustakaan) yang membuat tugas lebih mudah daripada kerangka kode yang sudah ada. Jadi menggunakan sesuatu yang baru - bagi saya dan juga dalam konteks basis kode yang diberikan - membuat saya lebih produktif.

Sekarang saya melihat, bahwa ada lebih dan lebih banyak contoh di mana, untuk masalah yang diberikan, saya tahu bahwa ada mungkin adalah solusi yang lebih baik "di luar sana", dan menemukan itu akan - mungkin - memperbaiki kode. Namun, mengingat pengetahuan saya sekarang tentang basis kode, jauh lebih mudah untuk menggunakan alat suboptimal yang kami miliki, dan mendapatkan solusi (termasuk tes) yang berjalan daripada menemukan sesuatu yang baru dan "lebih baik" dan "meningkatkan" basis kode.

Jadi ada ketegangan ini: "lakukan dengan benar" vs. " selesaikan pekerjaan dengan baik ".

Apakah ini sesuatu yang terjadi pada banyak pengembang? Apakah ini masalah khusus yang diketahui? (Apakah ini benar-benar masalah?) Apakah ini benar-benar ada hubungannya dengan peningkatan tingkat pengalaman?

Oh, dan perhatikan: Saya masih menyukai pekerjaan saya dan ingin menyimpannya. Hanya saja sepertinya - selalu menarik! - Bagian penelitian semakin kecil karena saya mempelajari basis kode dan set masalah yang kita hadapi dengan aplikasi kita.

Martin Ba
sumber
3
jangka pendek: ya - jangka panjang: baik, kita semua bisa terjebak pada COBOL
HorusKol
Dilakukan dengan baik juga bisa dilakukan.
QuanhD

Jawaban:

17

Seringkali berisiko mencoba hal-hal baru. Kita terkadang mendapat masalah karena kita cenderung melakukan dua hal:

  1. Terlalu tinggi memperkirakan betapa berharganya hal keren / baru / keren ini. Kami melihat beberapa contoh keren, beberapa kode dilemparkan online. Sangat keren menurut kami. Sangat keren! Dalam XI dapat melakukan tugas Y sepuluh kali lebih cepat. Ini jelas lebih unggul. Kami belum melihat semua "tidak dikenal tidak dikenal". Kami belum tersandung oleh masalah yang dihilangkan oleh tenaga penjualan hal baru. Kami tidak memiliki keahlian yang cukup dalam hal baru untuk melihat ranjau darat menunggu di jalan.

  2. Meremehkan seberapa berguna alat / kerangka / perangkat lunak / hal-hal yang ada. Kami sering tidak ada di sana ketika sistem saat ini awalnya dibangun. Kami tidak menghargai pengorbanan halus yang dibuat. Sangat mudah untuk bermain quarterback Senin-pagi pada sistem yang ada, tetapi bekerja . Mungkin ada banyak keanehan karena pengorbanan yang sangat spesifik antara mempertahankannya, bekerja, dan berkinerja baik. Ya tentu ini aneh. Mungkin yang paling penting, tim adalah pakar tentang keanehan saat ini dan tahu cara mengatasi keanehan itu. Mereka tahu ranjau darat dan perangkap serta perangkap yang harus dihindari. Sebenarnya itu justru karena kita melihat semua kutil dengan cara saat ini melakukan hal-hal yang kita bahkan tertarik bermain dengan hal-hal baru.

Tetapi gagal untuk mencoba hal-hal baru dan bertindak terlalu konservatif mungkin bahkan lebih berbahaya. Tentu kita perlu melangkah dengan hati-hati, tetapi jika kita tidak tahu bagaimana membangun perangkap tikus terbaik, pesaing kita sedikit lebih bersedia untuk mencoba sesuatu yang baru akan datang dan menendang pantat! Bertindak konservatif dan gagal berevolusi dapat mengakibatkan malapetaka yang tak terhindarkan terutama di pasar yang kompetitif.

Jadi ya kita perlu menyeimbangkan pemeliharaan dan pengiriman barang saat ini dengan beberapa tingkat eksperimen bermain / edukatif dengan cara-cara baru untuk memecahkan masalah dengan mengingat bahwa banyak dari cara-cara baru itu jalan buntu sementara yang lain mungkin memberikan hasil. IMO Ini adalah alasan bagus banyak perusahaan memiliki 20% waktu untuk bermain dengan hal-hal baru. Mereka tahu banyak kali mereka tidak berhasil, tetapi banyak dari ide-ide yang keluar dari 20% waktu menjadi gangbuster. Tanpa waktu untuk bermain dan bereksperimen, Anda dapat dengan mudah mandek sebagai perusahaan dan benar-benar mengacaukan diri Anda.

Doug T.
sumber
1
Saya pikir itu tergantung pada jenis "baru" yang Anda jelajahi. Saya telah menjelajahi konsep pemrograman dari tahun 60an, 70an, 80an dan semuanya tampak baru karena hanya sedikit programmer yang benar-benar mencari sejarah dari bidang ini.
Rudolf Olah
Hal baik lainnya tentang "penelitian" adalah bahwa walaupun Anda akhirnya tidak menggunakan alat yang Anda teliti, Anda dapat memilih beberapa konsep menarik darinya ... Sekarang ada beberapa perusahaan (berbicara tentang apa yang saya ketahui: bank misalnya) yang secara khusus tidak ingin menggunakan "hal baru", tetapi tunggu sampai ini terinstal dengan baik. Kadang-kadang itu bijaksana ... mungkin ada perusahaan yang berinvestasi banyak ke dalam prototipe, mootool, naskah, dll ... untuk kemudian menyadari kerangka kerja itu "kehilangan" pertempuran dan tidak banyak didukung.
Laurent S.
8

Itu terjadi setiap saat . Saya sudah mengatakan ini di posting lain, tetapi lebih sering daripada tidak, Anda tidak dalam bisnis mengembangkan kode elegan, Anda dalam bisnis pengiriman produk. Dengan demikian, Anda akan kesulitan menemukan manajer mana pun yang bersedia mengalokasikan njam bagi Anda untuk memperbaiki sesuatu yang tidak rusak dan benar-benar (pada akhirnya) tidak terlalu meningkatkan pengalaman pengguna akhir. Anda akan sama sulitnya menemukan seorang manajer yang bersedia mengalokasikan nwaktu untuk meneliti (tanpa tujuan akhir yang jelas) selain dari "mungkin ada sesuatu di luar sana yang lebih baik" daripada apa yang sedang dilakukan.

Karena itu, jika ada hambatan dalam aplikasi Anda yang Anda temukan menggunakan alat profiling dan semacamnya dan Anda dapat dengan jelas mengukur peningkatan pengalaman pengguna yang diharapkan yang akan mereka perbaiki, maka Anda seharusnya (cukup mudah) mendapatkan waktu untuk melakukan R&D bekerja untuk mengoptimalkannya menggunakan teknik yang dapat Anda temukan dari berbagai sumber.

Demian Brecht
sumber
+1, walaupun saya mengatakan bahwa "pengiriman fitur" sering kali menjadi alasan untuk malas (tes, rawatan, dll.)
Martin Ba
Sementara saya setuju dengan sebagian besar dari apa yang Anda katakan dalam jawaban Anda, saya berpendapat bahwa pengembang sebenarnya dalam bisnis mengembangkan kode elegan sampai batas tertentu. Kode yang dikirimkan tidak bernilai jika tidak berfungsi tanpa cara mudah untuk memperbaikinya. Di sinilah kode refactoring untuk mendapatkan "keanggunan" dengan menghabiskan n jam hari ini menghemat n * 10 jam besok.
hspain
@Hspain: Saya sangat setuju dan itulah cara untuk masuk dalam teori, namun itu cenderung tidak terjadi di dunia nyata (setidaknya, dalam pengalaman saya), kecuali pekerjaan Anda adalah perpustakaan dan bukan produk itu sendiri.
Demian Brecht
Sebenarnya, beberapa orang di komunitas Agile menganjurkan pelacakan masalah ini sebagai persyaratan non-fungsional. Syaratnya adalah "kode harus fleksibel dan mudah diubah" (atau sesuatu seperti ini). Dengan begitu Anda bisa membuat cerita yang membahas masalah konkret. Keuntungannya adalah mereka menjadi terlihat oleh para pemangku kepentingan, dan dapat direncanakan / dijadwalkan. Lihat misalnya
sleske
@sleske: ... Dan kemudian mereka jatuh saat memprioritaskan;)
Demian Brecht
4

Saya pikir beberapa di antaranya bermuara pada pengalaman dan pengetahuan yang lebih mendalam tentang bagaimana berhasil memecahkan beberapa masalah.

Ketika Anda baru, semua masalah juga baru dan Anda perlu meneliti bagaimana melakukannya. Tetapi karena Anda telah memecahkan jenis masalah yang sama berulang kali, kebutuhan untuk penelitian turun karena Anda tahu solusi yang berhasil untuk masalah itu.

Maka Anda hanya cenderung untuk meneliti masalah baru atau yang mana yang lama dicoba dan benar tidak lagi berfungsi (telah usang) atau menyebabkan masalah kinerja atau kegagalan. Ketika Anda mulai memahami sistem yang kompleks secara lebih mendalam, Anda tahu Anda tidak punya waktu secara realistis untuk menggunakan teknik-teknik baru setiap kali mereka datang dan Anda telah menemukan melalui pengalaman bahwa sering kali teknik baru tidak hidup hingga itu hype dan menciptakan lebih banyak masalah daripada yang dipecahkan. Jadi, Anda cenderung tidak menggunakan alat dan teknologi baru saat Anda sebenarnya tidak membutuhkannya untuk menyelesaikan masalah.

Tetapi kurang cenderung tidak berarti Anda berhenti belajar atau tidak pernah menggunakan teknik baru, hanya saja Anda lebih bijaksana tentang kapan mereka tepat.

HLGEM
sumber
4

Berikut beberapa detailnya:

  1. Ada tenggat waktu : Programmer terlebih dahulu harus memiliki semua perincian yang diperlukan dari alat yang digunakannya. Membaca beberapa situs web, menemukan beberapa hal keren yang baru, dan kemudian menggunakannya di lingkungan produksi adalah hal yang tidak boleh. Anda hanya tidak memiliki cukup pengalaman dengan alat ini, dan bahkan yang lebih penting, Anda hanya tidak memiliki waktu yang diperlukan untuk mulai mempelajari sesuatu yang baru. Jika Anda ingin beberapa hal baru yang keren, pelajari setengah tahun atau tahun sebelum menggunakannya.
  2. Pastikan Anda mengetahuinya dengan benar sebelum menggunakannya : Beberapa alat baru yang bagus bisa menyenangkan untuk digunakan, tetapi mencari solusi dan kemudian menggunakannya tanpa mempelajarinya dengan benar bisa sangat buruk. Anda hanya tidak memiliki pengalaman yang cukup dengannya. Jika Anda perlu google untuk mengetahuinya berarti Anda hanya tidak mengetahuinya dengan cukup baik untuk memperbaikinya ketika rusak setengah dari sistem.
  3. Menggunakan hal-hal terbaru tidak melakukannya dengan benar : hal-hal baru tidak terbukti teknologi. Tahun depan teknologi mungkin benar-benar hilang, Anda menjadi satu-satunya di dunia yang menggunakannya lagi. Semua orang memperhatikan itu tidak berfungsi. Dibutuhkan kerja keras untuk menghindari peluru perak terbaru, tetapi itu sepadan.
  4. Fokus pada teknik yang merupakan pengetahuan inti Anda : Setiap programmer hanya mengetahui sebagian kecil dari seluruh pengetahuan pemrograman yang tersedia di dunia. Bagian di mana programmer cukup nyaman menggunakannya bahkan lebih kecil. Bagian yang benar-benar berfungsi bahkan lebih kecil. Gunakan hanya pengetahuan yang telah Anda pelajari dengan benar dan Anda tahu itu berhasil. Ini membuat Anda programmer lebih cepat dan menghasilkan kode yang lebih baik.
  5. Jangan men-tweak tanpa henti : Kode sempurna adalah tujuan yang baik, tetapi ini tidak berarti Anda menulis omong kosong terlebih dahulu, dan kemudian men-tweak tanpa henti untuk membuatnya lebih baik secara bertahap. Tulis dengan sempurna pertama kali menggunakan semua pengetahuan baik yang Anda miliki. Percayalah pada dirimu sendiri. Jangan percayai dunia. Tidak ada orang lain yang tahu persis hal yang Anda lakukan. Pendapat mereka tidak masalah. Anda adalah programmer, Anda harus membuatnya bekerja. Dunia tidak bisa melakukannya untuk Anda. Setelah selesai, Berhenti. Jangan menyentuhnya sampai seseorang mengeluh tentang hal itu.
  6. Luangkan waktu untuk mempelajari hal-hal baru : Setiap orang perlu terus-menerus mempelajari hal-hal baru. Masa depan kita tergantung padanya. Tolak saja untuk menggunakannya! Pelajari hal-hal baru, tetapi jangan menggunakannya sampai Anda yakin itu benar-benar berfungsi. Anda akan mendapatkan kesempatan untuk menggunakannya tahun depan, setelah terbukti teknologi. Atau Anda lupa saja, seperti orang lain - hanya barang bagus yang tersisa ...
  7. Jangan kehilangan hal-hal baik : Setelah Anda berhasil membangun sistem besar dan memperbaiki semua masalah di dalamnya, dan mempelajari beberapa teknik yang bagus, hal terburuk yang dapat Anda lakukan adalah membuang pengetahuan itu dan mencari sesuatu yang baru. Anda sudah tahu cara kerjanya, masalah apa yang ada dan bagaimana menyelesaikan masalah tersebut. Membuangnya hanya membuang waktu.
  8. Ikuti perkembangan teknologi baru : salah satu sistem baru akan berhasil. Ini memiliki sesuatu yang secara fundamental lebih baik daripada apa pun di pasar. Anda tidak tahu mana yang merupakan peluru perak. Jika Anda gagal menemukannya tepat waktu, pengetahuan Anda akan usang. Dunia dapat membuat Anda kehilangan semua hal baik dengan menghapus akses ke sistem lama.
tp1
sumber
+1 untuk Jangan men-tweak tanpa henti.
Srisa
3

Ya, saya pernah mengalami hal itu. Biasanya Anda harus melakukan analisis risiko pada berapa banyak waktu yang dibutuhkan untuk mempelajari teknik baru, dan dapatkah Anda memulihkan dan menggunakan teknik yang lebih tua seandainya teknik baru gagal memenuhi harapan. Saya lebih suka mempelajari teknik-teknik baru ketika saya bisa tetapi ketika tekanan menyala dan saya tidak mampu menghabiskan waktu untuk mencoba hal-hal baru yang mungkin gagal, saya tetap menggunakan metode yang sudah terbukti benar.

Secara umum, saya menemukan waktu terbaik untuk mempelajari teknik-teknik baru adalah pada awal proyek baru. Biasanya tidak ada terlalu banyak tekanan dan jika Anda menemukan sesuatu yang baru yang berfungsi dengan baik, Anda dapat dengan mudah mengintegrasikannya dengan sisa proyek, maju. Waktu terburuk untuk mencoba dan mempelajari hal-hal baru adalah beberapa minggu terakhir sebelum penyebaran besar.

FrustratedWithFormsDesigner
sumber
3

Ya, hal-hal baru mengganggu produktivitas

Ya tentu saja. Bahkan untuk skenario kasus terbaik, hal-hal baru memerlukan waktu tambahan karena mereka tidak terbiasa. Sering kali dapat menghabiskan banyak waktu.

Tidak, teknik baru dapat meningkatkan produktivitas

Setiap teknik baru yang memungkinkan Anda mengekspresikan solusi dengan lebih mudah akan meningkatkan produktivitas Anda. Ini bisa sesederhana memindahkan dari if-elseifkondisi besar ke meja pengiriman.

dietbuddha
sumber
1

Ya itu dapat merusak produktivitas. Mantan saya diminta untuk melakukan pekerjaan pemrosesan data yang membosankan sekali, jadi dia memutuskan bahwa akan lebih baik untuk menulis program panjang untuk menangani data dan kemudian menjalankannya - yang akan memperbaiki masalah dalam hitungan detik.

Butuh waktu seminggu baginya untuk menulisnya, tapi masalahnya selesai dalam hitungan detik setelah itu.

Saya pikir hal yang sama berlaku untuk pertanyaan Anda: ya, Anda dapat meningkatkan produktivitas Anda dengan mempelajari hal-hal baru, tetapi Anda masih akan lebih baik menerapkan pengetahuan yang ada pada tugas itu dan secara keseluruhan menyelesaikannya lebih cepat. Siapa yang peduli menemukan dan mempelajari perpustakaan baru, jika Anda dapat menulis sendiri dalam waktu yang lebih singkat.

Jangan lupa juga, sering menyelesaikannya dengan tooling yang ada adalah solusi yang lebih baik daripada memasukkan barang baru. Setiap kali Anda menambahkan yang baru, Anda menambah permukaan perawatan yang diperlukan, yang pada gilirannya memperlambat semua orang (dan dapat membuat kode Anda cukup berantakan - saya memikirkan lapisan teknologi 'baru' yang diwariskan dari waktu ke waktu tetapi masih dalam kode kami membuat hal-hal mengerikan. Melihat ke belakang, akan lebih baik untuk hanya menggunakan cara C lama daripada menambahkan semua COM itu dan semua VB itu dan semua itu. NET dan sekarang menyekop HTML juga)

gbjbaanb
sumber
Sangat tidak setuju: Siapa yang peduli tentang mencari dan mempelajari perpustakaan baru, jika Anda dapat menulis sendiri dalam waktu yang lebih singkat. & Akan lebih baik untuk hanya menggunakan cara C lama daripada menambahkan semua itu ... dan semua itu ... - Itu terlalu rentan kesalahan dan IMHO konservatif.
Martin Ba
@ Martin, tentu saja yang sebaliknya berlaku juga - pada SO Anda membaca banyak orang yang mengatakan 'pelajari hal baru setiap saat', yang seringkali hanya berarti 'menemukan kembali roda yang sama tetapi kali ini dengan alat baru'. Saya mengambil pendekatan pragmatis di mana menyelesaikan pekerjaan mengambil prioritas dari semua yang saya ingin lakukan, atau mungkin membuat hidup lebih mudah pada akhirnya, saya cukup tua untuk tahu bahwa 'akhirnya' lebih sering daripada tidak berarti 'tidak pernah' terutama dengan tingkat perubahan di mana Anda akhirnya mengabaikan hal-hal baru untuk hal-hal yang bahkan lebih baru yang datang.
gbjbaanb