Mengapa pengembang harus selalu mengikuti perkembangan teknologi dan metodologi? [Tutup]

28

Saya selalu diberi saran bahwa pengembang harus tetap up to date dengan teknologi terbaru - hal-hal seperti webrtc, pembaruan pada html5 dan css3 dan perpustakaan js baru, metodologi perangkat lunak seperti TDD, DDD, dan BDD.

Pertanyaannya adalah mengapa ? Mengapa kita perlu terus memperbarui diri? Tidak bisakah kita bertahan dengan apa yang kita ketahui dan menjadi lebih baik dengan itu?

Wern Ancheta
sumber
16
Dalam pengembangan perangkat lunak, ada dorongan untuk melakukan keduanya: mengenal beberapa teknologi secara mendalam dan mengikuti perkembangan teknologi baru yang terus berubah. Ini adalah sebagian alasan mengapa sangat sulit untuk menemukan pengembang yang baik.
joshin4colours
2
Untuk mengatasi suara penutupan sejauh ini, saya pikir ini adalah pertanyaan yang adil, dan saya tidak dapat menemukan duplikat yang tepat di situs. Coba saja perhatikan jawaban yang buruk sehingga kita bisa membersihkannya.
maple_shaft
4
Saya gagal melihat mengapa pemrogram sebagai kelas harus "tetap up to date" dengan "teknologi web" terbaru untuk apa pun kedua konsep itu sebenarnya berarti dalam praktek. Pikiran yang ingin tahu dan pembelajaran terus-menerus tentu saja penting untuk pertumbuhan pribadi dalam profesi apa pun, tetapi dilema salah dengan menganggap "teknologi web" adalah satu-satunya poros untuk pertumbuhan pribadi membuat pertanyaan ini menjadi terlalu penuh dengan pertanyaan untuk selera saya. Melihat secara kritis jawaban-jawaban yang dipilih dengan suara tinggi - apakah ada di antara mereka yang menjawab pertanyaan selain menawarkan bungkam dorongan dan slogan motivasi untuk "tetap di dalam permainan"?
bmike
1
@bmike: Saya setuju dengan Anda: tentu saja orang yang ingin tahu ingin mempelajari hal baru setiap saat. Dalam hal ini, hal baru berarti sesuatu yang tidak Anda ketahui, yang mungkin merupakan bahasa pemrograman yang menarik yang telah ada selama 40 tahun atau lebih (mis. Lisp). Industri mendorong kami untuk memperbarui dan menganggap hal-hal terbaru menarik, lebih efektif secara default. Poin utama saya: mempelajari teknologi yang tidak Anda butuhkan hanya karena teknologi baru itu buang-buang waktu.
Giorgio
1
@RobertHarvey Bukannya pertanyaannya adalah "Bagaimana?" atau apa?" karena itu akan menjadi NC. Itu bertanya MENGAPA dan saya pribadi merasa itu relevan dan dapat dijawab.
maple_shaft

Jawaban:

42

Teknologi baru muncul karena suatu alasan. Biasanya alasan itu karena mereka lebih efisien atau kuat dalam menyelesaikan tugas tertentu.

Masih ada nilai yang bisa didapat dalam bertahan dengan teknologi lama demi sistem warisan, tetapi ketika mereka akhirnya mencapai akhir hidup Anda, Anda akan berada di belakang permainan.

Di luar alasan bisnis, terus-menerus mempelajari teknologi baru membuat Anda terus melangkah dan akan membuka mata Anda terhadap berbagai cara yang berbeda dalam melakukan tugas, bahkan dalam teknologi lama dan sebagainya, seterusnya.

