Bagaimana Saya Menjadi Programmer yang Lebih Mandiri dan Mandiri? [Tutup]

13

Satu-satunya faktor terbesar dalam apa yang menghambat saya untuk menjadi pengembang bintang adalah ketergantungan saya pada orang lain. Saya merasa seperti saya mengajukan terlalu banyak pertanyaan karena saya takut konsekuensi dari menghancurkan segalanya dan menahan semua orang. Jadi saya terlalu berhati-hati dengan mengajukan begitu banyak pertanyaan sehingga pada dasarnya saya mendapatkan jawaban setelah cukup banyak bertanya. Saya sudah mengenali itu buruk tetapi saya ingin menghentikannya. Sebagian darinya adalah ada saat-saat di mana saya tidak tahu kodenya (entah itu cabang yang belum pernah bekerja dengan saya atau ini adalah produk baru), tetapi saya ingin lebih sedikit mengandalkan orang lain. Sebagai pengantar, pertanyaan-pertanyaan ini bukanlah pertanyaan tentang pola umum atau bahasa: biasanya pertanyaan saya berkisar pada bagaimana kita melakukan kode di perusahaan kita, dan bagaimana kita membuat sesuatu bekerja di ekosistem kita. Saya ingin dapat mengambil spesifikasi dan berguling dengan mereka tanpa harus merasa seperti saya perlu mendapatkan bantuan di setiap langkah. Apakah ini normal? Sudahkah Anda mengalami ini, dan jika demikian, bagaimana Anda mengatasinya?

Acconrad
sumber
1
Mungkin ini hanya masalah budaya / bahasa ... tapi apa yang membuat Anda berpikir bahwa Anda akan pernah menjadi pengembang bintang? Apa yang membuat Anda jauh lebih baik daripada 99% pengembang baru lainnya?
Stephen C
5
Saya bukan satu sekarang, tetapi saya ingin menjadi. Saya selalu berusaha untuk belajar dan berkembang. Kebanyakan orang takut untuk mengakui bahwa mereka memiliki masalah. Saya ingin menemukan masalah saya, mengakui mereka dan mengatasinya. Yang terbaik di bidang apa pun berusaha untuk perbaikan berkelanjutan, dan saya bertujuan untuk melakukan hal yang sama.
acconrad

Jawaban:

24

Saya melihat beberapa pengembang baru masuk ke pekerjaan dan segera merasa tidak mampu. Saya melakukan hal yang sama di awal karir saya. Saya pikir setidaknya ada dua masalah utama yang perlu diatasi oleh kebanyakan orang pintar: persepsi waktu dan kemampuan alami mereka sendiri.

Persepsi Waktu Orang
pintar terbiasa memecahkan masalah dengan relatif cepat. Saya ingat terperanjat ketika harus menghabiskan satu jam untuk satu masalah kalkulus. Menghabiskan 60 menit untuk suatu masalah bukan apa-apa lagi. Hari-hari itu sudah berakhir ... mengubur mereka dan mengucapkan selamat tinggal. Kompleksitas dan ukuran sebagian besar perangkat lunak saat ini keterlaluan. Orang tidak mengerti semua alat yang harus mereka gunakan untuk menyelesaikan sesuatu lebih lama. Salah satu orang penting dari bahasa JavaScript, Douglas Crockford berkata,

"Misapplication of standard tools...is the new standard."

Tidak ada cukup waktu di dunia untuk mempelajari semua alat dev.

Kemampuan Alami
Kecerdasan Anda, kemampuan memecahkan masalah dan keterampilan alami membuat Anda masuk ke dalam seluruh pertunjukan pengembang. Tidak ada ruang untuk hal lain di bidang ini. Jadi apa yang Anda lakukan dengan 100.000 baris kode, bahasa, dan kerangka kerja yang hampir tidak Anda kenal, pola desain dan paradigma orang-orang mendorong Anda, orang-orang yang tahu sebagian besar seperti punggung tangan mereka, pelanggan yang menginginkannya kemarin, dan bos siapa yang mengharapkan dunia Anda? Freak out karena kemampuan alami Anda gagal.

Ya itu normal. Saya masih panik dengan beberapa barang yang dibuang ke arah saya.

