Tanpa sadar menjadi seorang programmer: bagaimana cara melakukannya dengan benar? [Tutup]

21

Latar belakang saya adalah teknik listrik, lebih tepatnya DSP. Perusahaan tempat saya bekerja saat ini mengerjakan banyak proyek yang beragam, kebanyakan membangun perangkat keras analog. Menjadi agak lebih dekat dengan komputer daripada orang lain di sekitar sini. Saya sering kali menulis kode untuk kedua perangkat yang disematkan (yang saya baik-baik saja dengan) dan Windows atau OS Linux. Yang terakhir inilah yang merupakan wilayah asing bagi saya.

Saya dapat kode, dan saya tahu beberapa bahasa (C / C ++, Java, beberapa VB.NET), tetapi saya hanya menggunakannya untuk simulasi algoritma dalam pemrosesan sinyal dan gambar, jaringan saraf, dan aplikasi serupa lainnya. Bagi saya pemrograman telah menjadi alat komputasi lebih dari apa pun. Namun, saya mendapatkan semakin banyak proyek di mana saya harus menulis perangkat lunak lengkap yang tepat, dan saya tidak benar-benar tahu bagaimana melakukannya, karena saya tidak pernah harus melakukannya, dan saya tidak pernah benar-benar cukup tertarik. Saya sendiri pernah melihat beberapa insinyur yang dikonversi menjadi coders ke tingkat tertentu karena tuntutan pekerjaan, dan kebanyakan dari mereka tidak terlalu hebat dalam apa yang mereka lakukan. Saya yakin banyak orang mengalami hal yang sama.

Jika saya belajar menulis perangkat lunak yang tepat dengan antarmuka pengguna yang baik, arsitektur internal yang baik dan sebagainya, bagaimana saya melakukannya? Kami tidak memiliki siapa pun di tempat kerja yang bisa memberi tahu saya apa praktik yang baik dan yang tidak. Mengingat bahwa saya dapat menulis kode dalam arti kata yang paling murni, apa lagi yang perlu diketahui tentang menulis perangkat lunak yang baik dan bagaimana saya bisa sampai di sana sendiri?

Phonon
sumber
Jika Anda memberi tahu kami bahasa yang Anda gunakan, kami mungkin dapat memberi Anda lebih banyak jawaban mendalam. Kemudian lagi, itu akan meniadakan titik jawaban generik.
Sardathrion
2
Tanpa pelatihan formal atau pengalaman kerja langsung dengan seorang mentor maka melakukan hal-hal Right Way ™ tidak akan realistis. Kamu sedang belajar. Ada alasan mengapa ilmu komputer dan teknik bercabang dari teknik listrik. Sebuah perusahaan waras akan mempekerjakan insinyur perangkat lunak untuk menulis antarmuka aplikasi, driver aplikasi dan bahkan firmware karena mereka menginginkan kualitas dan ingin itu dilakukan dengan benar dan membuatnya dapat dipertahankan. Saya akan menjelaskan kepada atasan Anda bahwa apa yang Anda lakukan sedikit di luar bidang keahlian Anda dan bahwa tugas-tugas ini sebaiknya diserahkan kepada seorang insinyur perangkat lunak.
maple_shaft
4
... Saya ingin menambahkan juga bahwa saya tidak berpikir situasi Anda "tidak disengaja" seperti yang Anda sebutkan dalam judul. Anda mengatakan pada diri sendiri bahwa teman Anda bahkan tidak tahu cara menggunakan komputer, namun Anda juga diharuskan menjadi insinyur perangkat lunak? Tampaknya tidak adil. Saya memuji kemampuan Anda untuk menulis perangkat lunak yang lumayan dan keinginan Anda untuk belajar dan melakukan hal-hal dengan cara yang benar, namun tidak ada rasa malu untuk mengakui kepada bos Anda dan diri Anda sendiri bahwa beberapa hal tidak dalam kemampuan Anda. Jika mereka serius tentang menempatkan Anda dalam peran ini, minta mereka untuk membelanjakan pelatihan untuk Anda.
maple_shaft
@maple_shaft Saya setuju dengan sebagian besar hal yang Anda katakan; Namun, saya tidak pernah mengatakan bahwa teman-teman saya tidak tahu cara menggunakan komputer. Tak satu pun dari mereka adalah seorang insinyur perangkat lunak yang bisa menidurkan saya, tetapi mereka semua mahir dalam bidang komputer. Saya tidak punya masalah dengan harus melakukan pengkodean, saya suka belajar hal-hal baru, dan saya tidak benar-benar memiliki masalah dengan melakukannya.
Telepon
6
@ Phonon Great, itu sikap yang baik, tetapi pastikan perusahaan Anda membelikan Anda buku, kursus pelatihan, dan memberi Anda waktu untuk belajar jika mereka ingin Anda memainkan peran itu. Itu saja yang saya katakan. Begitu banyak perusahaan akan mencoba menipu Anda dengan meyakinkan Anda bahwa Anda bertanggung jawab untuk membeli barang-barang ini untuk diri sendiri.
maple_shaft