Anonim
sumber
3
+1: mempelajari teknologi baru sering kali membantu, bahkan jika Anda tidak pernah secara langsung menerapkan teknologi itu: pandangan dan perspektif baru yang diberikannya tentu dapat diterapkan menggunakan teknologi "lama".
Joachim Sauer
7
Di sisi lain, melompat pada setiap teknologi baru juga bisa menjadi kontra-produktif, karena banyak dari mereka menghilang secepat mereka muncul.
Gordon Bell
@GordonBell - Benar ... Saya tidak bisa berbicara untuk orang lain, tapi saya biasanya tidak menguji air dengan teknologi baru sampai mereka setidaknya menunjukkan tanda-tanda atau potensi menjadi lebih 'mainstream' - yang membawa manfaat dari banyak dokumentasi untuk membantu pendidikan dan basis pengguna, dll.
Anonim
Mereka sering muncul untuk memenuhi kebutuhan di dunia akademis, tetapi tidak di dunia nyata. Anda harus menulis tesis Anda tentang sesuatu .
dbracey
@dbracey: Benar, dan dua puluh tahun kemudian beberapa perusahaan besar dapat menemukan tesis ini, sementara itu para peneliti telah mengembangkan beberapa teknologi matang dan mulai menjualnya sebagai teknologi baru .
Giorgio
27

Meskipun tentu saja mungkin untuk membangun karier di tumpukan teknologi tunggal jika Anda beruntung 1 , itu hampir pasti bahwa teknologi akan berubah lebih dari sekali selama waktu ketika Anda sedang bekerja. Anda dapat (dan Anda harus) menjadi lebih baik pada apa yang sudah Anda ketahui, tetapi mempelajari hal-hal baru sebelumnya akan membantu Anda mengurangi kurva pembelajaran ketika perubahan teknologi berikutnya datang ke sudut industri Anda.

Ada sisi yang kurang jelas: belajar hal-hal baru sangat sering membantu Anda melihat hal-hal yang sudah Anda ketahui dari sudut pandang yang berbeda, dengan cara yang sama dengan mempelajari bahasa baru membantu Anda mempelajari lebih banyak hal tentang bahasa Anda saat ini 2 .

Akhirnya, nilai hiburan murni untuk mempelajari hal-hal baru tidak boleh diremehkan: bagi saya, itu mengalahkan menonton TV.


1 Misalnya, dengan memilih COBOL di atas PL / I pada awal karier Anda pada tahun 1965.

2 Ini berfungsi untuk bahasa alami dan bahasa pemrograman.

dasblinkenlight
sumber
1
+1 @dasblinkenlight Saya suka pernyataan ini: "... mempelajari hal-hal baru sebelumnya akan membantu Anda mengurangi kurva belajar ketika perubahan teknologi berikutnya datang ke sudut industri Anda." Inilah sebabnya saya sekarang belajar Opa
Anthony
12

Tidak bisakah kita bertahan dengan apa yang kita ketahui dan menjadi lebih baik dengan itu?

Anda bisa , tetapi sangat mudah untuk jatuh ke dalam perangkap karena tidak pernah ingin mempelajari sesuatu yang baru. Prospek pekerjaan Anda berkurang, rekan tim Anda berhenti ingin bekerja dengan Anda karena Anda "programmer yang benar-benar tidak terhubung".

Sebagian besar, Anda harus menjaga keseimbangan. Mencoba mempelajari segala sesuatu yang baru setiap saat akan membuat Anda menjadi miskin dalam banyak hal, dianggap sebagai penggerutu yang bertingkah. Pelajari beberapa hal dengan baik, dan fokuskan setidaknya untuk mengetahui apa yang ada, bahkan jika Anda tidak dapat menggunakannya secara efektif.

