Metodologi / alat untuk ketika mengembangkan sendiri [ditutup]

10

Misalkan Anda harus mengembangkan perangkat lunak berukuran sedang, sepenuhnya sendiri. Seperti apakah itu proyek pribadi yang ingin Anda capai.

Metodologi / alat apa yang akan Anda gunakan untuk menentukan apa yang perlu dikembangkan, dipelajari dan memiliki gagasan global tentang apa sistem itu juga dalam perinciannya?

Pada dasarnya untuk menjaga diri Anda di jalur dan tidak tersesat di jalan.

Cassio
sumber
3
Pensil, kertas, dan otakku. Memiliki papan tulis membantu. Serius, banyak pekerjaan desain saya terjadi tepat di IDE. Apakah Anda memiliki pertanyaan spesifik, berdasarkan masalah yang sedang Anda hadapi? Ini akan membantu kami menjawab pertanyaan jika kami tahu secara spesifik masalah apa yang Anda coba selesaikan.
Robert Harvey
@RobertHarvey haha ​​Itu sangat benar. Yah, semacam itu. Saya sedang mengembangkan ide yang saya miliki, proyek pribadi. Hanya saja perangkat lunaknya kebetulan lebih besar daripada yang saya bayangkan dan ada hal-hal yang masih harus saya pelajari cara kerjanya dan baru kemudian mencari tahu bagaimana mengembangkannya.
Cassio
1
@RobertHarvey Masalah utama mungkin adalah kurangnya brainstorming pada perincian, melacak apa yang perlu dilakukan dan pandangan tentang sistem secara keseluruhan.
Cassio
2
Saya 99,9% yakin bahwa kita sudah membahas satu atau dua pertanyaan lain, tetapi saya tidak dapat menemukannya saat ini.
Adam Lear
4
Saya selalu berusaha tersesat di jalan. Ini jalan cepat untuk belajar.
Joel Etherton

Jawaban:

5

Biasanya saya hanya menggunakan Mercurial, jika saya ingin fitur saya hanya menambahkannya dan jika saya tidak menginginkannya lagi saya hanya menghapusnya. Juga, saya mencoba menulis komentar komit saya dengan baik sehingga saya tidak tersesat.

eiefai
sumber
Yup - Mercurial adalah salah satu alat yang terasa seperti dibuat oleh Apple :) Sederhana namun kuat, indah namun bermanfaat ...
Rook
4

Mungkin mudah tumbuh di luar jangkauan perhatian Anda. Bukan rentang , luasnya .

Sulit untuk mempertimbangkan terlalu banyak elemen sekaligus .

Dan kemudian ... itu menjadi rollercoaster regresi .
Semua yang Anda lakukan merusak hal-hal sebelumnya, dan mundur tidak membantu.

Untuk menghindari itu, Anda harus menguji regresi secara agresif .
Secara otomatis. (Anda tidak bisa melakukan itu sebaliknya dan tetap waras)

Pengujian akan menambah ketegangan yang sulit bagi energi Anda.

Jika proyeknya tentang UI ... Anda mungkin bersulang:

  • Pengujian UI sulit .
  • Pengujian UI otomatis ... masih sulit .

Ide menit terakhir yang belum teruji untuk proyek yang berfokus pada UI
Daftarkan kerabat dengan waktu luang dan kesukaan mengklik tetikusnya sebagai penguji UI.
Saya berpikir "remaja" di sini.

Masalah lain:

  • Itu akan berlangsung selamanya .
  • Anda akan berhadapan dengan blok penulis .
    (Itu tidak benar-benar ada sebagai suatu kondisi, itu adalah kesalahan label orang yang populer melekat pada kurangnya disiplin mereka )

Jika Anda terbiasa dan menyukai semacam kontrol versi , gunakan itu.
Mulai belajar satu sekarang akan mengalihkan perhatian Anda .

Membentuk ide-ide Anda, sebagaimana telah ditunjukkan, dapat membantu.

Saya telah menggunakan Freemind , CMaps , XMind , yEd , graphviz , dan… sesuatu yang lain.

XMind kurang berguna:

  • sangat cepat untuk memasukkan data ke
  • tata letak otomatis
  • berusaha keras untuk membuat Anda tetap pada topik
  • sangat baik untuk membuat catatan selama pelajaran (saya sangat berharap saya memilikinya di perguruan tinggi )
  • masih sulit digunakan saat memutuskan sesuatu yang belum Anda jelaskan di sana.

