Apa hal terburuk yang lupa dipikirkan oleh pengembang yang tidak berpengalaman? [Tutup]

15

Sebagai pengembang muda, saya akan merasa berguna untuk mendapatkan beberapa saran mengenai hal-hal untuk dipikirkan dalam rangka mengembangkan aplikasi berkualitas tinggi. Dalam kursus kuliah saya, sebagian besar guru menekankan validasi input dan beberapa berbicara tentang masalah keamanan, tetapi tidak ada yang membahas pentingnya hal-hal lain tertentu, seperti logging misalnya.

Apa saja kesalahan yang cenderung dilakukan oleh pengembang yang tidak berpengalaman yang dapat menyebabkan frustrasi bagi pengembang yang lebih berpengalaman?

awmckinley
sumber
1
Saya tidak akan menyebut keamanan dengan tepat sebagai "checklist" - keamanan harus dipertimbangkan di semua tingkat desain, tidak ditambahkan sebagai renungan. Fitur keamanan! = Fitur aman!
Billy ONeal
Mungkin "daftar periksa" menyiratkan hal yang salah. Saya tidak mencari daftar hal untuk dipikirkan di akhir pengembangan; Saya ingin tahu hal-hal apa yang harus dipertimbangkan ketika Anda sedang mengembangkan aplikasi. Apakah Anda memiliki saran untuk bagaimana saya dapat menyatakan kembali pertanyaan saya?
awmckinley
@awmckinley: Lalu pertanyaan Anda adalah "bagaimana cara mengembangkan aplikasi" - tetapi pertanyaan itu terlalu luas untuk dapat dijawab.
Billy ONeal
@ Billy ONeal: Baru saja mengedit pertanyaan saya. Apakah ini lebih masuk akal?
awmckinley
1
Itu lebih masuk akal, tapi sayangnya itu masih tidak meminta lebih dari sekadar daftar praktik terbaik. Pertanyaan-pertanyaan konstruktif benar-benar harus tentang masalah - masalah spesifik , atau paling tidak memerlukan jawaban untuk lebih dari satu-baris sindiran pendapat.
Aaronaught

Jawaban:

12

Saya menemukan hal utama yang dilupakan oleh pengembang baru adalah bahwa di dunia nyata mereka sering bekerja sebagai bagian dari tim. Ini menunjukkan dirinya sebagai ..

  • Memeriksa kode yang merusak build
  • Tidak menggunakan kembali kode yang sudah ada di sana
  • Melakukan sesuatu dengan cara mereka dan bukan dengan cara yang sama seperti orang lain - yang membuat perawatan menjadi mahal

Itu bukan untuk mengatakan bahwa kode mereka tidak sampai dengan awal dalam isolasi, tetapi mereka tidak bekerja dalam isolasi lagi.

Garry
sumber
+1: pada dasarnya, ini adalah masalah yang Anda hadapi. Junior coder mungkin buruk dalam pengodean, tetapi kemudian beberapa yang berpengalaman juga buruk dalam pengodean. Perbedaan utama adalah item seperti ini.
gbjbaanb
8
  1. Tes.
  2. Tes.
  3. Tes lagi.
  4. Kontrol Sumber
  5. Pajak sesuai untuk program apa pun yang Anda targetkan.

