Pada titik apa Anda akan menjatuhkan beberapa prinsip pengembangan perangkat lunak demi uang lebih banyak?


16

Saya ingin melemparkan pertanyaan ini di luar sana untuk secara menarik melihat di mana medianya.

Saya akan mengakui bahwa dalam 12 bulan terakhir saya, saya mengambil TDD dan banyak nilai Agile dalam pengembangan perangkat lunak. Saya sangat kewalahan dengan perkembangan perangkat lunak saya yang jauh lebih baik sehingga saya tidak akan pernah membatalkannya. Sampai ... saya ditawari peran kontrak yang menggandakan gaji saya untuk pulang tahun ini.

Perusahaan tempat saya bergabung tidak mengikuti metodologi spesifik apa pun, tim belum pernah mendengar apa pun seperti bau kode, SOLID, dll., Dan saya jelas tidak akan lolos dengan menghabiskan waktu melakukan TDD jika tim belum pernah sekalipun melihat pengujian unit dalam praktik. Apakah saya menjual? Tidak, tidak sepenuhnya ... Kode akan selalu ditulis dengan "bersih" (sesuai ajaran Paman Bob) dan prinsip-prinsip SOLID akan selalu diterapkan pada kode yang saya tulis sesuai kebutuhan. Namun, pengujian dibatalkan untuk saya, perusahaan tidak sanggup menyerahkan sesuatu yang tidak diketahui kepada tim yang terus terang, bahkan saya memang membuat kerangka kerja pengujian, mereka tidak akan pernah menggunakan / memelihara kerangka kerja pengujian dengan benar.

Dengan menggunakan itu sebagai contoh, poin apa yang menurut Anda seorang pengembang tidak boleh menjatuhkan prinsip keahliannya demi uang / manfaat lain kepada mereka secara pribadi? Saya mengerti bahwa ini bisa menjadi pendapat yang sangat pribadi tentang seberapa peduli seseorang terhadap kebutuhan mereka sendiri, kebutuhan bisnis, dan kepentingan pengerjaan dll. Tetapi orang dapat mempertimbangkan bahwa sebagai contoh pengujian dapat dibatalkan jika perusahaan memutuskan mereka lebih suka memiliki tim uji, daripada memahami pengujian unit dalam pemrograman, apakah itu sesuatu yang bisa Anda maafkan seperti yang saya lakukan? Jadi, mengingat ada sesuatu yang akan Anda jatuhkan, biasanya harus ada biaya yang sama dalam bisnis yang menebus apa yang Anda jatuhkan - mudah-mudahan, kecuali tentu saja Anda cukup banyak untuk melapisi kantong Anda sendiri dan bukan kolaborasi komunitas / sosial; ).

Gandakan uang Anda, kembali ke RAD? Atau berjalan, dan mencari seseorang yang gesit, dan tidak pernah melihat ke belakang ...


19
Bung, apakah Anda sudah dicuci otak? Jangan bodoh dan ambil uang mereka. Terjual habis? Apa yang kamu gila Jika Anda merasa bersalah, Anda dapat berbagi setengah dari penghasilan tambahan Anda dengan saya. Dengan $ ekstra Anda dapat membeli rumah lebih cepat, dan dengan demikian memastikan bahwa Anda memiliki sumber penghasilan pasif (sewa) - itulah yang akan saya lakukan. Dengan begitu Anda bisa berubah-ubah dan menetapkan ketentuan Anda sendiri lebih sering.
Pekerjaan

1
Itu menjadi tempat baru sehingga selalu ada unsur pembelajaran, mungkin saja tidak lama. Membeli rumah adalah kemenangan terbesar bagi saya, bahkan jika saya melakukan ini selama satu tahun dan melanjutkan untuk jangka waktu yang lebih panjang di mana prosesnya benar, dll. Anda benar, Ayub, saya sudah gila untuk menolaknya . Tetapi seluruh situasi mendorong saya untuk memikirkan apa yang mungkin telah dilakukan orang lain dalam karier mereka.
Martin Blore

5
Teman-teman, hampir Anda semua menyuruhnya mengambil uang. Pernahkah terpikir oleh Anda bahwa bagi seseorang pertukaran ini mungkin sama dengan fisikawan yang diminta membuat senjata nuklir atau ahli kimia untuk menghasilkan obat-obatan. OK, kode yang buruk mungkin tidak akan menyebabkan kematian. Tetapi prinsip adalah yang mendefinisikan kita dan karakter kita, berpikir dua kali sebelum mengorbankannya.
Dave O.