Pensil dan buku catatan masih mendapat nilai bagus di sepuluh besar saya:

  • Saya memindai banyak catatan saya
  • Saya membuat banyak gambar explikatif kecil.

    • (Jika Anda berpikir dengan gambar, Anda mungkin tidak akan pernah menemukan alat brainstorming yang memuaskan)

Sebagai upaya terakhir, Anda selalu dapat menyiapkan powerpoint untuk konsumsi Anda sendiri :)

ZJR
sumber
+1. Namun, apakah Anda memiliki saran tentang "memutuskan sesuatu tentang sesuatu yang belum Anda jelaskan"?
Cassio
@Cassio Saya melakukan bolak-balik antara xmind dan pensil + buku sketsa, membuat daftar runcing di libreoffice, menuliskan contoh dan menguji beberapa implementasi yang diperkirakan. Ini adalah proses yang cukup memakan waktu, tetapi Anda harus membuang beberapa jalur pemikiran yang tidak produktif untuk mencapai sesuatu yang terasa benar. (PS: kertas kusut sebelum melemparkan itu katarsis)
ZJR
1
@ZJR Memang. Kadang-kadang saya hanya takut menulis hal-hal yang tidak saya butuhkan dan membuang-buang waktu untuk itu, tetapi sekarang saya melihat bahwa beginilah prosesnya. Awalnya kami menulis beberapa hal yang tidak berguna tetapi kami membaik seiring waktu. :) terima kasih!
Cassio
3

Pemrograman Literate.

Praktisi pemrograman melek huruf dapat dianggap sebagai seorang penulis esai, yang perhatian utamanya adalah eksposisi dan keunggulan gaya. Penulis seperti itu, dengan tesaurus di tangan, memilih nama-nama variabel dengan hati-hati dan menjelaskan apa arti setiap variabel. Dia berusaha untuk sebuah program yang dapat dipahami karena konsep-konsepnya telah diperkenalkan dalam urutan yang terbaik untuk pemahaman manusia, menggunakan campuran metode formal dan informal yang saling memperkuat.

Jika Anda menulis makalah (atau buku atau laporan atau dokumen) tentang proyek Anda, maka Anda cenderung tetap pada tugas.

Mulailah dengan garis besar apa yang Anda lakukan: gunakan ikhtisar kasus, rilis 1, rilis 2, rilis n. Tuliskan ringkasan kasus penggunaan. Prioritaskan mereka. Buat mereka menjadi sprint dan rilis.

Setiap rilis memiliki tampilan kasus penggunaan, tampilan logis, tampilan pemrosesan, tampilan komponen, tampilan penerapan. Untuk sprint, detail case use. Publikasikan dokumen HTML untuk menunjukkan apa yang akan Anda lakukan. Setelah merinci kasus penggunaan untuk sprint, tulis model logis. Tulis kode untuk mendukung ini. Tulis dokumentasi pemrosesan. Tulis kode untuk mendukungnya. Buat modul. Tulis dokumentasi tampilan komponen. Tulis tes dan dokumentasi pendukung. Publikasikan hasil sprint sebagai dokumen HTML.

Ulangi untuk setiap sprint. Tinjau dan edit dokumen Anda dari waktu ke waktu.

Ada banyak dan banyak alat pemrograman melek. Mereka dapat membantu Anda menghasilkan sumber yang membuat dokumentasi dan kode keduanya dari satu teks.

Saya menggunakan sphinx dan PyLit tapi itu karena saya seorang programmer Python.

S.Lott
sumber
Bagus untuk merobek kertas universitas dari itu dan kemudian melupakannya, buruk jika berencana untuk melepaskan atau mempertahankan produk sesudahnya. Semua orang di mana saja harus menggunakan doxygen , bahkan dengan python. Tapi itu hanya karena aku penggemar :)
ZJR
2

Jika Anda ingin menuliskan ide-ide Anda, Anda dapat menggunakan alat pemetaan pikiran seperti XMind atau FreeMind . Kedua alat ini gratis (untuk individu untuk XMind), dan mereka sangat bagus ketika melakukan brainstorming dan mengatur ide-ide Anda. Hal tentang alat ini adalah hanya bahwa Anda memiliki sedikit kesempatan untuk melupakan sesuatu.