Apa yang bisa dilakukan?

Saatnya untuk meningkatkan kemampuan alami itu dengan kerja keras kuno yang baik. Berusahalah memecah masalah menjadi beberapa bagian yang lebih kecil. Dan sadari bahwa tidak seperti banyak hal yang mungkin telah Anda lakukan di masa lalu, masalah ini membutuhkan banyak waktu untuk diselesaikan. Jadi jangan menyerah setelah hanya 15 menit memeriksa masalah yang kompleks. Alih-alih, pecahkan masalahnya dan berhenti menonton jam. Setelah beberapa saat, 30 menit bekerja dengan masalah sebenarnya tidak seperti dulu.

Percaya diri memainkan peran besar dalam kemampuan seseorang untuk memerintah sendiri. Begitu juga tim, terutama senior yang lebih berpengalaman. Adalah baik untuk berhati-hati agar tidak merusak barang-barang, tetapi ini tidak berarti Anda perlu mengajukan banyak pertanyaan.

Sebagai gantinya, gunakan kontrol sumber. Selama Anda tidak melakukan perubahan, Anda tidak dapat merusak produk utama dan membuat pengembang lainnya marah. Juga, buat perubahan yang bisa Anda pahami dan uji dan pastikan untuk mengujinya dengan baik sebelum checkin.

Saya bahkan punya proyek uji kecil yang saya gunakan untuk menulis satu kali, program sederhana jadi saya tidak perlu khawatir tentang semua yang terjadi di aplikasi utama.

Akhirnya, ingatlah bahwa setiap keputusan disertai dengan tingkat memberi dan menerima. Tidak ada langkah maju tanpa membuat semacam pengorbanan di tingkat tertentu. Jangan berjuang untuk kesempurnaan, berjuang untuk kedahsyatan dan memperhatikan tindakan Anda. Karena Anda selalu harus siap menerima kritik dan menjelaskan ide-ide Anda dan mengapa Anda membuatnya. Banggalah dengan keputusan yang Anda buat. Bahkan ketika mereka salah ada banyak yang harus dipelajari.

P.Brian.Mackey
sumber
2
+1 kerjakan sampai Anda menyerah. Saya terkadang menghabiskan 2-3 hari untuk menyelesaikan satu masalah. Adapun melanggar: coba TDD, atau setidaknya menulis tes unit.
ashes999
12

Hal pertama adalah jangan takut untuk bertanya. Saya telah melihat bahkan arsitek senior bertanya tentang kode. Mereka tidak diharapkan tahu segalanya; mereka diharapkan cukup tahu untuk menyelesaikan pekerjaan, dan untuk dapat mengetahui sisanya.

Mungkin taktik terbaik adalah:

  • Pelajari cara meneliti di Google. Anda dapat menemukan jawaban untuk hampir semua hal dengan sedikit pekerjaan investigasi. Stack Overflow bekerja sangat baik untuk masalah-masalah yang sulit dipecahkan.
  • Pelajari cara men-debug. Saya telah menghabiskan berjam-jam melangkah ke kode perusahaan yang unik dan dalam, hanya untuk menemukan variabel X adalah 3 bukannya 7. Mampu membaca kode dan men-debug mungkin merupakan cara terbaik untuk menjadi otonom.
ashes999
sumber
Bukannya aku bunga istimewa, tapi masalahku bukan pada bahasa. Ini bukan tentang bagaimana melakukan hal-hal dalam bahasa saya. Sebagian besar pertanyaan saya sangat berpusat pada perusahaan: ini tentang bagaimana melakukan hal-hal dalam domain khusus untuk lingkungan kita di tempat kerja kita. Mereka adalah hal-hal yang Anda tidak bisa Google, jika Anda mau.
acconrad
3
Saya mengerti sepenuhnya; Saya berada dalam situasi yang sama selama tiga tahun. Poin singkat # 2 adalah jawabannya: Belajarlah untuk debug. Orang tidak sering mengingat detail; debugging adalah kuncinya.
ashes999
1
Saya setuju. Terus ajukan pertanyaan, sampai Anda tahu lebih banyak jawaban daripada orang-orang di sekitar Anda. Turun dan berbicara dengan tim QA sampai Anda dapat menemukan bug serta memperbaikinya. Google adalah teman ahli Anda; gunakan dia secara luas. Suatu hari Anda akan menemukan bahwa Anda mengirim e-mail pertanyaan dan menemukan jawabannya sendiri sebelum balasan kembali.
Andy Canfield
5