1
@Dave: itu tergantung pada skala kritikalitas proyek: en.wikipedia.org/wiki/Cockburn_Scale
rwong

1
Saya akan mengambil pekerjaan itu. Anda selalu dapat mencoba mengubah rekan kerja Anda dari Sisi Gelap.
Tidak ada yang

Jawaban:


25

Karena saya kecanduan unit test lebih dari 10 tahun yang lalu, di sebagian besar tempat kerja saya, saya adalah orang pertama yang pernah mendengar tentang ini. Namun demikian saya terus menulis unit test kecil saya kapan saja saya bisa, dan memperkirakan biaya pengujian unit dalam tugas-tugas saya. Setiap kali seseorang bertanya tentang kebiasaan pengkodean saya, saya memberi tahu apa yang saya lakukan dan mengapa itu berhasil bagi saya. Biasanya setidaknya beberapa orang tertarik, dan akhirnya saya dapat memberikan presentasi mengenai topik tersebut dan membimbing orang untuk menulis unit test pertama mereka.

Anda tidak perlu mulai meyakinkan orang tentang cara lincah pada hari pertama di tempat kerja baru Anda. Cukup ikuti prinsip dalam pekerjaan Anda sendiri sebanyak yang Anda bisa. Jika Anda melakukannya dengan baik, Anda akan memberikan kode yang lebih baik. Jika rekan kerja dan / atau manajemen Anda menyadarinya, mereka akan bertanya bagaimana Anda melakukannya. Maka Anda bisa memberi tahu mereka.

Memperbarui

Sebagian besar pengembang berpengalaman (dan manajer) telah melihat tren dan mode datang dan pergi, sehingga mereka tidak senang dengan kata kunci terbaru. Namun, jika Anda dapat menunjukkan bahwa pendekatan tertentu (alat, cara berpikir) benar-benar bekerja dalam praktik, dalam proyek yang sebenarnya , orang-orang yang peduli pada kerajinan mereka hampir pasti akan duduk dan mendengarkan. Tetapi jika Anda tidak memiliki orang-orang seperti itu di tim Anda, mungkin sekarang saatnya untuk mencari tempat yang lebih baik ...


Peter terima kasih Senang mengetahui Anda pernah mengalami hal semacam ini sebelumnya dan saya pasti akan menerima saran Anda.
Martin Blore

17

Di sinilah saya pikir semua pengembang juga harus tahu sedikit manajemen proyek. Semuanya merupakan pertukaran antara waktu, uang, dan sumber daya. Anggap diri Anda sumber daya.

Dalam 12 tahun pemrograman saya, saya tidak berpikir saya pernah menyelesaikan proyek dan menganggapnya selesai, atau lengkap dalam pikiran saya. Selalu ada sesuatu yang saya harap bisa saya lakukan dengan lebih baik, atau lebih bersih. Butuh waktu sangat lama bagi saya untuk menyadari bahwa ini adalah akibat dari kompromi tersebut.

Jadi jika Anda berpikir untuk beralih pekerjaan hanya karena metodologi tidak ada, saya akan berpikir lagi jika saya adalah Anda. Imbalan ini konstan dan berlaku untuk semua pengembang perangkat lunak. Bahkan pengembang game yang paling berdedikasi berharap mereka dapat melakukan beberapa hal lagi, atau mempraktikkan metodologi yang berbeda lagi jika mereka punya kesempatan.

Saya akan mengatakan Anda harus melihat praktik pengembangan tangkas Anda dan menyadari bahwa Anda dapat melakukannya bahkan pada tingkat mikro. Tentu saja rekan setim Anda mungkin tidak aktif melakukan apa pun yang mereka inginkan, tetapi kepuasan pribadi Anda akan lebih besar dan Anda pasti akan menghasilkan kode yang lebih baik daripada mereka dalam jangka panjang. Lalu ketika manajer datang dan bertanya mengapa kode Anda jauh lebih baik, Anda memiliki kesempatan untuk mengonversi tim :)

