Saya adalah pengembang yang cukup baru. Secara profesional saya telah memprogram dalam C # selama dua tahun sebagai magang dan 6 bulan sebagai pengembang junior. Seorang teman keluarga saya membutuhkan bantuan dengan proyek yang ditulis dalam VB.net. Saya belum pernah menggunakan VB.net, jadi saya sedikit khawatir di sana.
Tapi, pertanyaan sebenarnya datang pada kenyataan bahwa begitu saya melihat dokumen untuk proyek saya merasa bahwa tidak ada yang benar-benar baik akan datang dari itu. Saya punya perasaan bahwa itu akan menyebabkan lebih banyak stres daripada yang ingin saya miliki dalam hidup saya saat ini.
Bagaimana pengembang yang berpengalaman membuat keputusan apakah akan mengambil proyek atau membiarkannya? Apa beberapa metrik yang baik untuk membuat keputusan lebih mudah?
Edit
Ini sebenarnya tampak seperti ERP yang sangat besar yang dia ingin saya kerjakan dan saya tidak percaya bahwa dia tahu apa-apa tentang pemrograman jadi saya tidak berpikir fakta bahwa saya sangat junior bahkan telah melintas di benaknya.
Jawaban:
Dari pengalaman saya: Jangan pernah melakukan pekerjaan yang melibatkan uang untuk anggota keluarga yang harus Anda habiskan liburan atau teman yang ingin Anda pertahankan. Salah satu pihak yang terlibat akan selalu merasa seperti pihak lain terlalu banyak menagih atau tidak membayar cukup dan bahwa mereka melakukan bantuan pihak lain. Ketika tenggat waktu muncul, mereka biasanya yang paling tidak mengerti, dan mereka biasanya adalah lubang pantat selama tes beta karena jika Anda memiliki bug - yang Anda akan - mereka tidak akan mengerti. Itu selalu berantakan.
Saya dulu idealis dan berpikir bahwa semua orang hanya membutuhkan keterampilan orang yang lebih baik, tetapi tidak, hanya itu yang terjadi. Orang-orang yang tidak memahami proses pengembangan perangkat lunak akan SELALU panik ketika sesuatu tidak memenuhi harapan mereka saat pertama kali mereka melihatnya. Ini berlaku dalam bisnis dengan manajer proyek seperti halnya dengan anggota keluarga. Masalahnya adalah, Anda harus menjaga hubungan dengan keluarga dan teman, dan segala sesuatunya tidak pernah benar-benar bisnis.
Yang mengatakan, jika proyek ini akan meningkatkan tingkat stres Anda dan Anda tidak perlu uang maka mengapa mengambilnya? Terutama jika Anda sudah memiliki pekerjaan pengembangan perangkat lunak yang Anda ingin unggul, saya akan mengatakan bahwa Anda harus mendedikasikan sebanyak mungkin upaya kerja Anda untuk menjadi luar biasa dalam pekerjaan harian Anda karena di situlah Anda pada akhirnya akan dihargai untuk pekerjaan yang berkualitas.
Jika Anda benar-benar membutuhkan uang, dan Anda setuju dengan kemungkinan kehilangan teman keluarga, maka ambil pekerjaan itu. Hal terburuk yang bisa terjadi - selain dari hal-hal yang saya sebutkan sebelumnya - adalah Anda belajar apa yang Anda lakukan dan tidak pandai, atau Anda belajar bahwa Anda menggigit lebih banyak daripada yang dapat Anda mengunyah menyebabkan proyek menjadi buruk sakit kepala karena kurangnya pengalaman Anda. Saya telah melakukannya dua kali dengan pekerjaan saya saat ini - untungnya saya memiliki majikan yang sangat mengerti. Meskipun itu adalah kesengsaraan ketika saya merasa mati di air, saya muncul programmer yang jauh lebih baik dengan keahlian yang jauh lebih luas daripada sebelumnya.
Tidak ada kalkulus untuk menentukan pekerjaan mana yang harus dilepas dan dipertahankan, hanya pengalaman dan kepribadian Anda. Anda hanya perlu memutuskan apa yang Anda hargai dan mengejar itu. Hal yang perlu dipertimbangkan:
Apakah ini proyek yang akan saya nikmati bekerja? Apakah tim itu tim yang akan saya nikmati bekerja sama?
Jenis pembayaran apa yang akan mereka tawarkan? Jika tidak ada, maka pengembangan profesional apa yang akan saya terima? Apakah mereka menawarkan segala macam risiko bersama (yaitu opsi saham, persentase keuntungan)? Ini adalah pembujuk besar bagi saya.
Bagaimanapun, ini hanyalah prinsip untuk digunakan dalam pengambilan keputusan Anda. Itu semua tergantung pada apa yang Anda hargai. Sebagai contoh, saya menghargai tantangan intelektual dan waktu bersama keluarga saya, jadi saya biasanya menempatkan prioritas tinggi pada apa proyek itu dan keterampilan yang akan saya pelajari dalam melakukannya. Namun, saya juga memastikan untuk menyatakan di muka bahwa saya hanya bekerja 2 atau 3 malam seminggu sehingga saya dapat menghabiskan waktu bersama istri dan anak-anak karena saya sudah bekerja sepanjang hari. Saya menyesuaikan batas waktu untuk memenuhi permintaan ini. Jika mereka tidak suka itu, maka saya tidak menerima pekerjaan itu.
Apa pun yang Anda lakukan, pastikan Anda menyatakan dengan jelas apa yang akan dan tidak akan Anda lakukan, dan pastikan mereka dengan jelas menyatakan harapan mereka sebelum Anda mengambil pekerjaan itu. Hal terburuk yang dapat terjadi adalah pelanggan memiliki harapan yang tidak dinyatakan dan bagi Anda untuk meremehkan harapan tersebut.
PS Saya benar-benar berharap saya telah membaca artikel ini sebelumnya dalam karier saya. Ini berlaku untuk paragraf terakhir saya. http://www.joelonsoftware.com/articles/fog0000000356.html
sumber
Apakah saya perlu pekerjaan itu? Jika demikian, saya "mengambil" proyek itu.
Berapa banyak pilihan yang saya miliki? Lebih dari 1? Saya dapat memilih di antara alternatif.
Hanya 1? Baik. Itu saja.
Pertanyaan "stres dalam hidupku" adalah diperdebatkan; kegagalan untuk mengambil proyek berarti kegagalan untuk mempertahankan pekerjaan; yang memiliki konsekuensi bencana.
Jika Anda memiliki kebebasan finansial di mana "stres" adalah faktor penentu, itu sangat hebat.
sumber
Apa yang akan Anda dapatkan dari proyek ini? Uang? Pengalaman? Sesuatu yang lain
Uang: Berasal dari anggota keluarga (saya mencoba untuk tidak berbisnis dengan keluarga, tapi itu diskusi lain), ini kecil (sehingga Anda membuatnya terdengar), Anda cukup junior, jadi jangan berharap banyak. uang darinya (berdasarkan pengalaman saya ).
Pengalaman: Anda bisa belajar bahasa baru! Itu bisa berharga di masa depan, mungkin memberi Anda sedikit keunggulan dibandingkan pengembang .NET yang hanya tahu C #.
Tetapi insting Anda memberi tahu Anda bahwa proyek ini akan buruk . Mengapa demikian? Sepertinya Anda setidaknya bisa mendapatkan pengalaman dari ini.
Sebagian besar kontraktor akan mulai dengan melihat berapa banyak uang yang akan mereka dapatkan untuk mengambil proyek. Idealnya, proyek yang lebih sulit menghasilkan lebih banyak uang. Jika ini sulit, itu harus membayar dengan baik, tetapi saya tidak tahu rincian untuk mengetahui apakah Anda benar - benar akan dibayar dengan baik ...
Menanggapi detail dalam pembaruan Anda: Katakan padanya bahwa ini jauh di luar jangkauan seorang programmer junior. Anda mungkin dapat melakukan beberapa menit penelitian dan melihat apakah ada produk yang sudah ada yang dapat melakukan apa yang dia inginkan dan lihat apakah halaman "Fitur" berbicara tentang penyesuaian / plugin / ekstensibilitas. Dia mungkin juga ingin berbicara dengan toko perangkat lunak khusus jika tidak ada produk yang ada di luar sana, atau pekerjaan pemrograman plugin yang luas perlu dilakukan. Tidak ada yang salah dengan mengakui suatu proyek yang terlalu besar untuk Anda tangani - itu jauh lebih baik daripada mengambilnya dan gagal sepenuhnya (terutama jika itu adalah anggota keluarga - fungsi keluarga bisa menjadi canggung dan tegang selama bertahun-tahun).
sumber
Secara pribadi jika frasa ini terlibat, saya tidak mengambil proyek.
sumber
Sebagai pekerja lepas, saya hanya menerima proyek yang saya yakini dapat menyelesaikannya dalam waktu, sesuai anggaran, dengan kualitas yang baik. Menolak suatu proyek tidak berarti pengangguran - setidaknya tidak selamanya. Menerima proyek Anda tidak dapat memberikan biaya segalanya - uang, reputasi, kesehatan.
Kadang-kadang sedikit lebih sulit ketika pelanggan yang baik membutuhkan bantuan untuk proyek baru yang tidak sesuai dengan keahlian saya; tetapi meskipun demikian, lebih baik jujur dan membiarkan orang lain melakukannya.
Dalam kasus Anda, Anda dapat dan harus menolak proyek - Anda tidak cukup berpengalaman, Anda tidak tahu bahasa, itu terlalu besar untuk Anda.
sumber
Saya telah melakukan pemrograman lepas selama lebih dari dua puluh tahun. Agar suatu proyek benar-benar berhasil, setidaknya diperlukan yang berikut:
Anda menggambarkan teman keluarga yang tidak tahu apa-apa tentang pemrograman, yang menginginkan Anda - seorang programmer yang tidak berpengalaman - untuk membangun sistem ERP menggunakan teknologi yang tidak Anda ketahui.
Menurut saya, situasi ini pasti merindukan nomor 1, # 3, # 6, dan # 7, dan mungkin semuanya. Seperti yang dikatakan Adam di Mythbusters, "Ini adalah resep untuk bencana."
Heck, saya tidak akan menyentuh yang ini dengan tiang sepuluh kaki sendiri. Saya bisa terus-menerus tentang bendera merah lain yang saya lihat di sini, tetapi pada dasarnya, saran saya kepada Anda adalah pergi dengan firasat Anda, karena Anda benar: "tidak ada yang benar-benar baik akan datang darinya."
Karena ini adalah teman keluarga, jika saya adalah Anda, saya hanya akan berkata, "Anda memiliki proyek yang hebat, dan Anda membutuhkan seseorang yang sangat baik, dan saya terlalu berpengalaman untuk memberi Anda hasil yang seharusnya Anda miliki," dan biarkan saja.
Saya juga menemukan bahwa ketika Anda memiliki klien yang bermasalah di satu area, mereka cenderung menjadi masalah di area lain. Calon klien yang bahkan akan mempertimbangkan memiliki sistem ERP yang dirancang dan diimplementasikan oleh programmer junior sangat bodoh sehingga menjadi bahaya bagi diri mereka sendiri dan orang lain, atau sangat murah, dan salah satu dari mereka akan menempatkan mereka dalam daftar "menjauh" saya. .
FWIW, sebagai konsultan / freelancer, saya akhirnya mengisi peran di pihak saya sendiri, dengan saran dari istri saya. Kami telah menemukan semua item itu dengan melihat proyek gagal karena kekurangan mereka - kadang-kadang, itu adalah proyek kami sendiri. Dan bahkan setelah dua puluh tahun, dan meskipun memeriksa kriteria ini, saya masih berakhir dengan proyek sesekali yang tidak berhasil - risiko selalu menjadi bagian dari bisnis. Saya hanya memastikan sekarang bahwa proyek tidak gagal karena kesalahan yang saya lakukan, dan bahwa kontrak disusun sehingga saya dibayar jika pihak lain gagal.
sumber
Apakah Anda ingin bekerja dengan orang lain yang terlibat?
Proyek ini hanyalah alasan untuk bertemu dan bergaul dengan orang-orang.
sumber
Pilihan pribadi saya adalah melakukan sedikit eksplorasi tentang apa yang dia inginkan, jadwal apa, biaya apa yang dia harapkan, dll. Jika ini sebenarnya ERP besar maka bantuan bisa bertahan selama bertahun-tahun dan benar-benar mendapatkan kemungkinan yang buruk. Pengelolaan Sampah vs SAP akan menjadi contoh seberapa mahal ini bisa didapat jika Anda benar-benar berarti besar seperti dalam anggaran proyek 9 digit.
Maksud saya dalam melakukan eksplorasi adalah menggambar garis di pasir sehingga jelas mengapa saya mengajukan pertanyaan dan apa yang ingin saya miliki sebagai hasilnya. "Seberapa layak aku melihat makhluk ini?" adalah pertanyaan yang saya ajukan ketika saya mempertanyakan metodologi, anggaran, dan jadwal di muka dan kemudian melakukan sedikit riset untuk melihat apakah ada hal-hal yang muncul pada level atau apakah ini sesuatu yang mungkin berakhir di beberapa situs humor IT seperti The Daily WTF .
sumber