Saya seorang mahasiswa teknik komputer. Saya sudah memikirkan bagaimana saya bisa menangani proyek besar. Apa yang harus menjadi langkah pertama saya untuk mencapai tujuan saya dengan cara yang lebih efisien dan efektif?
Ketika saya membuat sebuah proyek, saya tidak tahu bagaimana saya harus mulai mengerjakannya. Sering kali, saya mengabaikannya. Namun, saya tidak ingin mengabaikan ide proyek saya lagi.
Sekarang, saya bertanya kepada Anda semua, adakah yang bisa berbagi pengalamannya? Bagaimana saya harus memulai proyek ketika yang saya miliki hanyalah sebuah ide?
programming-practices
project-management
pengguna12654
sumber
sumber
Jawaban:
Lupakan pengkodean dan pengaturan lingkungan pengembangan sejenak. Jika Anda ingin memulai proyek besar, hal pertama yang perlu Anda lakukan adalah menangani tujuan dan ruang lingkup proyek.
Apa yang saya sarankan adalah membuka pengolah kata, dan menulis dokumen 'tujuan proyek'. Jelaskan apa idenya, dan tujuan umum dari perangkat lunak yang ingin Anda tulis. Kemudian daftarkan tujuan fungsionalitas proyek. Maksud saya, tidak menjelaskannya, melainkan mendeskripsikan berbagai fungsi yang berbeda yang harus didukung oleh produk jadi. Jadi, jika Anda menulis perangkat lunak untuk menjalankan sekolah, Anda mungkin mencantumkan 'manajemen guru' sebagai bagian dari fungsionalitas, dan kemudian menjelaskan apa yang akan mencakup fungsionalitas itu (melacak info kontak, jadwal kelas, dll).
Kemudian bagian terberat: Ini bukan sesuatu yang perlu Anda lakukan di depan, tetapi seiring berjalannya waktu. Setiap bit yang sama pentingnya dengan daftar fitur yang ingin Anda tambahkan adalah meninjau fungsionalitas yang Anda jelaskan dalam dokumen tujuan Anda, dan perhatikan fitur-fitur yang dapat Anda jalani tanpa di versi pertama program. Ini adalah kunci untuk mengelola ruang lingkup.
Salah satu alasan utama orang gagal pada proyek yang lebih besar adalah karena mereka tidak tahu kapan harus berhenti mengerjakannya. Mereka tidak merasa itu 'dilakukan' karena ide-ide terus datang, dan itu tidak pernah dilepaskan. Akhirnya mereka kehilangan minat, dan Anda memiliki satu lagi karya yang setengah jadi. Jadi, Anda ingin memastikan Anda memiliki pegangan yang baik pada fungsi yang benar-benar penting untuk mencapai bagian dasar dari tujuan Anda. Itu adalah target pertama Anda.
Inilah cara saya memulai semua proyek non-sepele sekarang. Ini membantu saya menjaga fokus, dan membantu menjaga ruang lingkup dan tujuan dari 'berkembang' selama pengembangan.
sumber
Saya pikir Linus mengatakan yang terbaik
sumber
Saya berasumsi Anda telah melakukan proyek sebelumnya dan bahwa Anda berada di perguruan tinggi / universitas yang tidak mengajarkan kontrol versi / sumber. Jika Anda ingin melihat beberapa proyek, Anda selalu dapat membuka repositori sumber terbuka seperti Github (menggunakan Git), Bitbucket (menggunakan Mercurial), Google Code (menggunakan Mercurial, Git, dan Subversion), CodePlex (Mercurial dan Subversion / TFS), SourceForge (Banyak), dll dan lihat pada basis kode mereka. Kesamaan yang mereka miliki adalah bahwa mereka menggunakan perangkat lunak kontrol sumber.
Ada banyak informasi mengenai cara menggunakannya, jadi saya sarankan Anda belajar cara menggunakannya, karena ini adalah praktik standar industri. Berikut ini beberapa panduan visual untuk membantu Anda:
Hanya ada begitu banyak yang dapat Anda lakukan di waktu luang Anda. Mulai dari yang kecil : Buat proyek dari awal, letakkan di repositori kode sumber. Mengkomit perubahan pada repositori kode sumber Anda setiap kali Anda ingin menambahkan sesuatu ke proyek kecil Anda. Pada saatnya nanti akan menjadi besar dan jika Anda ingin kembali, Anda selalu dapat mengembalikan atau mengembalikan perubahan yang telah Anda buat dengan sistem kontrol versi.
sumber
Sangat normal terkena sindrom "kertas kosong".
Anda memiliki proyek besar dalam pikiran, yang terlihat fantastis, tetapi ketika Anda duduk di meja mencoba melakukan sesuatu, Anda tiba-tiba terhalang dan tidak dapat melakukan apa pun. Kemudian Anda membuka solitaire dan membuat rekor baru.
Anda benar-benar harus mulai melakukan sesuatu yang berkaitan dengan proyek, sehingga Anda merasa sudah dilahirkan.
Anda mungkin tidak ingin segera menulis kode. Anda dapat mulai dengan menulis apa yang harus dilakukan oleh proyek Anda, atau Anda ingin melakukannya. Ambil pena dan kertas dan mulai menulis. Anda bisa mulai dari detail atau dari gambar yang lebih besar. Coba keduanya, lihat apa yang terbaik.
Anda dapat mencoba mendefinisikan fungsi proyek, bagian-bagian yang berbeda, bagaimana bagian-bagian itu berkomunikasi di antara mereka. Saya merasa nyaman dengan post-it, mereka menyenangkan dan Anda dapat mengubahnya seiring kemajuan Anda. Biarkan mereka mengikuti pikiran dan ide Anda.
Atau mungkin Anda dapat memulai prototipe beberapa fungsi atau kelas. Anda dapat menggunakan bahasa apa pun yang Anda sukai untuk ini, bahkan bahasa yang tidak ada dan Anda baru saja menemukan.
Setelah beberapa waktu Anda akan memiliki sesuatu untuk dikerjakan, dan proyek Anda tidak hanya akan di pikiran Anda. Anda benar-benar melakukan sesuatu.
Ketika Anda merasa nyaman untuk benar-benar memulai proses pengembangan, sekarang saatnya untuk perencanaan yang cermat, mendokumentasikan, membuat prototipe, mengumpulkan semua teknologi dan perangkat lunak yang diperlukan, dan sebagainya.
Tetapi jangan mulai sampai Anda benar - benar merasa ini adalah waktu yang tepat!
sumber
Proyek-proyek besar dibentuk dari banyak proyek yang lebih kecil. Anda mungkin memiliki satu ide besar atau persyaratan proyek - katakanlah, aplikasi yang mengelola kontak.
Memecahnya; tanyakan pada diri sendiri, 'potongan kecil apa yang saya butuhkan untuk melakukan ini?'
Setelah Anda menentukan bagian yang lebih kecil, ulangi; Anda mungkin menemukan bahwa beberapa bagian perlu diuraikan lebih lanjut. Idenya adalah bahwa Anda menentukan tujuan yang paling mudah dikelola untuk masing-masing bagian yang lebih kecil. Belajar menggunakan prinsip-prinsip disiplin dalam desain dan pengembangan (seperti Agile-TDD) dan tujuan yang lebih kecil dan lebih mudah dikelola akan terpenuhi.
sumber
Buat Garis Besar
Anda memiliki ide besar, tetapi tidak tahu bagaimana Anda akan menyelesaikan tugas Anda. Buat garis besar tentang apa yang akan Anda lakukan. Tuliskan langkah-langkah yang akan Anda ambil, apa yang akan Anda butuhkan, bahasa apa yang akan Anda gunakan, dll. Pastikan Anda memiliki segalanya yang terorganisir, atau proyek ini akan menjadi kecelakaan total.
Jadwalkan Langkah Anda
Saya menyebutkan ini sebelumnya, tetapi ini sangat penting. Jika Anda memiliki waktu yang dipetakan, Anda dapat memiliki perkiraan tanggal selesai kapan proyek Anda akan selesai, dan berapa lama langkah-langkah proyek akan dilakukan. Ini, sekali lagi, organisasi dan akan membuat Anda tetap berjalan.
Temukan Alat Untuk Pekerjaan
Jika Anda akan memulai proyek besar, Anda akan memerlukan bantuan. Untuk organisasi kode, dan Sistem Kontrol Versi yang bagus, Git sangat bagus karena Git menyimpan semua kode Anda dalam satu repositori. Untuk info lebih lanjut tentang Git, lihat tautan yang saya berikan kepada Anda.
Anda juga perlu memastikan bahwa Anda menggunakan bahasa yang akan membantu Anda melakukan apa yang ingin Anda lakukan. Pastikan Anda dapat membuat proyek Anda sebelum memulai. Saya tidak mengatakan jangan belajar sesuatu yang baru, tetapi pelajari sebelum Anda mulai.
Mendapatkan bantuan
Proyek besar biasanya tidak dilakukan sendiri. Hubungi sesama siswa, orang-orang di komunitas Anda yang dapat memprogram, dan siapa pun yang menurut Anda dapat membantu Anda sebelum memulai. Jangan takut untuk bertanya.
Memulai!
Jangan main-main, menunggu orang lain untuk memulai proyek Anda dan kemudian berkata "Saya punya ide itu!". Itu akan selamanya menghantui Anda ...
sumber
Mungkin itu penuh dengan klise tapi ... Aku akan tunduk.
Untuk dapat menangani proyek besar, Anda terutama membutuhkan satu hal: pengalaman. Pengalaman memberi Anda semua yang Anda butuhkan:
Jadi, Anda dapat melakukan dua hal:
Saya harap itu membantu.
sumber
Definisi saya tentang "proyek besar" adalah "proyek di mana masalah utama adalah koordinasi peserta dan komunikasi di antara mereka" (proyek menengah adalah ketika manajemen sama sulitnya dengan masalah teknis, yang kecil adalah ketika masalah teknis lebih penting daripada yang manajemen; perhatikan bahwa proyek satu orang dalam jangka panjang bisa menjadi proyek besar - mengoordinasi dan berkomunikasi dengan diri Anda di masa depan tidak jauh berbeda dengan melakukan hal yang sama dengan orang lain).
Langkah pertama untuk dapat menangani (dengan "memiliki peran utama") proyek besar adalah untuk berpartisipasi dalam beberapa proyek besar tanpa memiliki peran utama. Langkah kedua adalah mencapai level peran utama sambil dibimbing oleh seseorang yang memiliki pengalaman dengannya.
Pendekatan alternatif adalah meningkatkan ukuran proyek secara progresif dan belajar dari pengalaman Anda ...
sumber
Beberapa ide sudah matang untuk seorang insinyur hanya untuk melompat masuk dan mulai menulis kode. Proyek-proyek ini mungkin besar atau kecil, tetapi mereka memiliki satu kesamaan: masalah yang harus dipecahkan. Saya sudah memulai proyek seperti ini berkali-kali, dan hanya masalah saya membangun disiplin dalam menulis dokumentasi yang baik di muka, dan mengikuti praktik terbaik terkait dengan kontrol kode sumber, komunikasi, dan kolaborasi.
Proyek-proyek besar yang saya miliki hanyalah kuman dari sebuah gagasan, membutuhkan sedikit persiapan dalam pengalaman saya. Hal pertama yang saya lakukan adalah mulai berbicara tentang ide saya dengan orang lain untuk melihat apakah ada yang berbagi pemahaman saya tentang masalah yang saya pecahkan, dan untuk memvalidasi pendekatan terencana saya dalam menyelesaikan masalah. Jadi ajaklah satu atau dua teman untuk minum bir, atau undang mereka ke kamar asrama Anda untuk Cheetos. Tetapi bersenang-senanglah dengan proses ini karena melalui proses inilah Anda mungkin lebih memahami masalah yang Anda selesaikan, menemukan ide-ide hebat lain yang dapat Anda bawa untuk menyelesaikan masalah, berlatih menjual ide Anda kepada orang lain, dan mungkin bahkan mulai membangun sebuah tim orang untuk membantu Anda menyelesaikannya.
sumber
Membagi hal-hal besar menjadi hal-hal kecil.
Anda tidak dapat bekerja untuk "mencapai kedamaian dunia". Alih-alih Anda bekerja untuk melarang Senjata Pemusnah Massal, Anda mendorong demokrasi, Anda memberikan bantuan pembangunan, Anda mendorong pertukaran budaya dan ilmiah dan sebagainya.
sumber
Saya pikir sesuatu yang tidak disentuh oleh banyak jawaban ini adalah menyelesaikan sesuatu yang nyata, dan memaksa diri Anda untuk menyelesaikannya.
Kadang-kadang Anda terjebak dalam 'tanah pemikiran' di mana Anda merasa semua yang tersisa hanyalah kebosanan mengetik, tetapi sebenarnya memulai dengan sepotong kecil proyek Anda dan implementasinya menyenangkan dan menantang.
Saya tahu banyak orang yang seperti ini, termasuk saya, sampai saya benar-benar pergi, saya tidak menyelesaikan apa-apa, saya tidak bisa - hanya berpikir dan berencana untuk memulai sebuah proyek. Saya harus memilih bagian yang bisa saya implementasikan, dan sampai ke sana dan kemudian aliran dimulai.
sumber
tidak ada alasan untuk melakukan sesuatu tanpa tujuan. Anda memerlukan cerita pengguna yang menunjukkan perlunya kode yang ingin Anda tulis. Anda harus membingkai cerita pengguna ini dalam format berikut:
Sebagai [X]
saya ingin [Y]
sehingga [Z]
Ini mungkin terlihat terlalu sederhana, tetapi memberi Anda kerangka kerja untuk tidak hanya mendefinisikan pengguna, tetapi juga menentukan kebutuhan dan apa hasil akhirnya dalam satu kalimat. Anda akan memiliki banyak dari ini. Anda akan menghasilkan lebih banyak seiring berjalannya waktu. Setelah Anda memilikinya, Anda dapat mulai mengembangkan kode Anda. Ketika Anda memiliki lebih banyak ide atau mencari tahu hal-hal lain. Anda kembali dan menulis lebih banyak cerita pengguna sehingga Anda tidak melupakannya. Itu adalah tempat terbaik untuk memulai.
Pengembangan Berbasis Perilaku menggunakan pendekatan ini dan situs di tautan memiliki beberapa contoh penggunaan format ini untuk mengungkapkan cerita pengguna.
Saya pikir ini akan menjadi cara tercepat dan paling terorganisir untuk beralih dari ide ke kode.
sumber
Saya akan mengambil setumpuk perekat kuning dan spidol ajaib dan duduk di sebuah ruangan di mana ada papan tulis besar sehingga saya bisa bertukar pikiran.
Saya hanya akan mulai menuliskan frasa sederhana yang muncul di pikiran seperti Menu Utama, Laporan, Basis Data, Otentikasi, dll. :
Buka File, Simpan File, Simpan File Sebagai, Cetak dll dan tempel ini di papan tulis di bawah menu utama.
Ketika ide-ide muncul di kepala Anda, tuliskan ... baik, buruk, bodoh, apa pun yang diterima. Tempelkan di papan tulis. Saat Anda melihat papan tulis, lebih banyak ide akan muncul dan pola akan muncul. Pada titik tertentu Anda akan mulai merasakan apa yang Anda rencanakan untuk dikembangkan.
Perekat kuning sangat bagus dan bisa dipindah-pindahkan dengan cukup cepat.
Begitu semuanya mulai menyatu, Anda membagi pemikiran ini menjadi kelompok-kelompok. Kemudian Anda dapat bertukar pikiran pada tingkat kelompok tunggal. Saya akan mengambil gambar papan tulis di berbagai tahap jika Anda ingin melihat seperti apa itu dua puluh menit yang lalu sebelum semuanya berubah.
Akhirnya, Anda akan memiliki gagasan yang cukup bagus tentang potongan utama dari hal-hal yang harus dilakukan. Anda bisa mendapatkan satu folder untuk masing-masing potongan ini dan terus melemparkan ide ke dalamnya ketika mereka mendatangi Anda.
sumber
Karena Anda seorang siswa, saya akan menganggap Anda siswa-besar dan bukan profesional-besar. Yang terakhir membutuhkan pertimbangan bisnis dan kolaborasi tambahan. Saya baru saja memulai proyek baru minggu lalu, jadi prosesnya segar dalam pikiran saya.
Hal pertama yang saya lakukan adalah meneliti solusi dan perpustakaan yang ada . Saya tidak suka menemukan kembali roda sedapat mungkin. Penelitian ini juga merupakan faktor besar dalam memilih bahasa untuk proyek tersebut. Beberapa bahasa memiliki kode yang lebih baik untuk tugas-tugas tertentu.
Hal berikutnya yang saya lakukan adalah membuat folder dan meletakkannya di bawah kendali sumber . Ini sesederhana seperti
git init .
saat ini.Selanjutnya saya membuat "halo dunia" bekerja . Ini membuat saya tahu lingkungan pengembangan saya sudah diatur dengan benar.
Selanjutnya saya mendapatkan "hello world" untuk perpustakaan pihak ketiga yang berfungsi . Ini adalah batas minimum yang diperlukan untuk menunjukkan bahwa saya menautkan dan menggunakan perpustakaan dengan benar. Untuk pustaka database, itu menghubungkan dan menjalankan kueri sederhana, misalnya. Untuk toolkit GUI, ini menampilkan jendela.
Selanjutnya saya mengatur skrip pembuatan dan kerangka kerja pengujian . Ini adalah semut atau makefiles atau apa pun, dan jauh lebih mudah untuk diatur ketika proyek Anda masih kecil.
Selanjutnya saya membuat struktur data . Disebut juga layer "model". Ini adalah bagian yang menyimpan semua yang perlu diingat oleh program Anda untuk melakukan tugasnya. Saya melakukan banyak desain di atas kertas, lalu tambahkan saja stub. Bagian desain ini biasanya yang paling mudah. Misalnya, program catur akan membutuhkan benda untuk menyimpan kotak permainan, pemain, potongan, urutan gerakan, dll.
Pada titik ini, saya memiliki basis yang cukup bagus untuk sebuah program dan biasanya cukup jelas apa langkah selanjutnya untuk proyek tersebut. Lalu saya hanya mengambil satu langkah kecil pada satu waktu, dengan kode yang bekerja sampai batas tertentu di sepanjang jalan.
sumber
Jika semua yang Anda miliki adalah "Ide Besar", Anda akan membutuhkan banyak hal (yang dijelaskan dengan sangat baik dalam jawaban lain), dan khususnya 2: waktu dan motivasi ini .
Kesulitan terbesar ketika Anda bekerja sendirian di proyek pribadi adalah bahwa, biasanya, Anda tidak punya banyak waktu untuk dihabiskan setiap minggu sehingga Anda tidak melihat banyak kemajuan dan dengan cepat mulai kehilangan motivasi.
Jadi seperti yang sudah dikatakan, ambil langkah kecil , itulah kuncinya.
Tapi ini belum semuanya, Anda harus mengambil langkah kecil dan bermanfaat ! Artinya, langkah-langkah yang akan memberi Anda nilai terbesar dan menunjukkan konsep-konsep kunci dari ide besar Anda.
Misalnya, jika Anda bekerja pada perangkat lunak daftar super todo baru dengan interaksi pengguna yang hebat . Jangan mulai dengan penyimpanan dan basis data sampai Anda benar-benar membutuhkannya. Mulailah dengan antarmuka pengguna yang inovatif: menyenangkan dan memiliki nilai. Itu akan membuat Anda bangga, membuat Anda tetap termotivasi dan memungkinkan Anda untuk segera memeriksa apakah ide Anda benar-benar bagus.
sumber
Hal pertama yang perlu Anda lakukan adalah duduk dan menggambarkan ide itu secara tertulis. Itu tidak akan menjadi proyek sampai saat itu, dan bahkan kemudian, Anda memiliki beberapa pekerjaan untuk mengambilnya dari menjadi sesuatu yang sesingkat ide menjadi sesuatu yang nyata seperti proyek.
Setelah Anda mencapai sejauh itu, Anda dapat mulai melihat mengubahnya menjadi sebuah proyek, mengidentifikasi bagaimana Anda dapat memecahnya menjadi langkah-langkah terpisah yang dapat diimplementasikan secara logis.
Kemudian buat garis waktu untuk menerapkan langkah-langkah tersebut. Tinjau kembali kemajuan pada interval tertentu sehingga Anda dapat mengendalikan proses itu - alih-alih memiliki gagasan merayap yang tidak pernah Anda pikirkan sejak awal dan menambahkannya ke dalam campuran.
Identifikasi garis finish awal dan bertujuan untuk itu. Semakin Anda tidak patuh pada hal itu, semakin besar kemungkinan proyek tersebut akan tenggelam di bawah beban gagasan tambahan, dan semakin Anda tidak bersemangat untuk menyelesaikannya karena tampaknya akan hidup selamanya.
sumber
Upaya kode biasanya sekitar 20% (+ -10%) dari anggaran proyek. Berfokus pada mendapatkan kode yang benar tidak ada gunanya, ada 80% dari upaya yang belum Anda atasi, jadi mendapatkan pengelolaan kode yang sempurna masih menyisakan hanya 20 pekerjaan yang dilakukan.
Bagaimana jika proyek Anda tidak memiliki pengguna? Bagaimana jika itu sempurna tetapi diterbitkan satu minggu setelah file "Acme Patent Trolls" untuk paten atas ide tersebut, dan ternyata itu menjadi Facebook berikutnya?
Lihatlah masalah siklus hidup proyek standar berikut Persyaratan, Desain, Kode, Tes, Integrasi, Penempatan, Pelacakan dan koreksi cacat, manajemen perubahan persyaratan (permintaan tambahan). Rilis rencana, alokasi sumber daya (berapa jam sehari Anda berencana untuk melakukannya, dan apakah Anda benar-benar akan mengerjakan proyek), Legal (Freedon untuk beroperasi) dll.
Jika semua hal di atas ada, kode yang sangat buruk pun akan berhasil. Jika tidak ada di atas ada di tempat, kode terbaik akan gagal.
Saya bukan seorang pemain taruhan, tetapi saya akan menaruh uang untuk itu proyek "besar" pertama Anda akan gagal, dalam banyak dan beragam cara yang tidak dapat Anda bayangkan. Jangan khawatir, terus maju dan gagal, belajar darinya dan lakukan yang berikutnya. Tidak memulai akan menjadi kejahatan nyata. Jika Anda berhasil pertama kali, Anda memiliki karier yang solid dalam manajemen bisnis, bukan pemrograman.
Jadi untuk menjawab pertanyaan Anda, singkirkan alat perangkat lunak, dan tarik alat "perencanaan bisnis" Anda. Cari tahu MENGAPA Anda melakukannya, untuk SIAPA lalu MENGAPA dan KAPAN mereka menginginkannya. (Anda bisa menjadi pelanggan Anda sendiri, tetapi tetap melakukan latihan itu). Tulis ini dalam "Rencana Bisnis" dan buatlah dari mereka.
sumber
ulangi langkah terakhir sampai proyek selesai; menerima bahwa mungkin butuh bertahun - tahun , dan terus bergerak maju
sumber
Semua jawaban di sini bagus dan semuanya, tetapi dalam semua kejujuran, tidak masalah berapa banyak kontrol versi, gitting, diagram alur dan mark-up yang Anda buat, yang penting adalah bahwa Anda memiliki aplikasi fungsional, aplikasi fungsional didefinisikan sebagai salah satu yang memecahkan masalah yang disimpulkan, semua hal lainnya cukup banyak tidak relevan.
Mulai pengkodean, kodekan ke fase fungsional, jalankan beberapa tes, debug, luncurkan, dan ulangi dengan fitur dan fungsionalitas baru (jika Anda menganggapnya perlu), banyak yang menghalangi startup ramping - yang merupakan metode manajemen yang gesit. dan pengembangan untuk menghasilkan lebih sedikit limbah (atau seperti yang didefinisikan seseorang: karya setengah jadi).
sumber
Daftar hal yang harus dilakukan ketika memulai proyek baru:
sumber