Telastyn
sumber
2
Tidak ada yang membuat saya lebih marah di tempat kerja, daripada harus terjebak dalam tim dengan seorang programmer yang menulis kode seperti yang dia lakukan 10 tahun yang lalu. Kerangka kerja telah berkembang. Alat telah berkembang. Apakah Anda tidak ingin membuat pekerjaan Anda lebih mudah? Anda tidak melihat tukang kayu menggunakan bor engkol tangan dan gergaji tangan sepanjang hari ketika mereka memiliki alat-alat listrik sekarang. Mereka berevolusi. Dan seperti setiap profesi, alat-alat baru diciptakan untuk menyelesaikan kebutuhan. Tidak menggunakan alat baru, dan mencoba meretas sesuatu bersama-sama dengan cara lama biasanya merusak kualitas apa yang sedang dibangun. Baik itu dalam kode atau kayu.
CaffGeek
2
"Kerangka kerjanya telah berevolusi. Alat-alatnya telah berevolusi. Apakah Anda tidak ingin membuat pekerjaan Anda lebih mudah?": Ada cara tak terbatas untuk menyelesaikan masalah tertentu dan kadang-kadang alat atau bahasa baru tidak lebih baik tetapi hanya setara dengan yang lama. Tetapi Anda memiliki lebih banyak pengalaman dengan yang lama sehingga Anda bisa lebih produktif dengannya. Kami menganggap terlalu sering bahwa BARU == LEBIH BAIK. Sebaliknya, kita harus selalu menantang pernyataan ini.
Giorgio
2
@Giorgio - Adalah satu hal untuk memiliki skeptisisme sehat tentang 'hal besar berikutnya'. Adalah hal lain untuk menempatkan kepala Anda ke pasir saat kemajuan nyata berlalu begitu saja. Yang belakangan itu terlalu umum.
Telastyn
4
@ Telastyn: Saya akan menetapkan 50% untuk kedua sikap: kadang-kadang saya mendapat kesan bahwa teknologi baru didorong hanya karena itu baru. Dan itu hanya cara alternatif (bukan yang lebih baik) dalam melakukan sesuatu. Jadi kita harus menghabiskan berbulan-bulan menjadi mahir dengan teknologi baru dan setelah itu kita kembali sama produktifnya seperti dulu dengan yang lama. Tapi tentu saja, Anda benar bahwa menempatkan kepala Anda ke pasir juga salah dan orang harus selalu berhati-hati untuk hal-hal baru.
Giorgio
@Iorgio, bagaimana Anda tahu apakah cara baru itu lebih baik atau tidak jika Anda tidak belajar atau mencobanya?
CaffGeek
7

Yah itu mungkin karena kenyataan bahwa Anda adalah seorang pengembang web dan teknologi di bidang itu sangat mudah berubah dengan bahasa, platform, alat, dan metodologi yang naik dan turun popularitasnya. Ini adalah bidang yang sangat SANGAT tingkat tinggi. Jika ada lapisan di bawahnya yang diubah, itu mengubah posisi di atas. Dan, terus terang, ini baru (ish). Bidang baru memiliki banyak ruang untuk inovasi.

Secara pribadi, saya bekerja pada perangkat yang disematkan, belajar C, dan itu bekerja cukup baik untuk saya.

Tapi saya masih belajar hal-hal baru secara teratur. Soket, pustaka SQL, ncurses, objek dalam C. Dan metodologi secara longgar digabungkan dengan teknologi. Unit testing diajarkan dengan mengerikan di sekolah saya, dan saya baru saja membungkus kepala saya di sekitarnya. Saya baru saja mendengar tentang ketergantungan injeksi beberapa hari yang lalu, dan menyadari itulah cara saya menyelesaikan masalah terakhir saya dengan unit yang menguji fungsi konsol.

Kebanyakan programmer bukan pekerja pabrik yang melakukan hal yang sama setiap hari. Pekerjaan-pekerjaan itu dapat (dan harus) diautomatiskan. Tidak ada yang membayar untuk implementasi bubble-sort lainnya. Sudah dilakukan.

Philip
sumber
+1: Jawaban yang bagus. Orang harus mempelajari teknologi yang dibutuhkan atau bermanfaat. Teknologi baru itu penting dan orang harus melihat sekeliling untuk mengetahui apa yang sedang terjadi. Tetapi NEW seharusnya tidak menjadi satu-satunya kriteria untuk memilih apa yang kita pelajari. Juga, jika C sesuai dengan kebutuhan pemrograman Anda, saya setuju bahwa itu bisa menjadi bahasa yang baik untuk digunakan, bahkan jika sudah ada sejak lama.
Giorgio
Ini juga menunjukkan bahwa teknologi baru seringkali lebih berlapis di atas teknologi lama yang ada. Apa VM Anda diimplementasikan? C atau C ++.
dbracey
Injeksi ketergantungan hanyalah nama baru untuk ide yang sangat lama.
MarkJ
6

