Meraih Status Pemrograman Menengah [ditutup]

32

Saya seorang insinyur perangkat lunak yang memiliki posisi pemrograman di VBA (meskipun saya tidak berani mempertimbangkan pengalaman 'nyata', karena itu adalah trial and error!), Perl w / CGI, C #, dan ASP.NET. Dua yang terakhir adalah pascasarjana, dengan pintu masuk saya ke 'dunia nyata'. Saya 2 tahun lulus dari perguruan tinggi, dan telah memiliki 5 tahun pengalaman (total) di berbagai bahasa yang saya sebutkan. Namun, ketika datang ke resume saya, saya hanya bisa meletakkan 2 tahun untuk C #, dan kurang dari setahun untuk ASP.NET.

Saya merasa seperti tahu C #, tetapi saya masih harus menghabiskan waktu untuk 'Apa metode ini lakukan?', Sedangkan beberapa insinyur tingkat yang lebih senior dapat langsung mengatakan, "Oh, Metode X melakukan ini, tanpa pernah melihat itu metode sebelumnya. " Jadi saya tahu secara empiris bahwa ada jurang di sana, tapi saya tidak yakin bagaimana menjembataninya. Saya sudah mulai pemrograman di Project Euler , dan saya mengambil buku tentang pola desain, tapi saya masih merasa seperti saya menghabiskan setiap hari menapaki air, bukannya bergerak maju.

Itu bukan untuk mengatakan bahwa saya tidak merasa seperti saya membuat kemajuan, itu hanya berarti bahwa sejauh saya datang setiap hari, saya masih melihat puncak gunung di kejauhan.

Pertanyaan saya adalah ini: Bagaimana Anda mengatasi dataran tinggi ini? Berapa lama waktu yang Anda butuhkan? Metode apa yang bisa Anda sarankan untuk membantu saya dalam hal ini?

Saya telah membaca Kode Lengkap , Bulan Mythical Man , dan CLR melalui C #, edisi ke-2 - pertanyaan saya adalah: Apa yang harus saya lakukan sekarang?


Sunting : Saya baru saja menemukan pertanyaan ini pada proyek - proyek untuk programmer tingkat menengah. Saya pikir itu menambah diskusi (meskipun tidak menggantikan pertanyaan saya). Karena itu, saya menambahkannya ke pertanyaan sebagai "Untuk Informasi Lebih Lanjut".

George Stocker
sumber
2
Saya telah bermain dengan Project Euler baru-baru ini, dan itu hanya mencakup berbagai teknik yang terbatas. Semuanya sangat baik mengoptimalkan fungsi dengan memoisasi atau pemrograman dinamis, tetapi itu tidak akan membantu Anda menulis GUI atau aplikasi web. Masalah yang sulit dirancang untuk menjadi matematika yang sulit, bukan pengkodean yang sulit.
Menyenangkan, untuk semua itu: Saya tidak menentangnya, itu hanya tidak dirancang untuk membantu Anda mempelajari bahasa di luar tipe data dasar, struktur, dan mungkin beberapa teknik optimasi jika seperti saya, Anda lebih suka mendapatkan solusi di bawah 0,1 jika memungkinkan.
@ Gortok, saya setuju bahwa ada banyak hal spesifik yang dapat Anda lakukan untuk meningkatkan skillet Anda, tetapi itu tentu saja tergantung pada jenis pemrograman yang Anda lakukan. Pengembang Windows membutuhkan keterampilan yang berbeda dari pemrogram perangkat yang disematkan, misalnya. Saya pikir pertanyaan yang diajukan sebenarnya terlalu luas untuk mendapatkan jawaban yang baik.
Nathan Fellman
1
Saya sudah pemrograman sejak saya berusia 2 tahun. Saya telah gagal menjadi programmer top dunia, dan sekarang saya membenci hidup saya. Saya berharap tujuan saya adalah menjadi bintang porno top dunia.
Anda tidak merasa seperti Anda maju karena intuisi Anda memberi tahu Anda kesenjangan antara praktik akademik dan praktik bisnis (dunia nyata). Dan intuisi Anda benar. Praktik akademis adalah tentang masalah kecil dan latihan mandiri. Bisnis sedang memperbaiki bug atau menambahkan fitur / halaman web dll ke raksasa (biasanya). Praktek akademik adalah rekursi. Bisnis adalah keterbacaan dan pemeliharaan. Praktik akademik adalah ilmu matematika dan ilmu komputer. Bisnis adalah keterampilan orang, & analisis kebutuhan sebanyak coding. Akan menempatkan ini sebagai jawaban tetapi Q ditutup.
Brad Thomas