Jangan takut untuk bertanya "gambaran besar"

Saya biasanya mencoba menemukan pertanyaan terkecil yang dapat saya ajukan dan masih dapat melanjutkan pekerjaan saya, karena takut saya akan dianggap tidak kompeten jika saya mengajukan pertanyaan luas yang tampaknya diketahui oleh semua orang. Saya tidak mengerti perbedaan antara ketidaktahuan dan ketidakmampuan. Ketidaktahuan berarti Anda belum mempelajari sesuatu, dan sangat dapat diterima selama itu tidak bertahan lama. Berpura-pura tidak bodoh jauh lebih buruk.

Jika Anda menemukan bahwa jawaban orang-orang hanya membawa Anda sejauh ini, Anda perlu meminta mereka untuk mengajar Anda memancing daripada menyerahkan ikan lain kepada Anda. Tanyakan bagaimana bagian Anda cocok dengan keseluruhan. Jika pertanyaan Anda tampak mendasar seperti "apa itu SQL" tanyakan lebih cepat daripada nanti. Anda mungkin terlihat sedikit bodoh sekarang, tetapi nantinya akan terlihat jauh lebih bodoh.

Beri diri Anda masa tunggu

Jangan bertanya begitu Anda memilikinya. Tergantung pada kerumitannya, berikan diri Anda di mana saja dari setengah jam hingga sehari untuk mencoba mencari tahu sendiri. Banyak kali Anda akan menyelesaikannya sendiri. Jika tidak, Anda dapat memberi tahu rekan Anda apa yang tidak berhasil, yang dapat membantunya memberikan jawaban yang lebih baik.

Juga, jika kolega Anda tidak tahu jawaban dari atas kepalanya, perhatikan bagaimana ia sampai pada itu. Sering kali Anda tidak membutuhkan bantuan sebanyak yang Anda pikirkan. Jika saya tidak punya waktu untuk mengajukan pertanyaan, saya akan sering mengarahkan seseorang ke arah yang tidak jelas dan memberi tahu mereka bahwa saya akan menindaklanjuti ketika saya mendapat satu menit, dan mereka biasanya menyelesaikannya pada saat saya sampai di sana.

Buang beberapa konsep

Duduk dan letakkan segala sesuatu yang ada di kepala Anda dan kemudian Anda seorang penulis. Tetapi seorang penulis adalah orang yang dapat menilai nilai barangnya sendiri, tanpa belas kasihan, dan menghancurkan sebagian besar dari barang itu.
—Sidonie Gabrielle Colette

Jangan takut untuk menulis kode yang tidak akan pernah membuatnya menjadi rilis. Semakin banyak pengalaman yang Anda dapatkan, semakin cepat Anda bisa mengatakan bahwa Anda salah jalan, tetapi menurun ke jalan yang salah masih terjadi. Sering kali nilai solusi tidak terlihat sampai Anda melihatnya melakukan kesalahan dengan cara pertama.

Karl Bielefeldt
sumber
1

Kemandirian akan datang bersama

  • Peningkatan pengalaman dan paparan di domain.
  • Peningkatan keterampilan pengamatan dan keterampilan analitis untuk memahami sistem yang ada dan perilaku mereka, ketergantungan.

Mengajukan pertanyaan seringkali berisiko menunjukkan Anda kekurangan keduanya.

Jika Anda mengubah domain, teknologi, platform, bahasa Anda kembali ke titik awal (Hampir, tidak termasuk peningkatan kemampuan Anda untuk mengatasi masalah serupa dan pengetahuan yang dapat ditransfer)

Tidak mengajukan pertanyaan ketika benar-benar dibutuhkan akan menghabiskan banyak waktu produksi yang berharga.