Tetapi jika Anda tidak menyukai orang-orang, atau pekerjaan maka saya pikir Anda sudah tahu jawabannya. Tapi saya sangat ragu ada orang yang akan berjalan di dalam ruangan dan memberitahu Anda untuk tidak menggunakan prinsip-prinsip pengembangan lincah saat coding ... jika mereka ... lari berteriak


s / sumber daya / kualitas / g = waktu dan uang memenuhi syarat sumber daya. Keseimbangan yang sebenarnya adalah waktu, biaya, dan kualitas. Dengan kata lain: Saya bisa melakukannya dengan cepat, saya bisa melakukannya dengan baik, saya bisa melakukannya dengan cepat, memilih dua.
asoundmove

10

Jangan pernah menjatuhkan sesuatu yang akan membuat Anda tidak bahagia dalam jangka panjang. Tentu saja, Anda bisa mulai di no-mans-land dan mencoba membuat tim bergerak ke arah Anda. Jika Anda bersedia melakukan upaya di dalamnya dan pekerjaan itu sepadan, ini bahkan bisa menjadi tantangan yang menarik.

Tetapi jika Anda harus meninggalkan hal-hal yang tetap menyenangkan dalam pengkodean (atau pekerjaan apa pun dalam hal ini), pengalaman saya adalah bahwa Anda akan berjalan cepat atau lambat. Saya belajar bahwa frustrasi tidak boleh dianggap remeh ...


4
+1 "Saya belajar bahwa frustrasi tidak boleh dianggap remeh ..." - terlalu benar. Frustrasi lama berjalan jelas merupakan pembunuh pekerjaan.
Martin Blore

7

Orang-orang di pekerjaan terakhir Anda sudah tahu tentang TDD, SOLID, dll. Itu hebat. Saya yakin Anda menikmati bekerja di sana dan belajar banyak. Sekarang Anda memiliki kesempatan untuk mengajarkan konsep-konsep tersebut (sambil menghasilkan banyak uang pada saat yang sama). Dalam pengalaman saya, harus mengajar orang lain konsep selalu membantu saya untuk mempelajarinya secara lebih rinci. Sabar saja dengan mereka, dan teruslah mendorong konsep Anda satu per satu. Ketika Anda frustrasi, pulang dan hitung uang Anda. Atau cari dukungan di SE.


3

Saya harus mengakui bahwa saya mungkin dalam hal itu. Sebagai pekerja lepas, apa pun yang klien anggap sebagai metodologi yang tepat untuk proyek tersebut, tidak masalah bagi saya. Itu tidak berarti bahwa uang adalah satu-satunya hal yang saya pedulikan, tetapi keputusan tentang apa yang harus dilakukan dan apa yang harus ditinggalkan tergantung pada klien. Saya tidak akan menerima kondisi kerja yang buruk (keras, berjam-jam dll.)


2

Saya ingin mengutip mantan rekan saya. Dia mengatakan, setiap kali dia mencari pekerjaan, atau proyek paruh waktu, ada tiga kriteria yang harus dipenuhi oleh proyek:

  • Pasti menyenangkan untuk bekerja dengannya
  • Itu harus bermanfaat untuk pengembangan kompetensi Anda (tidak yakin ini cara yang tepat untuk mengungkapkannya)
  • Itu harus membayar dengan baik

Ketika saya membaca pertanyaan Anda, proyek ini hanya memenuhi kriteria terakhir.

Karena Anda semakin menyukai TDD (seperti halnya saya), saya pikir Anda akan berkeliling setiap hari dan berharap bahwa semua rekan kerja Anda telah mencapai wawasan yang sama seperti Anda. Jadi kriteria pertama mungkin tidak akan terpenuhi.

Kedua, jika Anda ingin mengejar proyek TDD, dan mungkin mendapatkan lebih banyak pengalaman dengan membangun tim lincah, maka mengerjakan proyek ini tidak akan membantu Anda memperkuat keterampilan itu. Karenanya yang kedua mungkin juga tidak akan terpenuhi.

Jadi secara pribadi, jika saya berada di posisi Anda, dan saya tidak dalam posisi untuk membantu memperkenalkan TDD ke perusahaan, saya akan mencari di tempat lain.


Saya juga suka mempertimbangkan lokasi. Namun, walaupun hanya dengan ketiganya, Anda tidak sering menemukan ketiganya dalam satu proyek. Saya biasanya puas dengan dua. Dan biasanya dua berbeda setiap kali.
Mawg mengatakan mengembalikan Monica