Di Windows, pajak-pajak ini adalah :

  • Berurusan dengan lingkungan DPI Tinggi
  • Profil Pengguna Roaming
  • Perpindahan Pengguna Cepat
  • Remote Desktop (mis. Anda tidak ingin menggunakan buffering ganda saat RDP berlaku
  • Bermain dengan baik dengan Manajemen Penyimpanan Hirarkis
  • Banyak Monitor
  • 64 bit Windows

Pada hampir semua platform, Anda harus berurusan dengan:

  • Unicode
  • Lokalisasi
  • Manajemen Daya
Billy ONeal
sumber
Maaf, Billy. Mungkin saya tidak jelas dalam cara saya menanyakan pertanyaan saya: Saya tidak mencari banyak praktik pembangunan (seperti kontrol sumber). Saya pikir itu tercakup dengan cukup baik dalam Apa yang akan Anda tambahkan dalam Daftar Periksa Proyek Pengembangan Perangkat Lunak ini? . Bagian "pajak" pasti sangat membantu.
awmckinley
3
@awmckinley: Alasan saya memunculkan kontrol sumber adalah bahwa Anda tidak akan dapat mengelola rilis secara efektif tanpa dapat memiliki banyak kepala pengembangan - bahkan jika Anda hanya pengembang solo. Anda perlu memikirkan rilis n +1 bahkan ketika Anda sedang mengerjakan rilis n.
Billy ONeal
5

Dalam pengalaman saya, satu hal yang hampir tidak diingat oleh semua pengembang yang tidak berpengalaman adalah Anda (hampir selalu) bekerja di lingkungan komersial. Kode Anda harus baik, tetapi tidak sempurna. Yang paling penting bukanlah kesempurnaan, itu adalah kode Anda dikirimkan.

Dengan kata lain, memberikan potongan kode yang sempurna tiga bulan setelah perusahaan Anda bangkrut tidak baik bagi siapa pun.

Menurut pendapat saya, ini adalah salah satu cara yang paling signifikan di mana perkembangan di dunia nyata berbeda dari pembangunan seperti yang diajarkan di universitas.

Simon Whitaker
sumber
3

Pertanyaan yang sangat luas; untuk menjawab secara terperinci adalah ... banyak buku.

Berikut adalah daftar periksa definisi sistem umum untuk membantu Anda memulai -

  • Apa sumber daya penting dalam sistem dan bagaimana tuntutan mereka berubah?
  • Apa kemampuan kinerja sistem dan bagaimana mereka perlu tumbuh?
  • Area persyaratan mana yang mungkin menjadi tidak perlu dan dapat dilepas?
  • Apakah ada kemungkinan kebutuhan untuk memiliki versi sistem yang berbeda dengan kemampuan yang berbeda?
  • Apa implikasinya terhadap sumber daya manusia dan komputer jika perubahan yang diidentifikasi terjadi?
  • Apa dampak sistem baru terhadap sistem operasi yang ada?
  • Area fungsi mana yang memiliki peluang lebih besar untuk membutuhkan perubahan mengingat pengalaman dengan sistem?
  • Siapa pengguna masa depan sistem?
  • Apa pengelola masa depan sistem?
  • Apa perangkat tambahan di masa depan yang mungkin diidentifikasi oleh pengguna di masa depan sebagai sistem?
  • Bagaimana sistem masuk ke dalam rencana keseluruhan pengguna dan bagaimana mereka diharapkan untuk berkembang?
Steven A. Lowe
sumber
1

Decoupling bersih dari sistem pada mesin pengembangan seseorang, dan mesin target, sehingga seseorang tidak berakhir dengan situasi "Yah, itu bekerja pada mesin saya".

Dan seberapa cepat Anda dapat merekonstruksi mesin pengembangan Anda?

  • Apakah Anda tahu paket mana yang Anda butuhkan?
  • Apakah Anda memiliki solusi tombol untuk membangun kembali basis data Anda?
  • Apakah Anda memiliki solusi tombol untuk menguji integritas pada kode sumber?
indi
sumber
1

Saya pikir itu mungkin desain - yaitu pendekatan berpikir tentang apa yang akan Anda lakukan sebelum melakukannya.

Terlalu banyak coders yang tidak berpengalaman (ingat ketika Anda pertama kali mulai) suka melompat dan memulai sesuatu, kemudian tambahkan sedikit lebih banyak dan iklankan sedikit lebih banyak dan tambah sedikit lebih banyak. Pendekatan ini dapat bekerja jika Anda telah merencanakan untuk melakukannya (setiap bit dapat diuji saat Anda melakukannya), tetapi sebagian besar coders yang tidak berpengalaman hanya fokus pada bagian yang mereka tulis .. sehingga semua penambahan cenderung diretas di atas. Dan kita semua melihat kode yang berevolusi seperti itu!

Organisasi adalah hal berikutnya, seringkali mereka terlalu fokus pada kode yang mereka tulis untuk mengingat bagaimana mereka melakukannya, dan apa yang diperlukan. Jadi mereka lupa untuk bundel atau mendokumentasikan ketergantungan yang diperlukan. Mereka juga cenderung meletakkan hal-hal di mana mereka jatuh, saya harus mengkritik seorang junior minggu lalu yang memeriksa kode-nya di direktori root termasuk 3 wsdl, 2 di antaranya adalah file yang sama, dan satu set dll pihak ke-3 yang dia komit di sub direktori dan direktori root. Kode tidak diformat ke standar apa pun yang dapat Anda pikirkan, dan ada beberapa fungsi yang ada tetapi tidak pernah dipanggil.

Jelas dia membuatnya bekerja tetapi tidak rapi, dan itu berarti instalasi, dan pemeliharaan, akan merepotkan.

gbjbaanb
sumber
1

Saya pikir perbedaan terbesar ada pada teknik pengkodean. Setiap orang memiliki pendekatan yang sedikit berbeda, tetapi pengembang yang tidak berpengalaman cenderung menghasilkan kode yang:

  • tidak menangani kasus batas
  • jauh lebih panjang dari yang dibutuhkan
  • memiliki karakteristik kinerja yang buruk dalam skenario yang relevan
  • memiliki pemisahan keprihatinan yang buruk
  • tidak memiliki teknik perlindungan diri seperti penggunaan const, disegel, hanya baca, dll.
  • cara aneh mengembalikan data dan koleksi data
    • ini lebih menunjukkan kurang pengalaman dengan platform
Kevin Hsu
sumber
0

Karena Anda menanyakan hal terburuk, maka jawaban saya adalah sebagai berikut:

  1. Lupa berpikir untuk membersihkan mesin pengembangan dari spywares, malwares, dan virus trojan.
  2. Lupa berpikir membuat cadangan reguler disimpan di penyimpanan aman yang berada di lokasi geografis yang berbeda.
xport
sumber
0

Yang terbesar saya adalah mengingat untuk merencanakan fleksibilitas. Di kelas, persyaratannya hampir selalu ditetapkan di awal dan tidak pernah berubah. Dalam perangkat lunak, seringkali sebaliknya: Anda mendapatkan serangkaian persyaratan yang tidak jelas, dan sering berubah (bahkan setiap hari). Hal terbaik yang dapat Anda lakukan untuk membantu ini adalah dengan kode yang fleksibel: kopling longgar, fungsi kecil yang dapat digunakan secara andal dalam berbagai situasi, dan menghindari hal-hal yang sulit dikodekan sebanyak mungkin.

Pada waktunya, Anda mungkin akan belajar a) hal-hal apa yang paling mungkin berubah, dan sebaliknya apa yang kemungkinan tidak akan berubah, dan b) bagaimana mengantisipasi perubahan permintaan dan merencanakannya.

Caleb Huitt - cjhuitt
sumber