Saya telah menjadi pengembang sekarang selama beberapa tahun. Saya cukup bagus dalam apa yang saya lakukan dan dapat "menyelesaikan pekerjaan".
Tapi, ada perbedaan antara "menyelesaikan pekerjaan" dan "melakukan pekerjaan dengan benar". Mari kita gunakan sebuah contoh.
Baru-baru ini saya mengembangkan situs web dari awal. Situs web berjalan dengan baik dan saya tidak punya masalah. Melihat kode itu, saya berpikir bahwa saya bisa melakukannya dengan lebih baik. Saya bisa mengurangi pertanyaan MySQL saya. Saya bisa menggunakan MVC sehingga lebih mudah untuk memperpanjang (memang perlu diperpanjang sekarang).
Saya memutuskan untuk menulis ulang proyek menggunakan CodeIgniter. Saya suka frameworknya. Tapi saya kemudian teralihkan karena untuk mengurangi pertanyaan MySQL saya, saya harus belajar bergabung dengan mahir.
Dan ini masalahnya. Setiap kali saya melakukan pekerjaan dengan benar, saya berada di roda pembelajaran yang konstan. Dan topik-topik seperti gabungan MySQL lanjutan membutuhkan waktu untuk belajar, dan kemudian waktu untuk diterapkan.
Saya tidak bekerja untuk perusahaan. Saya melakukan semuanya sendiri. Jadi saya bayangkan jika saya bekerja sebagai pengembang PHP untuk sebuah perusahaan akan ada tim terpisah yang menangani SQL.
Menjadi solo itu sulit. Dan terkadang, meskipun pengetahuan saya maju, saya mendapati diri saya bertanya, demi pertanyaan. Saya mungkin memiliki banyak kebanggaan dalam pekerjaan saya. Tetapi jika saya harus bekerja untuk perusahaan yang menangani proyek lengkap, saya bisa membayangkan proyek butuh waktu karena saya harus belajar lebih banyak dan lebih untuk memuaskan kebanggaan saya dan untuk memastikan saya melakukan hal-hal "dengan benar".
Saya berencana mendapatkan pekerjaan setelah tahun baru. Saya membutuhkan keamanan pekerjaan. Itulah sebabnya saya menanyakan pertanyaan ini.
Apa saran yang dapat Anda berikan dalam hal pengembangan diri dan peningkatan diri? Haruskah saya mengurangi kekhawatiran? Atau mungkin mencari pekerjaan sebagai pengembang PHP ketika saya tidak akan menangani permintaan SQL secara langsung?
sumber
Jawaban:
Saran: Jangan takut mempelajari hal-hal baru - Anda membuat Langkah Pertama yang baik dalam mengakui bahwa Anda bisa melakukan lebih baik dan kemudian berusaha untuk mempelajari bagaimana Anda bisa melakukan lebih baik. Ya, itu membutuhkan lebih banyak waktu di depan, tetapi hasilnya biasanya sepadan dalam jangka panjang. Sekarang Anda tahu CodeIgniter, Anda dapat menggunakannya untuk proyek selanjutnya di masa depan. Anda dapat meletakkannya di resume Anda. Sekarang Anda sudah tahu teknik SQL canggih, proyek masa depan Anda akan mendapat manfaat. Jika Anda berhenti belajar, Anda akan mandek.
sumber
Apa yang Anda alami terdengar sangat normal bagi saya. Inilah cara kami mengerjakan kerajinan kami dan menjadi lebih baik dan lebih baik dalam apa yang kami lakukan.
sumber
Baik diberikan di atas saya pikir masuk akal bagi Anda untuk fokus pada peningkatan kemampuan Anda untuk merencanakan ke depan, membangun dan memprioritaskan antrian kerja, mengelola waktu Anda - hal-hal seperti itu.
Sungguh, ini sepertinya satu-satunya hal yang hilang dalam sikap Anda. Apa yang Anda sebut "sidetracking" pada dasarnya adalah karya lain ("pelajari sambungan lanjutan") yang harus direncanakan, diprioritaskan, dan dimasukkan ke dalam antrian.
sumber
Menjadi seorang profesional di bidang ini berarti terus-menerus menghancurkan diri sendiri terhadap ketidakmampuan Anda sendiri. Lakukan itu 8-5 Senin hingga Jumat, mungkin lebih jika ada tenggat waktu yang akan datang, bersenang-senang di akhir pekan, dan kembali lagi pada hari Senin. Itu pekerjaannya.
Pembuatan perangkat lunak membutuhkan kerendahan hati tertentu. Jika Anda seseorang yang harus benar, dan yang harus membuktikan bahwa mereka sudah mengetahui segalanya, ini mungkin bukan bidang untuk Anda.
Saya tidak dapat memahami tidak belajar sesuatu setiap hari. Saya tidak berpikir saya menginginkan pekerjaan itu.
sumber
Menjadi solo itu sulit. Sebaliknya, ketika Anda bekerja dengan tim pengembang, semua orang belajar dari satu sama lain. Sebagai bagian dari tim, Anda akan mengambil banyak pengetahuan dengan bekerja dengan pengembang lain, dan dengan usaha yang jauh lebih sedikit daripada ketika Anda mencoba untuk mencari tahu semuanya sendiri.
Yang mengatakan, sebagai pengembang, Anda harus berkomitmen untuk terus belajar. Apakah itu membaca dokumentasi untuk kerangka kerja baru, atau buku-buku tentang pengembangan, Anda harus melakukan upaya terus-menerus untuk menjaga pengetahuan Anda saat ini dan tumbuh. Namun, menjadi bagian dari tim dapat mengklarifikasi bidang apa yang paling perlu Anda pelajari pada titik waktu tertentu.
Mengenai poin Anda tentang meninjau kembali kode lama Anda, dan menulis ulang: Saya telah menemukan bahwa kode saya sendiri selalu mewakili yang terbaik dari apa yang saya ketahui pada saat saya menulisnya. Berkali-kali saya kembali ke sesuatu yang saya tulis bertahun-tahun yang lalu, dan menampar dahi saya, ketika saya melihat betapa jauh lebih baik yang bisa saya lakukan, mengingat apa yang saya ketahui sekarang . Tapi itulah sifat pengalaman, Anda mendapatkannya setelah Anda membutuhkannya ...
Terakhir, ketika Anda sedang mengembangkan aplikasi, Anda selalu membutuhkan akal sehat bisnis, untuk memutuskan kapan yang terbaik untuk mengambil jalan pintas untuk menyelesaikan lebih cepat, dan ketika perlu mengambil lebih banyak waktu untuk mempelajari sesuatu yang baru yang akan meningkatkan desain dan kualitas aplikasi. Ada banyak hal untuk dipelajari di dunia perangkat lunak. Tanpa melakukan penilaian yang baik seperti itu, Anda dapat menemukan diri Anda memutar roda belajar, berpikir, mendesain ulang, tetapi tidak pernah menyelesaikan apa pun.
sumber
Saya pikir kekhawatiran Anda valid, tetapi Anda tidak boleh terlena karenanya. Adalah keyakinan saya bahwa makhluk teknologi datang dengan bagasi berikut:
Pada akhirnya, sepertinya Anda peduli untuk membangun perangkat lunak berkualitas, yang merupakan sesuatu yang tidak dapat Anda pelajari . Ketahuilah bahwa Anda perlu membedakan membangun solusi yang berkualitas tinggi dengan membangun sesuatu yang sempurna. Sepertinya Anda seperti saya, dan tidak akan pernah merasa itu sempurna. Akan lebih memprihatinkan jika Anda tidak merasa memiliki kesempatan untuk meningkatkan diri dan pekerjaan Anda.
Sangat sulit untuk menjadi pelopor dari semua perdagangan (master of none), tetapi Anda benar-benar perlu mencari cara untuk mengidentifikasi hal-hal yang paling menarik dan berguna bagi Anda, dan fokus pada mereka. Cari tahu cara terbaik untuk "mengalihdayakan" pekerjaan lain ke orang lain atau alat .
sumber
Saya pikir Anda tidak perlu terlalu khawatir tentang "menyelesaikannya dengan benar". Berusaha keras untuk kesempurnaan, tetapi sadari bahwa tidaklah mungkin untuk merancang solusi yang sempurna, terlebih lagi pada putaran pertama. Fakta bahwa Anda cukup khawatir untuk menyelesaikannya dengan benar untuk mengajukan pertanyaan ini berarti Anda sudah berada di jalur yang benar.
Adapun frustrasi Anda dengan mempelajari hal-hal baru, saya menemukan bahwa bekerja dalam kelompok, dan mampu bertanya dan mendiskusikan masalah dengan programmer lain menghilangkan rasa sakit untuk mengetahui apa yang perlu saya pelajari, dan menggantinya dengan sukacita dari menemukan sesuatu yang baru dan belajar bagaimana menerapkannya.
Saya suka menulis perangkat lunak, tetapi kadang-kadang memang ada rasa sakit karena bukan belajar sesuatu yang baru, tetapi menemukan apa yang sebenarnya Anda perlu pelajari untuk dapat mencapai apa yang ingin Anda lakukan.
Dari apa yang saya mengerti, saya berada di posisi yang sama dengan Anda. Mengode sesuatu sendiri bisa membuat frustasi dan sulit di kali, dan bermanfaat dan agak menyenangkan di lain waktu.
Lakukan persis apa yang Anda rencanakan, temukan pekerjaan di mana Anda akan menjadi bagian dari tim (dan lakukan yang terbaik untuk memastikan Anda mendapatkan pekerjaan di tempat yang tidak payah). Bekerja dengan orang lain yang menggunakan teknologi yang sama dan mendesain perangkat lunak yang sama akan memperluas pemahaman dan penerapan teknologi dan pola desain itu hampir dalam semalam.
Sedangkan untuk mengetahui bagaimana melakukan sesuatu dengan benar pertama kali, well, bagaimana Anda tahu ada cara yang lebih baik kecuali Anda sudah melakukannya dengan cara tertentu pada kali pertama? Keterampilan dalam desain perangkat lunak seringkali sangat tergantung pada pengalaman. Joel Spolsky adalah seorang jenius perangkat lunak, tetapi jika Anda membaca banyak artikelnya, Anda akan melihat bahwa itu adalah hasil dari pengalaman dan kecerdasan.
Adapun bagian SQL, sebagai pengembang NET. Saya belum pernah bekerja di mana saja yang memiliki pengembang basis data khusus, kita semua menulis SQL kita sendiri, tetapi sering ada pengembang yang sangat pandai SQL yang bersedia membantu Anda keluar dengan hal-hal yang lebih mendalam.
Kamu terdengar seperti orang yang pintar, aku tidak berpikir kamu harus terlalu keras pada dirimu sendiri.
sumber
Ini benar-benar normal dan bukan sesuatu yang harus Anda khawatirkan terlalu banyak. Anda memang perlu terus belajar keterampilan baru, tetapi Anda juga perlu belajar memprioritaskan dan mengatur waktu Anda. Anda juga perlu menghindari jebakan pembangunan kembali yang tidak perlu.
Programmer yang tidak berpengalaman sering akan ditarik ke dalam perangkap pembangunan kembali:
Ada beberapa hal yang salah dengan logika ini.
Tidak ada salahnya untuk merenungkan dan merencanakan pembangunan kembali. Itu berarti mempertimbangkan bagaimana Anda ingin menulis ulang program Anda, dan berusaha mengidentifikasi masalah yang akan Anda alami. Dalam hal ini Anda akan mengidentifikasi 'gabungan SQL canggih' yang sekarang Anda perlukan, dan kemudian menyelidiki bagaimana mereka bekerja dan mempelajarinya.
Jika Anda pikir Anda tidak akan mengidentifikasi kesenjangan pengetahuan lanjutan melalui perencanaan (tanpa memulai pengembangan) maka Anda perlu meningkatkan keterampilan perencanaan Anda. Coba pikirkan bagian rencana mana yang tidak cukup detail. Anda harus masuk ke detail sebanyak yang diperlukan sampai Anda yakin bahwa seluruh sistem secara teknis mungkin.
Pendekatan ini akan memungkinkan Anda untuk belajar lebih dulu .
Akhirnya, belajar di tempat kerja adalah bagian normal dari pemrograman. Namun, ini tidak berarti bahwa Anda memulai tugas dan kemudian menyadari bahwa Anda harus berhenti selama seminggu untuk belajar tentang, katakanlah, HTML dasar. Anda dapat berhenti selama beberapa jam untuk mempelajari sesuatu, tetapi majikan Anda hanya membayar Anda untuk menyelesaikan pekerjaan. Belajar secara efisien - jangan baca pengantar dan riwayatnya, hanya cara kerjanya dan bagaimana itu akan cocok dengan program Anda. Jika Anda harus berhenti bekerja selama berhari-hari untuk mempelajari cara menyelesaikan bagian dari program, Anda salah melakukannya.
sumber
Anda mungkin berpikir bahwa mempelajari teknologi dan masalah baru adalah tenggang waktu. Tapi jangan panik. Itu normal. Ini adalah bagian dari latihan Anda sebagai programmer untuk belajar ... atau kita semua akan terjebak dengan COBOL.
Profesional freelance menyesuaikan komisi mereka sesuai dan periode belajar adalah banyak hal lain yang harus diperhitungkan dalam perkiraan waktu Anda. Lain kali Anda memutuskan untuk membawa kerangka kerja baru, pastikan Anda merencanakan waktu yang cukup untuk mempelajarinya.
sumber
Tidak, tidak ada, dan saya pikir itulah akar masalah Anda di sini. Bagi saya, Anda terlalu terpaku pada kekhawatiran untuk melakukan hal-hal 'dengan benar' karena sebagai pengembang individu Anda tidak melihat cara orang lain beroperasi. Tetapi benar menurut siapa? Siapa orang ajaib ini yang memutuskan bahwa apa yang Anda lakukan adalah 'benar'? Ambil 100 programmer terbaik dunia, dan saya jamin tidak ada yang setuju 100% untuk setiap topik pemrograman.
Pada akhirnya yang penting adalah jika pelanggan Anda bahagia. Jika program yang Anda buat memecahkan masalah yang seharusnya, dan melakukannya dengan cara yang hemat biaya, Anda melakukannya dengan benar. Misalnya, tidak secara inheren benar, menggunakan codeigniter daripada menggunakan kerangka kerja Anda sendiri. Sebagai akibatnya adalah jika Anda menghasilkan tumpukan sampah, Anda melakukannya 'salah' terlepas dari proses atau 'praktik terbaik' yang diikuti.
Bahwa Anda meninjau kembali kode Anda dan melihat cara untuk memperbaikinya adalah bagian normal dari proses pengembangan. Itu bukan pertanda bahwa Anda tidak melakukan sesuatu dengan benar. Ini pertanda bahwa Anda berdedikasi untuk belajar dan meningkatkan. Dari semua yang saya lihat di pos Anda, Anda tidak punya masalah.
Sekarang, tendang beberapa * * *
sumber