Saya katakan Anda bisa mengabaikan banyak hal di luar sana. Sebagian besar adalah hype dan fad dan nama-nama baru untuk teknologi lama. Kemajuan nyata akan segera digantikan oleh bahkan yang lebih baru yang tidak benar - benar bergantung pada yang lama, meskipun timer lama mengatakan Anda harus memahami yang lama untuk memahami yang baru. Jika Anda meninggalkan lapangan selama 10 tahun, ketika kembali, Anda hanya akan tertinggal 2 tahun.

Yang mengatakan, melihat teknik baru yang sebenarnya bisa rumit. Aku senang aku tidak melewatkan OOP, tapi itu pada awalnya tampak seperti beberapa kata buzz. Dan Anda sering perlu menggunakan teknologi saat ini untuk melakukan pekerjaan, bahkan jika semua orang akan melupakannya dalam 3 tahun.

Hype dan kebingungan teknologi perangkat lunak melipatgandakan perubahan yang harus kita hadapi sehari-hari. Namun teknologi elektronik sebenarnya adalah maju dengan cepat, dan mendorong perangkat lunak bersama dengan itu. Ada banyak perubahan nyata di luar sana. Kami masih mengendarai mobil, menerbangkan pesawat, dan pergi ke luar angkasa dengan kendaraan yang sama yang kami gunakan pada tahun 1965. Tetapi perangkat elektronik dari tahun 1995 sudah usang.

Jadi jawaban mendalam untuk pertanyaan Anda adalah bahwa para ilmuwan dan insinyur yang bekerja dengan listrik sangat sibuk. Perangkat lunak perlu berevolusi untuk mengambil keuntungan dari perangkat keras. Lebih buruk (atau lebih tepatnya - lebih baik?), Saya pikir perangkat lunak itu tertinggal jauh oleh perangkat keras. Jika orang-orang perangkat keras semua pensiun besok, perangkat lunak akan berevolusi dengan marah selama dua dekade berikutnya.

Jika Anda membutuhkan teknologi baru untuk melakukan pekerjaan, Anda harus mempelajarinya. Jika ada kemungkinan itu adalah teknologi baru yang masih akan berada di sini 20 tahun dari sekarang, Anda perlu mengawasinya - dan jika Anda menonton 20 teknisi yang mati untuk setiap orang yang hidup, Anda melakukannya dengan cukup baik. Dan Anda sebenarnya bisa mengabaikan segala hal lainnya. Kecuali untuk itu sedikit asap jelas yang akan mendasari semua perangkat lunak tahun 2020-an.