2

Tidak pernah.

Hidup ini terlalu singkat (terutama seiring bertambahnya usia) untuk melakukan hal-hal yang akan Anda benci.

Tentu saja, itu membuat lebih sulit untuk berganti pekerjaan, dan ada lebih sedikit tempat untuk bekerja.

Tapi setidaknya hanya kode lawas yang berbau tidak enak. (Dan saya memiliki otonomi, sehingga kami dapat melakukan hal-hal yang masuk akal seperti menghabiskan satu minggu menghilangkan peringatan kompiler dari basis kode warisan ....)


2

Singkatnya, metodologi pengembangan bukan bagian dari Anda. Itu bukan agama dan bukan siapa Anda. Itu adalah alat. Lakukan apa yang diperintahkan, bagaimana Anda diberitahu dan hasilkan uang ekstra. Ribuan sistem dikembangkan dan berjalan hari ini tanpa TDD, Code Smell, dll. Dalam beberapa tahun tidak ada yang akan tahu apa arti istilah-istilah ini karena metodologi datang dan pergi lebih sering daripada bus kota. Bekerja keras seperti yang diperintahkan kepadamu dan ambil uang itu dihargai kapan saja dan sepanjang waktu :)


1

Pastikan bekerja dengan tim baru adalah investasi yang baik untuk waktu Anda.

Mungkin mereka bekerja dengan cara yang lebih efisien daripada yang Anda temui sejauh ini? Jika demikian bekerja dengan mereka akan menjadi pengalaman belajar yang hebat bagi Anda (maka investasi yang baik)

Di sisi lain, metodologi tim baru mungkin sedikit nilainya bagi Anda (terlalu banyak "koboi pengkodean" dll). Dalam hal itu, uang tambahan mungkin tidak sepadan (kecuali itu adalah pra-IPO awal atau sesuatu yang luar biasa). Anda mungkin tidak akan belajar banyak ... dan Anda berisiko kehabisan tenaga.


1

Saya tidak akan bekerja di suatu tempat yang tidak memungkinkan saya untuk bekerja seperti yang saya inginkan. Maksud saya, saya tidak ingin dikelola mikro.

Saya bekerja dengan asumsi bahwa saya bagus dalam pekerjaan saya, dan jika Anda memberi saya beberapa tugas, saya akan menyelesaikannya dengan efisien dan efektif. Bagaimana saya menerapkannya, asalkan saya tidak melanggar pedoman dan pola kode Anda, terserah saya. Itu bagian yang menyenangkan dari pekerjaan saya.

Jika saya ingin menguji unit setiap kelas saya menulis maka itu mungkin menjadi masalah, tetapi menulis tes unit umumnya baik-baik saja, asalkan saya masih memenuhi tenggat waktu. Saya berharap bahwa pendukung TDD akan berpendapat bahwa tes unit penulisan sebenarnya meningkatkan produktivitas (nanti, dll). Jika saya berada di sepatu Anda, saya akan menulis beberapa unit test yang akan menyelamatkan saya beberapa waktu menuruni trek (mungkin kurang bug, perbaikan lebih mudah). Jika Anda menginvestasikan kembali waktu yang disimpan ke lebih banyak tes, maka itu akan bertambah menjadi lebih banyak waktu yang dihemat dan akhirnya Anda dapat duduk dengan senyum lebar ketika Anda memiliki serangkaian tes yang luar biasa, dan dapat dengan mudah memeriksa perubahan kode Anda ketika beberapa jam baru ke-11 persyaratan masuk

Jika saya tidak bisa melakukan itu, maka saya tidak tahu apakah saya ingin bekerja di sana.

Apa yang saya katakan adalah bahwa saya pikir harus ada memberi dan menerima dalam hal ini - sedikit negosiasi. Semakin banyak mereka membayar saya, semakin sedikit kebaikan non-moneter yang saya harapkan. Tapi saya selalu membutuhkan tingkat otonomi dan harga diri, terutama ketika tidak perlu menolak. Saya akan membatalkan prinsip lain selama saya memiliki sedikit otonomi. Bagaimanapun, apa yang tampak seperti metodologi gila yang terbelakang mungkin adalah hal terbaik yang pernah Anda lakukan!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.