Jawaban:

11

Ada beberapa buku yang akan banyak membantu Anda. Saya sarankan untuk selalu di sebelah Anda Kode Lengkap . Ini adalah referensi yang sangat berharga. Di perusahaan sebelumnya tempat saya bekerja, ini juga buku yang kami berikan kepada setiap programmer junior setelah dipekerjakan.

Programmer Pragmatik juga merupakan sumber yang sangat berguna dan cukup singkat, tetapi saya sarankan Anda membacanya setelah Kode Lengkap.

Buku-buku ini akan membantu Anda memulai, lalu kode, kode, kode, dan kode lainnya ... tetapi tahu kapan harus berhenti, perangkat lunak Anda tidak akan pernah sempurna.

Trasplazio Garzuglio
sumber
6

Perusahaan saya melakukan ini sepanjang waktu ... dan itu membuat saya gila.

"Saya seorang pengembang perangkat lunak, bagaimana cara menjadi EE?"

Yah, saya pikir jawabannya cukup jelas. Butuh banyak waktu dan kerja keras. Dan tentu saja materi pembelajaran yang tepat. Latar belakang Teknik membantu, di universitas saya CS dan sekolah teknik berada di gedung yang sama dengan banyak tumpang tindih. Algoritma dan dasar matematika ada di sana.

Kesalahan yang saya lihat kebanyakan pendatang baru lakukan adalah menggigit lebih banyak daripada yang bisa mereka kunyah. Materi pembelajaran di UI, arsitektur, kode kualitas ... banyak sekali . Sesuatu yang benar-benar memakan waktu bertahun-tahun dan sering dilakukan oleh tim ahli yang berbeda di perusahaan perangkat lunak.

Bukan untuk mengatakan Anda tidak bisa cukup baik sendiri, jika Anda meluangkan waktu. Hanya mengenali besarnya bahan sehingga Anda tidak membebani diri sendiri dan A. Berhenti atau B. Bangun utang teknis utama ke dalam aplikasi Anda dengan mengambil jalan pintas utama dalam proses belajar Anda.

Karena semua ini, tidak ada "catch-all" menjadi dev hebat dengan buku ini di luar sana. Saya sarankan Anda mulai dengan mengambil buku berperingkat bagus di bahasa yang paling sering Anda gunakan dan juga berpartisipasi dalam komunitas Stack terutama untuk ulasan kode.

Coba Amazon.com, mereka memiliki ulasan buku yang bagus.

P.Brian.Mackey
sumber
3

Buku : Hal utama adalah membaca buku-buku (bagus) tentang bahasa pilihan Anda. Setelah Anda tahu bahasa pilihan Anda, Anda bisa mendapatkan " X Lebih Efektif " atau "Praktik Terbaik Y" dan seterusnya. Saya menemukan buku masak sangat bagus dalam menjembatani kesenjangan yang mungkin Anda miliki. Jadi, saya kira itu setidaknya tiga buku yang perlu Anda dapatkan. Satu hal: lakukan latihan dan kode kata untuk meningkatkan pemahaman Anda tentang bahasa. Tentu saja, Anda memerlukan pola xUnit yang baik .

Algoritma adalah kekhasan yang penting dan Anda harus memilih buku yang memerinci mereka - sekali lagi, dalam bahasa pilihan Anda. Pola Desain dan Anti-Pola bermanfaat saat mengetahui dalam bahasa apa pun.

Intinya: butuh waktu. Jangan terburu-buru.

Sardathrion - Pasang kembali Monica
sumber
+1, tetapi selalu waspada, bahwa hanya ada satu aturan yang tidak memiliki pengecualian: semua aturan memiliki pengecualian.
Jan Hudec
@ JanHudec: Yang mana yang Anda pikirkan di sini?
Sardathrion
3

Anda payah dalam coding. Iya nih.

Tapi - ini tidak berarti Anda tidak dapat mengirim perangkat lunak, itu membuat orang senang;)