Jawaban:

41

Selamat!

Dari deskripsi Anda, Anda adalah pengembang perantara.

Fase ini akan berlangsung sekitar 3-8 tahun, tergantung pada keinginan Anda untuk belajar di atas dan di luar masalah saat ini

Untuk mempercepat proses, baca, jelajahi, blog, pergi ke pertemuan kelompok pengguna, cari mentor, lakukan riset independen, proyek sampingan kode, dan kubur diri Anda dengan teknologi baru. Ini mungkin mencukur satu atau dua tahun.

Atau Anda bisa memiliki kehidupan di luar pemrograman ;-)

Serius, tetap terkini dan introspeksi, tetapi matikan #% $ @ hal sesekali

Tambahan: saat Anda pergi ke luar, ingatlah untuk mengenakan celana.

Steven A. Lowe
sumber
17
dan berhati-hatilah mengutip Tolkien, itu hobi yang sulit untuk dihancurkan
Steven A. Lowe
1
Bermain dengan baik, Tuan Lowe, bermain dengan baik.
kemiller2002
1
Serius, punya kehidupan di luar pemrograman. Satu: ada lebih banyak kehidupan daripada kode. Dua: banyak yang bisa dipelajari dari disiplin ilmu lain.
kemiller2002
1
+1 - Dilakukan dengan baik. Tidak ada yang menggantikan praktik (atau selera humor yang baik).
15

Salah satu cara terbaik mendaki gunung adalah dengan menulis sesuatu untuk diri sendiri karena Anda menginginkannya. Pemrogram terbaik memiliki jawaban yang bagus untuk pertanyaan 'program apa yang paling menarik yang Anda tulis di waktu luang Anda.' Jika Anda tidak menulis kode apa pun di waktu luang, Anda tidak cukup menyukai kerajinan tangan Anda untuk menjadi lebih baik.

Norman Ramsey
sumber
8
Saya tidak suka teori ini, Orang memiliki pekerjaan penuh waktu dan kemudian tanggung jawab lainnya. Tidak bertanggung jawab untuk menganggap mereka yang tidak memiliki proyek sampingan tidak cukup suka pemrograman atau pemrogram yang buruk. Seperti yang dinyatakan oleh jawaban yang diterima, Miliki kehidupan di luar pemrograman.
10
Saya tidak setuju --- programmer terbaik adalah seperti penulis terbaik: mereka benar-benar tidak dapat menghentikan diri dari melakukan yang terbaik.
Norman Ramsey
2
Mereka mungkin tidak dapat menghentikan diri mereka sendiri, tetapi hidup dapat, dan untuk beberapa kehendak.
Shannon Severance
@ShannonSeverance, Bagi banyak orang , tidak hanya untuk beberapa.
Pacerier
9

Anda harus melalui tahap larva.

Meskipun sekarang saya memprogram di VB.NET pada Windows, saya melewati tahap larva di Linux x86 dengan perakitan sebagai bahasa utama saya.

Untuk sesaat, Anda harus mengabdikan diri pada kerajinan sampai Anda menguasainya. Apa yang disebut insting seorang programmer master adalah perilaku yang benar-benar dipelajari. Itu adalah budaya bersama. Pemrogram harus berpikir seperti satu sama lain, dan seperti mesin.

Domba menjadi seperti beling dan beling seperti domba, tetapi tidak ada yang terlalu panjang di dunia. Dengan [pohon dan] Ents lebih cepat dan lebih dekat, dan mereka berjalan menyusuri zaman bersama. - Tolkien

Ketahui dan pahami. Keterampilan terbesar bukanlah yang terikat pada bahasa tertentu, tetapi dapat diterapkan pada hampir semua bahasa. Ketahui konsepnya, cari baik dalam masalah maupun bahasa, bersiaplah untuk menemukan hal-hal baru bila perlu.

Inilah jalan menuju kebesaran.

Joshua
sumber
2
Apakah itu melibatkan cheetos? Gambar di kepalaku melibatkan cheetos.
2
lol "Ini tidak mudah menjadi murahan!"
gnovice
Tahap larva atau tahap Laravel? ;)
Brad Thomas
9