Saya pribadi menggunakan Freemind sebelum memulai proyek pribadi terakhir saya. Saya tidak punya metodologi tertentu per se . Saya hanya mengutarakan ide-ide saya selama sesi satu jam sekali per dua hari. Saya pikir bahwa spasi sesi brainstorming membantu saya lebih baik melihat apa yang salah, apa yang tidak penting tetapi dapat berguna dalam versi berikutnya, dll.

Pada komit kode pertama saya, saya juga menyimpan file brainstorming di repositori kode sumber (saya menggunakan bitbucket ) dan terus memperbarui dengan ide-ide terbaru saya.

Jalayn
sumber
Baik sekali. Saya sudah menguji semua ini. Terima kasih!
Cassio
2

Perlakukan itu seperti proyek perangkat lunak nyata (karena itu adalah satu). Hanya ada beberapa hal yang berubah karena jumlah pengembang adalah satu. Anda masih memerlukan kontrol sumber. Anda masih membutuhkan cara untuk mengatur fitur agar ditambahkan bug untuk diperbaiki. Anda masih memerlukan tes otomatis untuk memastikan Anda tidak membuat regresi dalam kode. Anda juga harus memiliki cara otomatis untuk mengkompilasi kode (jika perlu), menjalankan tes dan melihat laporan.

Saya mengerjakan proyek pribadi seperti yang Anda gambarkan. Saya menggunakan Git, Redmine, JUnit, dan Jenkins untuk memenuhi semua kategori yang saya jelaskan. Alur kerja saya adalah:

  • Pilih tiket untuk dikerjakan
  • Cabang basis kode
  • Kembangkan kode dan tes untuk tugas tersebut (komit perubahan ke cabang pada titik penyimpanan yang baik)
  • Gabungkan cabang kembali ke trunk
  • Verifikasi bahwa build berhasil, tes lulus dan tidak ada masalah lain
  • Ulang

Menjaga agar semuanya dikelola dan diorganisir sama pentingnya dengan ketika ada banyak pengembang. Dengan banyak pengembang, Anda perlu mengorganisir sehingga informasi tersebar ke semua orang. Ketika itu hanya Anda, Anda sudah memiliki semua informasi, tetapi mengingat setiap bagian dari sistem itu sulit. Sistem yang dikelola memudahkan Anda dan Anda dapat fokus pada tugas yang ada.

unholysampler
sumber
2

Alat:

  • Sistem Versi Kontrol (walaupun jika Anda satu-satunya pengembang di garasi atau PC pribadi di rumah): GIT, Mercurial, Tourtoise

  • Editor dengan highlight kode sumber, bahkan jika Anda memiliki IDE (Scintilla, Vim, Notepad)

  • Papan tulis dunia nyata, papan tulis, beberapa hal yang tidak sesuai dengan Aplikasi Alat Desainer Anda.

  • Alat Desain: Rational Rose, Umbrello, (UML, ER,) Visio, atau "Alat Desainer Pengembang yang Buruk" seperti Power Point, Corel Draw, Open Office Draw

  • Teks / Kode Sumber Alat perbandingan teks, misalnya WinMerge

umlcat
sumber
Sangat membantu! Saya mempraktikkan semua ini. Terima kasih.
Cassio
1

Itu tergantung pada bagaimana Anda dapat membedakan dan menangani tugas yang berbeda, karena Anda harus melihat setiap langkah dari proses pengembangan.

Saya pikir alat hanya berguna jika Anda sudah tahu cara menggunakannya dan salah satu kesalahan terburuk adalah mempelajari cara kerja alat daripada belajar apa yang harus dilakukan dengannya.

Pertama, menurut pendapat saya, Anda harus menuliskan apa yang Anda harapkan dari perangkat lunak dan apa yang tidak akan dilakukan. Itu poin penting. Langkah selanjutnya adalah membagi sistem akhir menjadi subsistem yang lebih rendah, membuat proses pembangunan lebih mudah. Dan yang tak kalah pentingnya, Anda harus memilih alat Anda. Pada dasarnya IDE yang bagus, VCS, dan pemodel data. Anda dapat menambahkan banyak alat lain untuk membantu, tetapi berhati-hatilah agar tidak memulai pada jalur yang salah.

Yah, awalnya tampaknya tidak begitu menarik, tetapi prosesnya akan menjadi menyenangkan sepanjang waktu.

Lucas Maus
sumber
Ya! Ingat bahwa kode adalah - jika proyek dirancang dengan baik - sebagian kecil dari keseluruhan.
Lucas Maus