Jadilah rendah hati. Tulis logika "bisnis" , yang Anda butuhkan. Gunakan kode perpustakaan untuk yang lainnya. Jangan mencoba untuk menulis algoritma dasar (seperti pengurutan array ), jangan gunakan "trik mewah", tetap pada beberapa konvensi kode yang kejam .

Gunakan IDE yang bagus. Ini sangat penting, karena akan membantu Anda memformat kode Anda dan melacak kesalahan ketik / sederhana.

Baca buku seperti " Kode Lengkap " dan " Pragmatis Programmer ", coba paksa diri Anda dan pelajari OOP (ini sederhana, dan akan membantu Anda menjaga kode Anda lebih mudah dikelola).

Gunakan SVN , sering-sering komit, - jadi Anda akan dapat mengembalikan perubahan Anda (saat Anda akan merusak sesuatu).

Temukan seseorang, yang merupakan programmer nyata , dengan latar belakang akademis, jika memungkinkan. Jadi, Anda akan dapat berbicara dengannya berbagi masalah pemula Anda, dan mendapatkan jawaban yang mencerahkan.

Dan, tentu saja, hal yang paling penting adalah menjaga koding, koding, koding .


ps: jika Anda dapat menulis kode C ++ yang berfungsi, dan Anda menulis jaringan saraf (!) - maka otak Anda sangat cocok untuk pemrograman;) Semoga Sukses!

c69
sumber
2

Ada jawaban yang bagus di sini.

Putaran besar yang menguntungkan Anda adalah fakta sederhana yang ingin Anda ketahui.

Banyak rekayasa perangkat lunak (yang harus Anda lakukan dengan skeptisisme yang sehat, tentu saja) adalah tentang bagaimana melakukannya dengan cara yang tidak akan Anda sesali nanti. Salah satu contoh adalah penggunaan sistem kontrol versi kode sumber. Lain adalah membagi kode menjadi file sehingga lebih mudah untuk bekerja sedikit demi sedikit. Yang lain adalah menjadi stickler tentang keteraturan - pemformatan kode dan konvensi penamaan. Kebaktian yang tepat tidak masalah sebanyak konsisten tentang itu.

Dengan begitu, ketika Anda kembali ke kode dalam setahun atau lebih, Anda tidak akan berpikir "Siapa yang membuat kekacauan ini?" Anda akan dapat menemukan sesuatu dan mengubahnya tanpa terlalu banyak risiko kerusakan. **

Cara yang baik untuk memulai adalah dengan menemukan berbagai program contoh dan menyelesaikannya. Kemudian Anda dapat menyesuaikannya dengan kebutuhan Anda.

** Salah satu sakit kepala terbesar saya adalah mencoba bekerja dengan kode yang ditulis oleh orang-orang yang tidak menganggap format atau penamaan itu penting.

Mike Dunlavey
sumber
1

Walaupun ada banyak dan banyak sumber daya yang baik tentang bagaimana melakukan dan tidak melakukan hal-hal, pada akhirnya yang paling penting adalah melihat banyak kode dan bekerja dengannya dan melihat betapa mudah atau rumitnya untuk mempertahankannya sendiri.

Cara yang baik untuk belajar adalah memiliki seseorang yang berpengalaman untuk melakukan desain awal dan daripada meninjau kode Anda dan menunjukkan teknik yang berguna seperti yang Anda gunakan untuk mereka. Jadi jika Anda secara kebetulan berhasil membujuk atasan Anda untuk mempekerjakan setidaknya satu insinyur perangkat lunak dengan pengalaman dalam memimpin proyek perangkat lunak (kecil) dan merancang perangkat lunak untuk memimpin proyek, saya pikir itu akan menjadi pilihan terbaik.

Jika Anda tidak dapat membuat siapa pun menidurkan Anda, ada beberapa hari ini gerakan open-source yang kuat. Mungkin Anda menggunakan beberapa alat sumber terbuka dalam pekerjaan Anda, jadi coba perbaiki bug di dalamnya atau tambahkan fitur sederhana yang telah Anda gunakan untuk dan diskusikan bagaimana melakukan hal-hal tersebut dengan komunitas masing-masing. Ini adalah latihan belajar langsung yang tidak berguna untuk mempelajari cara menerapkan aturan umum apa pun yang akan Anda temukan di buku tentang masalah praktis yang sebenarnya.

Jan Hudec
sumber
0

Satu hal yang saya benar-benar akan merekomendasikan untuk belajar pengkodean kualitas dan masalah arsitektur akan menjadi ajaran "Paman Bob" (Robert Martin). Dia memiliki beberapa video $ 1 yang berukuran sangat baik, jika mungkin terlalu aneh, dan juga beberapa buku bagus.

Domenik
sumber