Saya sudah pemrograman sejak saya berusia 8 ... Saya akan berusia 33 pada Malam Natal. Saya masih melihat gunung di kejauhan. Tidak peduli seberapa jauh Anda datang, selalu ada lagi yang harus dipelajari.

Dapatkan paradigma di bawah ikat pinggang Anda dan cari tahu bagaimana bahasa yang Anda koding saat ini mengimplementasikan paradigma tersebut. Pemrograman adalah pengalaman seumur hidup yang selalu memiliki lebih banyak untuk dipelajari. Itulah kegembiraannya, tidak peduli seberapa mahir Anda, selalu ada lagi.

Salah satu cara saya menemukan untuk mempelajari hal-hal baru yang biasanya tidak saya pelajari adalah menghabiskan waktu di sini dan forum pemrograman lain seperti Bytes dan Experts Exchange di mana orang-orang mengajukan pertanyaan. Jika Anda dapat menjawab pertanyaan, langsung saja, jika Anda tidak bisa, maka coba dan cari tahu sendiri bagaimana menyelesaikan tugas itu, OP tidak hanya akan menghargai upaya dan bantuan Anda, tetapi Anda juga akan belajar sesuatu yang baru.

Saya menemukan bahwa saya belajar lebih banyak dengan membantu orang lain menemukan jawaban untuk hal-hal yang belum saya ketahui daripada yang pernah saya lakukan dengan hanya memprogram hal-hal sehari-hari saya yang saya lakukan hari demi hari.

BenAlabaster
sumber
9

Status pemrograman antara menyiratkan bahwa Anda keluar dari kode "mental lebih cepat" dan masuk ke ranah yang ingin membangun sistem nyata sebagai karier. Ini adalah perubahan profesional utama dan, terus terang, ini bukan tentang keterampilan teknis. Bekerja di tingkat menengah (alias "pengembang") membutuhkan keahlian orang yang sangat maju.

Berikut beberapa gejala yang bisa Anda pikirkan:

  1. Apakah Anda masuk ke edit perang online? Jika demikian, Anda mungkin menunjukkan bahwa Anda lebih suka berdebat tentang detail di dalam zona nyaman Anda daripada mencoba memahami sudut pandang orang lain.
  2. Apakah Anda menganggap bahasa sebagai hal yang benar-benar berbeda? C # dan Java sama-sama membawa platform dan sumber daya mereka sendiri ke atas meja, tetapi keduanya adalah model komputabilitas yang efektif. Bisakah Anda mempelajari bahasa dan platform baru dengan cukup cepat untuk mendapatkan bayaran untuk melakukan pekerjaan?
  3. Apakah Anda masih menganggap tugas perangkat lunak sebagai pengetikan? Jika Anda diberi tugas di tempat kerja, mengapa? Untuk apa kode ini digunakan? Sistem apa yang akan menjadi bagiannya? Informasi itu dapat secara dramatis mengubah solusi yang Anda usulkan.
  4. Sudahkah Anda meninggalkan fase tahu-semua- hidup Anda? Apakah Anda mendengarkan anggota tim lainnya atau hanya memikirkan hal-hal selanjutnya yang ingin Anda katakan?
  5. Pernahkah Anda menyadari bahwa "menarik semua-malam" untuk menghasilkan solusi menit terakhir kereta tidak mengesankan lagi? Setelah delapan jam pertama, Anda dapat dengan mudah membayangkan bahwa sisa waktu hanya digunakan untuk mengetik bug.

Ringkasan terbaik yang dapat saya buat adalah bahwa programmer menengah (atau "pengembang") telah belajar untuk menjadi lebih produktif dalam delapan jam kerja sehingga mereka bisa pulang kerumah dan memiliki kehidupan di luar pekerjaan.

Poin bonus diberikan jika Anda berhasil menemukan pasangan dan mereproduksi ....

Bob Cross
sumber
8

Apa yang Anda lakukan sekarang hebat, tetapi jika Anda ingin mempercepat kemajuan Anda, Anda dapat melakukan dua hal tambahan:

1) "Mengajar" - Cara sederhana untuk melakukan ini adalah memulai sebuah blog, dan berusaha menyumbangkan sesuatu yang bermanfaat secara teratur (mungkin mingguan). Bertujuan tentang hal-hal yang baru Anda pelajari, atau yang belum Anda ketahui . Itu berarti Anda akan memaksakan diri Anda untuk meneliti, memahami dan mengeluarkan kembali.

BTW, Anda dapat dengan mudah mendaftar untuk akun SingingEels di mana Anda mendapatkan blog gratis di komunitas pengembangan yang ada.

2) Menulis banyak program mini - Dengan ini, maksud saya sekitar 1 per minggu. Anda dapat menggunakan ini di persimpangan dengan di atas ... atau hanya untuk bersenang-senang. Apa yang saya lakukan sebagai pengembang muda hanya secara acak memilih (saya tidak bercanda) namespace dalam kerangka NET. Di dalamnya, pilih kelas yang belum pernah Anda lihat / gunakan sebelumnya, dan buatlah sebuah program kecil yang menggunakannya.

Timothy Khouri
sumber
8

Mencoba untuk

Baca LEBIH BANYAK buku. Ambil judul-judul besar dari Amazon dan baca. Misalnya, penulis Code Complete telah menulis buku yang bagus tentang rekayasa perangkat lunak - Pengembangan Perangkat Lunak Cepat, beli satu dan bacalah.

Belajar bahasa pemrograman yang berbeda Bahasa scripting seperti python / ruby ​​layak untuk dipelajari. Atau mungkin bahasa pemrograman fungsional :) Ini dapat mengubah pikiran Anda tentang pemrograman. Anda mungkin tahu bahwa beberapa pola GOF tidak diperlukan untuk bahasa-bahasa semacam itu.

Bergabung dengan komunitas Orang-orang dapat bertukar pikiran dengan mendengarkan dari orang lain dan memberikan presentasi.

rIPPER
sumber
4

Temukan pemrogram yang cerdas dan belajarlah dari mereka. Tiru mereka. Perhatikan hal-hal yang mereka lakukan secara berbeda dari yang Anda lakukan.

Apakah perusahaan Anda melakukan tinjauan kode? Itu salah satu cara terbaik untuk belajar. Anda mungkin kagum dengan saran yang dibuat oleh programmer yang lebih maju dan hal-hal yang mereka pertahankan saat coding.

David Norman
sumber
3

bagaimana dengan terlibat dalam proyek open source lainnya yang sedang berlangsung, sehingga setidaknya pekerjaan Anda akan bernilai sementara bagi seseorang dan Anda dapat belajar dan berinteraksi dengan pengembang lebih maju lainnya melakukan pekerjaan dunia nyata.

sehingga setidaknya Anda tidak terbatas pada apa yang ingin Anda pelajari atau jenis proyek apa yang ingin Anda lakukan. dan itu sudah alat gratis yang Anda gunakan, Anda bisa bangga bahwa Anda benar-benar membantu membuatnya lebih baik.

dan itu muncul dengan baik dengan resume Anda juga. :)

jadi jika itu masih memberi Anda waktu luang, mengapa tidak menyimpan blog yang mendokumentasikan pembelajaran, pengalaman, dan apa yang tidak. siapa tahu, Anda bisa menjadi joel berikutnya pada perangkat lunak atau pengkodean horor: p

melaos
sumber
-1

Untuk unggul sebagai pengembang C # baca dua berikut. Perhatikan bahwa fokus buku-buku ini lebih pada bahasa (C #) bukan kerangka (.NET) ..

  1. Essential C # : tautan adalah untuk edisi terbaru. Saya benar-benar membaca yang sebelumnya (C # 4.0) tetapi saya menganggap yang lebih baru lebih baik. Buku ini juga memiliki beberapa hal dasar tetapi bersabarlah membaca sampul buku itu untuk menutupi.
  2. C # in Depth : tautan lagi untuk edisi terbaru yang akan dirilis dalam 10-15 hari. Saya hanya membaca sekilas buku itu tetapi rekan-rekan saya yang telah membacanya sangat menghargai ini.

Anda telah membaca CLR melalui C # , jika tidak, itu mungkin saran ketiga oleh siapa pun untuk pengembang C #.

Ini juga harus membuat Anda menjadi pengembang yang lebih baik: Pedoman Desain Kerangka Kerja dan Efektif dengan Kode Legacy .

Asim Ghaffar
sumber
mau menjelaskan mengapa downvoted?
Asim Ghaffar