RalphChapin
sumber
+1: Saya setuju dengan Anda tentang hype. Banyak inovasi (sayangnya) hype dan kita harus memilih teknologi baru yang kita habiskan dengan sangat hati-hati. Salah satu hipotesa saat ini adalah lambdas (yang, BTW, saya anggap konsep yang sangat berguna): setiap bahasa modern harus memilikinya (C #, C ++, Java?) Kalau tidak, tidak keren lagi! Tapi lambdas sudah ada selama 50 tahun dan tidak ada yang peduli ketika bahasa-bahasa ini awalnya dirancang. Sekarang mereka ditambahkan sebagai renungan hanya untuk mengikuti hype terbaru. ;-)
Giorgio
@Iorgio: Saya harap bukan Java. Lambdas adalah contoh yang baik (meskipun lebih sederhana dan tidak terlalu merepotkan dari beberapa orang). Saya menggunakannya dalam C #, dan saya suka mereka, tetapi satu-satunya orang yang akan menyesal tidak tahu apa mereka adalah orang yang baru saja diberitahu untuk memperbaiki kode yang penuh dengan mereka.
RalphChapin
Apa yang Anda maksud dengan "Saya harap bukan Java"? Bahwa mereka tidak akan diperkenalkan? Saya suka dan menggunakan lambdas (dalam Skema, Haskell): mereka adalah konsep yang cukup mudah. Tetapi dalam C #, C ++ dan Java mereka menurut saya tambahan tambahan yang entah bagaimana tidak cocok dengan sisa bahasa. Saya ragu bahwa para penemu tidak tahu Lisp tetapi mereka memutuskan bahwa lambdas tidak termasuk dalam bahasa ini. Sekarang mereka sudah menjadi keharusan. Jadi, saya sangat suka lambdas, tetapi dalam C #, C ++ dan Java mereka sepertinya hanya sensasi yang digunakan untuk menjual kompiler baru, buku, dan sebagainya.
Giorgio
1
@Iorgio: Java adalah (atau dulu) bahasa yang agak minimalis. Anda tidak perlu tahu banyak (lambda, misalnya) untuk memahami apa yang ditulis orang lain. Aku suka itu. C # adalah bahasa maksimalis. Setiap baris baru dapat memperkenalkan teknologi yang belum pernah Anda lihat sebelumnya. Sangat menyenangkan untuk menulis, apalagi membaca. Keduanya tidak membutuhkan lambda, meskipun mereka membantu lebih banyak dalam C # daripada di Jawa karena alasan sintaks. Tapi mereka keren dan mereka menyimpan beberapa baris kode. Dengan kata lain, Anda benar. Tapi itu C #, bukan Java. Namun.
RalphChapin
1
@iconoclast: Dengan 20 tahun pengalaman sebagai programmer saya tidak menganggap diri saya seorang pemula. Namun, fakta bahwa Java adalah bahasa yang relatif sederhana dan bersih membuat saya lebih produktif (saya dapat mengembangkan perangkat lunak yang lebih kompleks dengan sedikit usaha). Saya pikir itu adalah kesalahpahaman bahwa bahasa yang sederhana adalah untuk pemula: bahasa yang sederhana akan memungkinkan setiap programmer dengan tingkat pengalaman apa pun untuk lebih fokus pada aspek-aspek perkembangan tertentu (misalnya mengelola arsitektur yang kompleks, refactoring) karena mereka menghabiskan lebih sedikit waktu berurusan dengan aspek-aspek lain (misalnya manajemen memori, sintaksis samar, dll).
Giorgio
3

IMHO, Anda perlu menemukan keseimbangan. Itu membutuhkan keterampilan dan pengalaman.

Anda perlu menemukan satu atau dua bahasa yang menjadi spesialisasi Anda, tetap up to date dalam perubahan kerangka / gaya yang berkembang dalam bahasa ini, dan menjaga keterampilan Anda terkemuka.

Tetapi Anda juga harus melihat bagaimana bahasa ini berkembang, dan memahami dinamika pengembangan perangkat lunak secara keseluruhan. Akankah Java ada dalam 10 tahun, apakah Phyton akan tetap di sana, apakah PHP akan diganti dengan .NET dan Mono?

Ini adalah skala besar, pertanyaan strategis, jawaban yang akan membuat Anda menjadi profesional yang sangat dihargai di bidang Anda, sambil memiliki cadangan yang solid (1 atau 2 bahasa) dan tahu kapan harus pindah dari platform utama Anda.

IMHO, mengikuti semua bahasa modern yang dikembangkan setiap hari adalah salah satu masalah terbesar bagi seluruh industri. Kami memiliki banyak bahasa yang tidak berkembang, jalan buntu dengan hampir tidak ada profesional di dalamnya, dan orang-orang yang membuang waktu menggunakannya jarang profesional sejati bahkan dalam 1 bahasa. Kebanyakan mereka menulis kode yang merupakan campuran dari semua bahasa dan tidak melakukan hal yang benar. Pada saat yang sama, jumlah tahun kerja yang terbuang untuk bahasa yang tidak standar ini dapat digunakan untuk meningkatkan beberapa kerangka kerja dan spesifikasi bahasa inti.

Coder
sumber
2

Seperti yang telah ditunjukkan orang lain, banyak teknologi baru muncul untuk memenuhi kebutuhan baru dan oleh karena itu mereka membuatnya lebih mudah untuk menyelesaikan masalah tertentu. Karena itu Anda harus tetap up to date dan setidaknya tahu apa yang terjadi di bidang Anda dan memahami teknologi baru yang relevan untuk Anda.

Di sisi lain, saya berpikir bahwa kadang-kadang ada juga faktor hype dalam inovasi tertentu: Beberapa ide sangat tua tetapi hanya dalam beberapa tahun terakhir mereka didorong untuk menjadi arus utama. Kadang-kadang saya mendapat kesan bahwa bahasa pemrograman baru (atau versi baru darinya) didorong hanya karena "baru lebih baik" dan teknologi baru berarti buku-buku baru, alat pemrograman baru, kompiler baru, kursus pemrograman baru, atau dengan kata lain, pendapatan.

Jadi bisa terjadi bahwa Anda harus belajar teknologi baru tanpa melihat keuntungan nyata dari teknologi yang telah Anda gunakan sebelumnya, jika tidak, Anda berisiko keluar dari pasar karena keterampilan Anda terlihat kuno . Terserah Anda untuk mengikuti perkembangan teknologi baru dan mencoba memahami mana yang dapat membuat Anda lebih produktif, dan mana yang nyaman untuk membuat CV Anda terlihat lebih baik.

Intinya: Saya pikir Anda harus mencoba mempelajari apa yang benar-benar bermanfaat bagi Anda, terlepas dari apakah itu baru atau lama.

Giorgio
sumber
2

Karena "bertahan dengan apa yang Anda ketahui" mewakili kegagalan untuk "menjadi lebih baik." Anda tidak harus mengadopsi setiap praktik dan kerangka kerja baru yang muncul, tetapi Anda setidaknya harus memiliki pendapat yang terinformasi tentang yang populer. Dalam pengembangan web hanya mengajukan pertanyaan akan terlihat mengerikan bagi pewawancara. Web dev dipenuhi dengan mayat-karier orang yang ingin berhenti belajar hal-hal baru setelah tahun 2000 dan itu sudah seharusnya karena mereka membuat lebih banyak pekerjaan untuk kita semua. Jauhi dev jika itu tidak menarik bagimu. Rasio $ / jam yang buruk jika bagian di mana Anda mempelajari hal-hal baru terasa seperti pekerjaan.

Erik Reppen
sumber
Karena "bertahan dengan apa yang Anda ketahui" merupakan kegagalan untuk "menjadi lebih baik.": Salah satu cara untuk membaca ini adalah dengan bertahan dengan teknologi yang sama untuk waktu yang lebih lama Anda mendapatkan pengetahuan yang lebih dalam tentang itu, sedangkan melompat dari satu teknologi ke dua atau tiga tahun ke depan hanya akan memungkinkan Anda untuk memiliki pengetahuan yang dangkal, yaitu Anda tidak akan pernah benar-benar akrab dengan mereka.
Giorgio
Saya tidak akan mengerti JavaScript sebaik saya jika saya tidak bercabang sedikit dan memahaminya dari perspektif bagaimana bahasa lain benar-benar bekerja atau mengawasi gagasan praktik terbaik saat ini dan mengeksplorasi apa yang sebenarnya dilakukan orang di bawah kap kerangka kerja dan perpustakaan mereka. Saya tidak berpikir itu benar-benar mungkin untuk meningkat sebagai pengembang pada tingkat karir yang wajar tanpa paparan reguler terhadap ide-ide baru.
Erik Reppen
Reppen: Saya sangat setuju dengan Anda dalam hal ini.
Giorgio