Mungkin bermanfaat bagi Anda dalam menjatuhkan sepatah kata pun tentang asumsi Anda tentang tingkat kerusakan yang mungkin terjadi jika Anda melakukan kesalahan. atau apa yang Anda Pikirkan mungkin rusak untuk mendapatkan penilaian aktual dari asumsi Anda. Sering kali hal itu memungkinkan Anda menemukan poin dan sudut yang telah Anda lewatkan.

Menjadi berhati-hati itu baik. Tapi yang terbaik Anda mulai menentukan sifat pertanyaan Anda. Yang terbaik jika Anda menuliskannya di atas kertas dan memeriksa kesulitan / kelayakannya.

  1. Apakah ini sesuatu yang dapat Anda ketahui dengan google / forum atau dengan mengerjakannya untuk waktu yang lebih lama
  2. Apakah ini sesuatu yang dapat Anda hindari atau perbaiki tanpa biaya banyak jika Anda mengacaukannya?
Aditya P
sumber
0

Saya akan mengatakan untuk melihat hal-hal yang sedang Anda kerjakan dan mulai membuat keputusan sendiri (tetap mengikuti spesifikasi aplikasi tentu saja). Pada saat ini, Anda harus memiliki perasaan yang baik untuk apa yang merupakan perubahan besar dan apa itu perubahan sederhana. Mulailah dengan yang sederhana. Jika Anda berpikir apa yang Anda lakukan itu benar, lakukanlah.

Anda AKAN membuat kesalahan dan itu sangat berharga. Pelajari semua yang Anda bisa dari mereka ketika mereka terjadi karena apa yang akan membuat Anda melakukan pekerjaan yang lebih baik di waktu berikutnya.

Setelah Anda merasa nyaman dengan keputusan yang lebih kecil, mulailah membuat yang lebih besar. Anda perlu memutuskan seberapa jauh akan berjalan berdasarkan proyek / lingkungan / tim Anda.

Itulah sisi pengambilan keputusan. Hal lain yang perlu Anda lakukan adalah tetap memberi makan otak Anda sehingga dapat membantu memandu keputusan Anda. Ikuti situs yang mencakup teknologi Anda. Ada tutorial online tentang hampir semua hal di luar sana yang mencakup semuanya, mulai dari yang sederhana hingga yang rumit. Jangan takut untuk bertanya kepada orang-orang mengapa mereka membuat keputusan tertentu - sebagai pencari informasi, bukan untuk bersikap konfrontatif. Kebanyakan orang senang menjelaskan hal-hal dan Anda bisa belajar sedikit dari mereka.

Setelah Anda memiliki pengetahuan teknis, sisanya adalah kebijaksanaan dan kepercayaan diri dan mereka datang dengan pengalaman.

Dave Wise
sumber
0

Ketika saya adalah seorang pemula yang mengajukan pertanyaan, saya akan selalu mencoba mendapatkan jawaban parsial untuk hal itu sendiri, menggunakan alat yang tersedia; dan ketika saya mendapatkan sejauh yang saya bisa, saya akan mencari tahu bagaimana mengutarakan pertanyaan saya agar sejelas dan sesingkat mungkin, dengan asumsi bahwa orang yang saya cari bantuannya sibuk. Dengan sedikit persiapan ini, saya tidak berpikir ada orang yang keberatan saya bertanya kepada mereka, dan pada kenyataannya saya mendapat kesan bahwa mereka menikmatinya. Belakangan, ketika saya menjadi pakar domain, saya juga senang membantu orang-orang yang menjelaskan bahwa mereka menghargai waktu saya.

Hal lain yang saya lakukan adalah, setiap hari, memilih arsitektur sistem. Poster-poster lain mengomentari apa yang dilakukan oleh sistem modern yang besar, betapa sulitnya mencapai kesepakatan. Jadi saya akan melakukan tur kode: mulai dari titik masuk yang masuk akal, kemudian menelusuri, mencatat pada diri sendiri tentang cara kerjanya, mengajukan pertanyaan yang kadang-kadang saya jawab untuk diri saya sendiri, kadang-kadang bertanya kepada orang lain tentang. Keakraban dan kompetensi domain yang menyeluruh seperti ini membutuhkan waktu, tetapi Anda dapat mempercepatnya; dan semakin banyak Anda melakukannya, semakin cepat Anda mandiri dalam cara yang Anda inginkan.

shanusmagnus
sumber