Lihat pertanyaan saya yang lebih baru: Apakah pemrograman sebagai profesi dalam perlombaan ke bawah?
Toko terakhir saya tidak memiliki proses. Agile pada dasarnya berarti mereka tidak memiliki rencana sama sekali tentang bagaimana mengembangkan atau mengelola proyek mereka. Itu berarti, "hei, ini pekerjaan yang berat. Lakukan dalam dua minggu. Kita cepat dan gesit."
Mereka merilis barang-barang yang mereka tahu memiliki masalah. Mereka tidak peduli bagaimana hal-hal ditulis. Tidak ada ulasan kode - meskipun ada beberapa pengembang. Mereka merilis perangkat lunak yang mereka tahu buggy.
Di pekerjaan saya sebelumnya, orang-orang memiliki sikap selama itu berhasil, tidak apa-apa. Ketika saya meminta penulisan ulang beberapa kode yang saya tulis saat kami sedang mengeksplorasi spec, mereka menolaknya. Saya ingin menulis ulang kode karena kode diulangi di banyak tempat, tidak ada enkapsulasi dan butuh waktu lama bagi orang untuk mengubahnya.
Jadi pada dasarnya, kesan saya adalah ini: pemrograman bermuara pada hal berikut:
- Membaca beberapa buku tentang alat / teknologi terbaru
- Melempar kode bersama berdasarkan ini, menghindari penulisan kode individual karena perusahaan tidak ingin "mempertahankan kode kustom"
- Menampilkannya dan beralih ke hal berikutnya, "selama itu berhasil."
Saya selalu mengatakan pada diri sendiri bahwa pekerjaan berikutnya saya akan mendapatkan toko yang lebih baik. Itu tidak pernah terjadi. Jika ini dia, maka saya merasa mandek. Teknologi selalu berubah; jika satu-satunya pengembangan profesional di sini adalah membaca buku teknologi MS Press terbaru, lalu apa yang telah Anda bangun dalam 10 tahun tetapi pengetahuan yang dangkal dari berbagai teknologi? Saya khawatir tentang:
- Cara terbaik untuk memiliki standar profesional
- Bagaimana mengembangkan pengetahuan dan pengalaman yang berarti dalam situasi ini
Jawaban:
Anda secara tidak langsung menemukan apa yang saya pikir adalah aspek kunci untuk menjadi pengembang yang baik : mencapai keseimbangan antara " selama ini berhasil " dan kode yang dirancang dengan baik dan elegan.
Sama seperti dalam politik, jauh lebih mudah untuk mempertaruhkan posisi Anda di salah satu ujung spektrum dibandingkan mengambil posisi yang bernuansa di tengah. Mayoritas pengembang yang saya temui jatuh ke dalam salah satu dari dua kategori: pengodean koboi dan astronot arsitektur. Saya mencoba untuk mencapai keseimbangan di antara keduanya. Tidak semudah kedengarannya.
Untuk lebih langsung menjawab pertanyaan Anda, ya, saya pikir "selama ini berhasil" sering menjadi norma. Tetapi lihatlah dengan cara lain: Anda berada dalam posisi yang sangat baik untuk mendidik kolega Anda dan mencoba memperkenalkan beberapa praktik yang lebih baik. Tapi jangan terlalu ekstrem, dan ingat mengapa kita semua melakukan ini: untuk menyelesaikan masalah pelanggan kita.
sumber
remember why we're all doing this: to solve our customer's problems.
>> Di pekerjaan saya sebelumnya, orang-orang memiliki sikap selama itu berhasil, tidak apa-apa.
Mungkin saya minoritas di sini tetapi saya memiliki sikap yang sama dan saya sangat percaya bahwa untuk menulis ulang sesuatu harus ada bukti yang jelas mengapa kita membutuhkan ini. Dan saya tidak bermaksud sesuatu seperti "uf, saya tidak suka bagaimana itu dikodekan" - setiap pengembang memiliki preferensi tentang kode. Seharusnya ada beberapa masalah dengan bagian yang ingin kita tulis ulang:
sumber
I strongly believe that to rewrite something there should be clear evidence why do we need this
Agile tidak bertanggung jawab atas manusia yang memutuskan untuk merilis perangkat lunak kereta; manusia.
Yang mengatakan, Anda memberi banyak kepentingan untuk kualitas, dan itu bagus. Saya yakin Anda seorang perfeksionisme dan Anda peduli dengan nilai Anda sendiri jika Anda tidak mengejar teknologi terbaru.
Masalahnya adalah bahwa perfeksionisme mengarah pada prokrastinasi dan prokrastinasi menyebabkan mediokritas .
Itu sebabnya bisnis akan memprioritaskan hal-hal seperti waktu untuk memasarkan dan menggunakan gesit untuk memberikan nilai dengan cepat dan pada kecepatan yang dapat diprediksi.
Karena Anda tidak menggambarkan strategi bisnis perusahaan Anda, saya pikir Anda harus mulai dengan menanyakan hal itu kepada manajer Anda.
Dengan menjadi selaras pada tujuan dan rencana mereka (mereka mempekerjakan Anda untuk membantu mereka mencapainya), Anda akan berada dalam posisi yang lebih baik untuk memahami bagaimana Anda dapat berkontribusi pada mereka daripada berfokus pada tujuan Anda sendiri dan pribadi.
Saya yakin bahwa dengan mencoba
understand
nilai mereka, Anda akan dapat membagikan milik Anda, dan itu akan menjadi awal dari kolaborasi yang bermanfaat.Dan jika Anda menemukan mereka tidak tahu apa yang mereka lakukan, satu-satunya pilihan Anda adalah berhenti .
sumber
The problem is that perfectionism leads to procrastination and procrastination leads to mediocrity.
Itu semua tergantung pada apa yang Anda bangun. Jika Anda membuat sebuah microsite yang hanya akan online selama sebulan, dan Anda memiliki sembilan hari untuk membangunnya: maka ya, selama itu berhasil akan cukup.
Jika Anda menulis algoritma fly-by-wire untuk sistem FA-18, maka lebih baik dibuat sesempurna mungkin.
Jadi seperti halnya dengan sebagian besar jawaban teknologi ... itu tergantung.
sumber
Itu tergantung pada perusahaan. Namun, banyak perusahaan memiliki persaingan yang serius dan tekanan waktu. Itu salah satu alasan umum. Yang lain akan menjadi beban kerja yang besar, berpotensi tanpa staf yang cukup. (Ada beberapa alasan yang sangat bagus untuk kekurangan pegawai, yang tidak selalu merupakan kesalahan perusahaan.) Yang mengatakan, beberapa organisasi tidak dapat mengelola jalan keluar dari kantong kertas basah.
Saya pikir aturan 80/20 berlaku di sini. Pada dasarnya, Anda perlu memasang dengan 80% jelek dan bekerja dengan cara Anda menjadi 20%. Namun, sadari bahwa bahkan mereka harus melakukan pertukaran. Dalam bisnis, biasanya tidak masalah bahwa Anda benar. Itu penting bahwa Anda memilikinya sekarang.
sumber
Itu akan agak sial tetapi mungkin ada beberapa kegagalan spektakuler untuk dicatat dalam dekade itu. Saya telah melihat banyak tempat di mana saya dapat mengingat hal-hal yang agak spesifik yang saya sukai tentang bekerja di sana atau tidak menikmati dan dengan demikian akan mempertanyakan memiliki hal itu lagi di tempat kerja baru saya. Kadang-kadang mungkin ada praktik baru untuk dicoba seperti jika sebuah perusahaan mencoba untuk mengimplementasikan Scrum atau mengadopsi pendekatan Pengembangan yang Didorong oleh Tes, itu mungkin peluang tetapi tidak selalu melihat pengembangan profesional karena tidak dalam pengaturan ruang kelas formal.
Saya tahu berbagai tempat di mana "selama itu bekerja" adalah umum bersama dengan berbagai strategi pengkodean koboi. Dalam beberapa kali permulaan, saya telah melihat mentalitas seperti ini yang masuk akal jika perusahaan masih sangat muda sehingga mereka masih berusaha untuk menghilangkan ide tentang apa yang sebenarnya mereka coba lakukan. Di perusahaan lain saya telah bekerja, ada lebih banyak proses dan kedewasaan yang bisa sangat baik meskipun tidak selalu mudah untuk menemukan saya takut. Beberapa tempat memiliki beberapa proses yang harus saya lihat dan pergi, "Saya suka itu. Saya akan ingat itu untuk situasi kerja nanti," dan yang lain ke mana saya pergi, "Saya benar-benar tidak suka itu. Saya akan perhatikan untuk mencoba menghindari itu di masa depan. "
sumber
Saya bekerja di toko seperti ini untuk sementara waktu hanya pada titik di mana ia mengejar mereka. Ada dua atau tiga tahun aplikasi lama dengan bug yang diketahui bahwa mereka benar-benar tidak dapat memecahkan. Pikirkan loop panjang 4.000 garis dengan perhitungan berjalan untuk lebar dan ketinggian tata letak. Memperbaiki sepotong kode untuk memperbaiki masalah dalam satu contoh akan menghasilkan dua puluh masalah di tempat lain karena pengembang sebelumnya memiliki masalah serupa yang dibantu oleh band dengan sewenang-wenang menyesuaikan hasil perhitungan dengan angka ajaib. Kode tidak dapat digambarkan sebagai selain racun.
Saya akhirnya diberi proyek baru yang menurut atasan saya bisa menggunakan kode yang ada ini untuk menangani tata letak. Entah bagaimana saya meyakinkan dia untuk membiarkan saya "mengubahnya" sehingga dia memberi saya waktu ekstra. Saya menggunakan waktu itu sebagai gantinya menulis perpustakaan yang dirancang dengan baik untuk membantu tata letak. Bug dalam proyek baru ini benar-benar membutuhkan waktu 10 detik untuk menyelesaikannya. Saya bisa mengidentifikasi masalah bahkan sebelum melihat kode untuk melihat apa yang salah.
Saya pikir ini akan menghasilkan titik balik bagi manajer saya, tetapi yang saya dapatkan hanyalah tepukan di punggungnya dan dia pada dasarnya mengatakan kepada saya bahwa "Cara Anda juga berfungsi, saya kira."
Sejak itu saya mulai bekerja di toko lain dan semuanya menjadi lebih baik di sini. Intinya adalah, Anda tidak dapat mengubah pikiran mereka. Pergilah bekerja di tempat lain.
sumber
Saya masih memiliki harapan, bahwa dalam ekonomi ada semacam proses evolusi, yang cepat atau lambat akan menendang perusahaan semacam itu keluar dari bisnis. Tetapi mungkin kecepatan tinggi kemajuan teknologi menghasilkan terlalu banyak relung baru, sehingga pesaing yang lemah pun masih dapat menemukan "makanan" yang cukup.
Jika Anda ingin meningkatkan peluang Anda untuk bekerja di tempat yang baik, carilah perusahaan yang memiliki produk yang mereka jual kepada banyak pelanggan alih-alih menulis sesuatu yang baru setiap beberapa minggu. Seharusnya ada lebih banyak minat dalam memiliki basis kode yang baik dan mampu menambahkan fitur baru tanpa melanggar kode yang ada sepanjang waktu.
sumber
Mengingatkan saya pada pasangan utama saya dari perguruan tinggi. Dia mengambil kelas desain VLSI, dan untuk pekerjaan rumahnya yang pertama muncul dengan komponen yang ada di urutan lebar mikrometer dan satu mil panjang. Simulasi berlalu dengan sempurna.
Jawabannya kepada kritikusnya adalah: "Yang saya tahu adalah omong kosong saya bekerja.".
sumber
Norma yang cukup baik adalah prinsip Pareto
Saya memiliki pengalaman dari proyek dengan aturan 80-20 dan itu bekerja dengan sangat baik. Saya pikir jawaban untuk pertanyaan ini "Di mana Anda menarik garis kesempurnaan Anda" juga bisa membantu.
Tautan ke Sumber
sumber
Jangan tersinggung, tetapi sebagai manajer saya membaca pernyataan itu di suatu tempat di sepanjang baris:
"Ketika saya diminta dibayar dua kali untuk menulis ulang beberapa kode yang sudah saya tulis, perusahaan saya tidak mau membayar. Saya ingin uang tambahan untuk membersihkan kekacauan yang saya buat ketika saya menulisnya pertama kali, dan rekan-rekan marah kepada saya karena membuat hidup mereka sulit. "
Jika itu kode Anda sendiri yang Anda keluhkan - Anda tidak punya banyak hal untuk dipertanggungjawabkan.
MEMPERBARUI
Saya mengerti bahwa POV ini tidak populer. Tapi, saya pikir itu sama sekali tidak sesuai dengan tanggung jawab dan sikap pengembang profesional.
Jika Anda menulis kode bersih untuk memulai (dan ada banyak alasan untuk melakukan ini - terlepas dari apakah Anda berpikir kode Anda akan melihat penggunaan produksi atau tidak), maka Anda akan memiliki masalah ini jauh lebih jarang.
Jika Anda memasukkan kode bersih dan waktu refactoring dalam perkiraan Anda, Anda juga akan memiliki jadwal untuk menjaga agar basis kode tetap rapi. Jika, karena tekanan jadwal, Anda tidak mendapatkan waktu yang diperlukan - perkiraan masa depan Anda akan naik sebagai akibat dari berurusan dengan utang teknis yang timbul.
Pada titik tertentu, perkiraan masa depan Anda (atau ketidakpastian di sekitar perkiraan Anda) akan memberi Anda pengaruh untuk membantah penulisan ulang (ketika manajer Anda meminta Anda untuk membuat prosesnya berjalan lebih cepat). Jika tidak, maka terimalah bahwa bisnis telah menerima perkiraan Anda dan lebih suka membayar biaya yang sedang berlangsung daripada untuk penggantian. Itu murni keputusan bisnis - bukan keputusan teknis.
Ingat, waktu untuk menegosiasikan jadwal adalah sebelum Anda menulis kode - bukan setelahnya. Setelah kode ditulis (dan "berfungsi"), pelanggan, manajer, dan eksekutif tidak ingin melihat tagihan lain untuk "pemeliharaan" yang mendekati atau melebihi biaya asli. Jika Anda merasa kuat tentang hal itu seperti yang Anda pikirkan tentang bisnis, jangan ragu untuk menulis ulang pada waktu Anda sendiri - itulah yang Anda minta agar dilakukan oleh bisnis.
Dari sudut pandang manajer Anda, memberi Anda jadwal untuk menulis ulang menempatkan pantatnya di telepon. Ketika Anda gagal memberikan, atau meningkatkan produktivitas sebanyak yang Anda katakan - maka dia yang memegang tas itu. Dibandingkan dengan ketidaknyamanan yang relatif kecil saat mendengarkan Anda mengeluh, tebak yang mana yang akan lebih disukai.
sumber
Jika itu jenis pekerjaan yang bisa Anda peroleh, fokus saja untuk menulis kode yang lebih baik setiap kali, daripada kembali dan menulis ulang kode lama. Masih ada kisaran kualitas yang bisa Anda pindahkan dalam ranah perekatan paket pihak ketiga.
Jika Anda punya waktu dan ingin memperbaiki kode komponen yang ada yang Anda pertahankan, tidak bisakah Anda melakukannya tanpa meminta izin, selama apa yang Anda lakukan berfungsi? Faktor waktu menjadi perkiraan Anda untuk proyek berikutnya yang menggunakan komponen.
Untuk pemrograman tingkat bawah, jika Anda tidak bisa mendapatkan kepuasan belajar dari pekerjaan Anda, mungkin sekarang saatnya untuk melihat proyek sumber terbuka?
sumber
q303, saya menemukan pertanyaan Anda menarik dan merasa Anda mungkin menemukan pertanyaan Programmer ini layak dibaca, tentang bagaimana meyakinkan manajer untuk membiarkan pengembang mengatasi utang teknis.
Saya pikir secara umum, ya, itu adalah norma. Memahami bahwa perangkat lunak yang berfungsi tetapi kurang optimal jauh lebih baik daripada perangkat lunak yang tidak berfungsi. Ada juga argumen bahwa definisi "bekerja" dapat bervariasi berdasarkan persepsi dan bias masing-masing individu. Ketika Anda menerapkan sistem baru, selalu ada seseorang yang akan mengatakan bahwa mereka merasa sistem yang lama lebih baik. Dan ketika Anda berbicara dengan pengembang, ia cenderung enggan mengaku telah bekerja pada perangkat lunak yang jelek.
sumber