Saya setahun lagi lulus dari universitas, dan saya benar-benar menantikan untuk menyelesaikan masalah-masalah praktis. Terutama yang non-sepele yang membutuhkan sedikit riset dan banyak pemikiran.
Tetapi pada saat yang sama, itu juga ketakutan terbesar saya - dihadapkan pada masalah yang tidak dapat saya selesaikan, tidak peduli seberapa keras saya berusaha. Dan dengan tekanan untuk mengirimkan kode pada tenggat waktu yang akan segera tiba, itu terlihat agak menakutkan ketika melihatnya dari taman bermain yang aman di uni (di mana hal terburuk yang dapat terjadi adalah Anda harus mengulang kursus atau ujian).
Jadi bagi mereka yang telah berkecimpung di dunia industri untuk waktu yang lebih lama, apa yang akan terjadi jika Anda disuruh menyelesaikan masalah yang tidak bisa Anda lakukan? Apakah itu terjadi, dan jika demikian, apa yang terjadi? Apakah mereka hanya menjatuhkannya dan berkata, "Oh, baiklah, kira kita bisa puas dengan sesuatu yang lain"? Adakah konsekuensinya? Apakah Anda ditegur, atau bahkan dipecat?
sumber
Jawaban:
Pertama-tama, ketakutan Anda sangat sehat, dan normal. Ini adalah renungan saya setelah sekitar 15 tahun di industri perangkat lunak.
Berikut beberapa pertanyaan untuk Anda tanyakan pada diri sendiri:
1) Pertama-tama, pastikan Anda memahami masalahnya. Tidak ada pertanyaan bodoh. Apakah Anda mengerti apa yang diminta klien / bos Anda versus apa yang mereka butuhkan?
2) Ini akan terjadi. "Bangun aku jembatan besok" . Pastikan Anda tahu pasti bahwa suatu masalah tidak dapat diselesaikan dalam batasan Anda. Klien / bos Anda mungkin fleksibel pada waktu / anggaran dan ini dapat dimodifikasi untuk memberi Anda lebih banyak waktu / anggaran.
3) Jika masalahnya dapat dipahami dan kendala ada dalam akal, dan ada teknologi yang dapat menyelesaikan masalah, tetapi Anda tidak cukup tahu ... itulah gunanya
StackOverflow
dan untuk apa Internet. Pastikan Anda melakukan riset terlebih dahulu. Cobalah untuk mengajukan pertanyaan eksplisit yang memiliki jawaban terukur. Tanyakan teman-temanmu. Memiliki sesi desain.4) Ini adalah varian dari jawaban nomor 2. Sepertinya klien / bos Anda menanyakan hal yang mustahil. Lakukan beberapa penelitian. Jangan pernah mengatakan bahwa masalahnya tidak dapat diselesaikan, kecuali jika Anda tahu persis mengapa dan Anda bisa mengklarifikasi.
5) ROI adalah singkatan dari Return On Investment. Ini mengacu pada investasi dalam waktu. Waktumu!. Apakah masalah cukup penting untuk dipecahkan untuk menjamin jumlah waktu yang dibutuhkan untuk meneliti dan menyelesaikan masalah. Diskusikan ini dengan klien / bos Anda
6) Apakah ini masalah nyata. Klien, seringkali, memahami apa yang mereka inginkan, tetapi tidak harus memahami apa yang mereka butuhkan. Cobalah untuk memahami apa yang sebenarnya dibutuhkan oleh Klien / Bos Anda dan diskusikan hal ini dengan mereka.
Semoga panduan ini membantu Anda.
sumber
Dua hal yang perlu diingat jika Anda terjebak dengan masalah yang tampaknya tidak terselesaikan:
Biarkan orang lain tahu Anda macet sesegera mungkin. Ini akan membantu mereka menyesuaikan perkiraan waktu sebelum terlambat.
Jika Anda melihat satu cara menyelesaikan masalah tidak berhasil - jatuhkan dulu sebelum Anda membuang banyak waktu. Minta bantuan atau cobalah pendekatan yang berbeda. Ini bukan tentang membuktikan diri Anda keras dan pintar, ini tentang menyelesaikan sesuatu.
sumber
Saya pergi ke StackOverflow ;)
Tapi semua bercanda, jangan takut pada yang tidak dikenal. Seluruh karier Anda akan menghadapi hal yang tidak diketahui, karena jika Anda sudah menyelesaikannya, itu tidak akan menjadi masalah di lain waktu.
sumber
Saya harus menjawab dengan sederhana: Saya minta bantuan. Sama seperti orang lain kadang meminta saya untuk membantu ketika mereka terjebak berusaha mencari solusi untuk sesuatu.
Sunting: Saya harus menyebutkan bahwa saya sering menemukan solusinya hanya dengan menjelaskan masalahnya kepada rekan kerja, atau kadang-kadang bahkan ketika saya mulai memposting pertanyaan di situs-situs seperti StackOverflow.
sumber
Lihatlah dari sudut yang berbeda
Saya sudah sering menemukan ini, biasanya yang terjadi adalah:
Akhirnya Anda memilih apa yang tidak ingin Anda lakukan ->
"Retasan Kotor"
Ini bekerja, tetapi Anda merasa kotor ...
sumber
Biasanya, saya mendapatkan seseorang yang lebih pintar daripada saya untuk memperbaikinya. Dia melakukannya dan dia bos saya. Aku merasa bodoh. Kami melanjutkan.
sumber
Itu tergantung pada alasan mengapa Anda tidak dapat ...
secara logis tidak mungkin: Diskusikan dengan orang yang menulis persyaratan, mungkin ada kesalahpahaman. Contoh: pada satu titik, spesifikasi mengatakan bahwa aplikasi harus terlihat dan terasa asli pada semua platform (Windows / Linux / Mac), dan di tempat lain, dikatakan bahwa program harus terlihat persis sama pada semua platform.
secara teknis tidak mungkin: Mengevaluasi kembali alat yang Anda kerjakan, mungkin itu tidak sesuai. Diskusikan masalah dengan rekan-rekan Anda dan manajer proyek. Contoh: persyaratan waktu nyata yang sulit di lingkungan tempat pengumpulan sampah dapat menghentikan eksekusi untuk waktu yang tidak ditentukan
kinerja yang tidak memadai: Mungkin Anda menggunakan algoritma yang salah, atau mungkin masalahnya terlalu sulit (mis. NP-hard) dan persyaratan tidak memperhitungkannya. Evaluasi kembali algoritma yang Anda gunakan, mungkin ada cara yang lebih cepat. Diskusikan masalah dengan rekan-rekan Anda dan manajer proyek. Pertimbangkan beralih ke heuristik yang cukup baik alih-alih hasil yang sempurna. Contoh: optimisasi jalur dengan lusinan atau bahkan ratusan node
Anda tidak tahu bagaimana cara melakukannya: Tanya teman Anda, tanya stackoverflow, cari di internet. Hubungi dukungan alat / lib yang Anda gunakan. Diskusikan dengan manajer proyek.
itu harus bekerja, tetapi tidak, dan Anda tidak tahu mengapa: Refactor program untuk membuatnya lebih dapat diuji. Mempertimbangkan kondisi ras, mereka sering menjadi alasan untuk menemukan bug yang sulit ditemukan. Mintalah bantuan teman sebaya, empat mata melihat lebih dari dua. Periksa internet untuk bug yang dikenal di alat / lib yang Anda gunakan.
sumber
Saya pikir orang lain dengan baik menunjukkan bagaimana menghadapinya secara profesional. Saya ingin mengatakan bagaimana menghadapi perasaan pribadi seperti frustrasi, ketakutan.
Intinya adalah Anda akan menjadi HALUS bahkan jika Anda tidak menyelesaikan masalah secara tepat waktu. Hidup terus berlalu.
Terkadang, jadwal akan didorong. Proyek ini akan berhasil atau gagal. Anda mungkin dipecat dan kemudian memiliki pekerjaan hebat. Anda tidak pernah tahu.
Jangan salah sangka. Itu tidak berarti tidak apa-apa membiarkan masalahnya ada di sana. Yang bisa kita lakukan adalah melakukan yang terbaik dan melepaskannya.
Terkadang, saya pikir frustrasi, takut tidak menyelesaikan masalah adalah hidup saya sebagai pengembang rata-rata.
sumber
Saya tidak yakin saya akan mengatakan bahwa saya tidak dapat memecahkan masalah, tetapi ada beberapa kasus di mana saya menyerah untuk mencoba memecahkan masalah. Setelah menghabiskan waktu berjam-jam untuk mencoba memperbaiki bug atau mengimplementasikan beberapa fitur yang saya tidak punya ide bagaimana melakukannya, saya dapat memberitahu seseorang di tim saya, pemimpin tim atau manajer, "Saya terjebak dalam hal ini. Anda ingin saya lakukan? " sehingga mereka tahu di mana aku berada. Mereka dapat berkata, "Terus lakukan itu, kami pikir Anda akan mendapatkannya," atau "Beralih ke hal lain yang tidak begitu penting," atau beberapa hal lain dan kemudian saya akan tahu apa yang harus saya lakukan.
Saya memiliki bug yang tidak saya selesaikan dan beberapa fitur yang tidak diselesaikan, tentu saja. Sementara saya dapat mencoba untuk menyelesaikan sesuatu, tidak semuanya berada dalam kekuatan saya untuk menyelesaikannya dalam waktu yang wajar. Poin penting dalam hal ini adalah berkomunikasi agar atasan Anda tahu di mana Anda berada.
Yang mengatakan, saya memang memiliki beberapa kali di mana saya mengalami beberapa keadaan yang agak istimewa:
Saat bekerja di sebuah bank besar Kanada di Toronto, saya akan diminta untuk melakukan segala macam hal yang tidak saya ketahui bagaimana harus dilakukan ketika saya diberi tugas. Sebagai contoh, saya diminta untuk menguji metode ini untuk mengamankan laptop di mana tombol "Esc" dan "Enter" di-swap pada boot-up dan dengan urutan tombol yang benar laptop akan dapat digunakan lagi yang sepertinya aneh untuk mencoba mencari keluar, "Apakah ini berfungsi? Bagaimana saya tahu ini akan atau tidak akan baik-baik saja dengan pengguna?" Ada tugas-tugas lain yang saya tidak punya perangkat keras atau sumber daya lainnya untuk menyelesaikannya. Pada saat yang sama itu agak mendidik karena ini memberi saya banyak hal untuk dicatat tentang situasi pekerjaan di masa depan untuk mencegah masalah. Hal-hal seperti memastikan ketika saya dibayar, bagaimana waktu saya dilacak,
Saat bekerja di Penyedia Layanan Aplikasi di Calgary, saya diberi proyek ini untuk mencoba membuat salinan situs web lain dalam aplikasi internal kami yang kami jual sebagai layanan. Poin kunci di sini adalah bahwa saya tidak diberi garis waktu atau saran tentang bagian mana yang harus dilakukan pertama kali, hanya penelitian umum dan sebulan kemudian saya diminta untuk demo sama seperti saya memiliki reaksi buruk terhadap beberapa obat penghilang rasa sakit. Reaksi itu berlangsung seminggu ketika saya keluar dari pekerjaan tiba-tiba dan kemudian pada minggu berikutnya, saya pergi ke acara Microsoft yang merupakan jenis jerami terakhir ketika saya dipecat pada hari berikutnya. Yang perlu diperhatikan di sini adalah bagaimana saya memiliki hubungan yang agak buruk dengan bos saya karena kapan saja dia mendekati daerah saya, pikiran saya yang langsung adalah, "Sekarang apa yang salah?"
sumber
Seperti yang dikatakan orang lain, komunikasi itu penting - membuat orang tahu (siapa yang akan terkena dampak) ketika Anda terjebak: bos Anda, anggota tim, klien, dll.
Seorang rekan kerja yang tajam pernah menanamkan pada saya bahwa kesuksesan berakar pada dua hal:
Memiliki hubungan yang baik, saya kira, adalah fungsi komunikasi yang baik dan menetapkan harapan di muka.
sumber
Saya mengikuti langkah Polya:
Keindahan prinsipnya adalah bahwa pada titik tertentu akan ada masalah yang cukup kecil dan bahwa Anda akan dapat menyelesaikannya, semoga jika Anda melakukan hal-hal yang benar, akan memungkinkan Anda untuk bootstrap solusi untuk masalah aslinya. Prinsip ini belum mengecewakan saya.
sumber
Jawaban " mencari bantuan " pasti benar. Sangat tidak mungkin bahwa Anda adalah orang pertama yang mengalami masalah tertentu.
Tetapi sebagai eksperimen, bagaimana jika tidak ada bantuan? Bagaimana jika Anda harus menyelesaikan masalah sendiri? Kemampuan memecahkan masalah yang paling penting adalah kemampuan untuk mengidentifikasi dan menantang asumsi Anda sendiri . Jika Anda dapat menyebutkan asumsi Anda tentang masalah satu per satu dan menghilangkan masing-masing pada gilirannya, Anda pada akhirnya akan menemukan asumsi yang keliru dan kemungkinan baru untuk solusi akan terbuka sebagai hasilnya.
(Ngomong-ngomong, ini juga merupakan pendekatan terbaik ketika Anda tidak dapat melihat jawaban untuk masalah yang Anda dapatkan dalam wawancara kerja. Secara verbal cantumkan asumsi Anda, dan tentukan mana yang salah dan kemudian serang kembali masalahnya. Hampir semua "pertanyaan jebakan" didasarkan pada asumsi alami namun salah).
sumber
Meminta bantuan benar-benar jawaban terbaik, tetapi ada sedikit lagi yang mungkin berguna.
Ya, itu terjadi pada saya, dan tidak, saya tidak pernah ditegur atau dipecat karenanya, karena ...
Dalam industri, ini semua tentang apakah Anda menyelesaikan masalah tepat waktu dan sesuai anggaran, dan manajer yang baik memahami bahwa itu tidak selalu mungkin.
Apa yang sebenarnya terjadi adalah manajer Anda berkata, "Saya ingin Anda melakukan X, menurut Anda apa yang diperlukan?" Dan Anda bisa memberikan banyak jawaban. Yang bagus termasuk:
Adalah tugas manajer untuk memutuskan apakah dan bagaimana melanjutkan. Jika mereka memang memilih untuk melanjutkan, itu tugas Anda untuk memenuhi taksiran Anda, atau beri tahu manajer jika ada halangan. Selama Anda melakukan itu, di perusahaan yang masuk akal tidak akan ada konsekuensi negatif.
Tentu saja, ada juga perusahaan tidak masuk akal yang tidak memberi Anda waktu atau sumber daya untuk menyelesaikan pekerjaan Anda. Saya sudah bekerja di beberapa dari itu, dan semua orang diberi masalah yang tidak dapat diselesaikan dalam kendala perusahaan. Salah satu dari mereka memberhentikan sekitar 98% staf pemrograman dalam waktu delapan bulan, dan itu tentu saja konsekuensinya, tetapi itu tidak secara langsung ditujukan kepada saya, dan saya masih menganggap bos saya dan bosnya dari sana sebagai teman baik.
sumber
Ada banyak jenis masalah yang akan membuat Anda bingung, dan banyak yang memiliki cara berbeda untuk mengatasinya.
Salah satu jenis masalah adalah mengimplementasikan sesuatu yang belum pernah Anda lihat seperti API suara aneh atau sesuatu. Dalam hal ini saya akan bertanya pada SO, dengan serius.
Lain adalah masalah yang sangat besar untuk dipecahkan. Jenis masalah ini dapat didekati secara iteratif. Mereka memberi tahu Anda "Implementasikan Humongous". Anda mencarinya dan menulis langkah-langkah sebanyak yang Anda bisa tahu. Kemudian Anda memecah langkah-langkah rumit menjadi langkah-langkah kecil. Ketika Anda dipaksa untuk memikirkan langkah-langkah kecil, mereka menjadi lebih jelas. Jika Anda mengalami kesulitan teknis, coba implementasi tes dan tanyakan di sini jika perlu.
Salah satu masalah yang lebih menyebalkan adalah permintaan yang tidak ditentukan. Mereka hanya menginginkan sesuatu yang "x" dan tidak memberi tahu Anda bagaimana hal itu harus dilakukan. Untuk ini pendekatan yang baik adalah prototipe antarmuka (biasanya GUI) dan biarkan seseorang bermain dengannya.
Lalu ada batasan waktu yang tidak bisa dipenuhi. Ini sering melibatkan memodifikasi harapan dan memberikan prototipe fungsional.
Anda biasanya akan menemukan jalan Anda melalui hal-hal satu atau lain cara. Ini menakutkan tetapi sekali Anda berada di dalamnya, Anda dapat menemukan jalan keluar.
Taruhan terbaik Anda mungkin hanya dengan melukis kata-kata "Don't Panic" di bagian luar laptop Anda. Dan jangan lupa handuk Anda.
sumber
Urutan pemecahan masalah saya (setiap spet berikutnya dilakukan hanya jika sebelumnya tidak berhasil):
Masalah buruk diselesaikan pada langkah 5-6.
Masalah yang benar-benar buruk biasanya membutuhkan waktu (langkah 7 adalah solusi untuk sebagian besar masalah yang 'sepertinya-itu-saya-tidak bisa melakukan apa-apa'). Dan saya bersungguh-sungguh - beralih ke tugas lain untuk sisa hari itu dan mencoba untuk memecahkan masalah hal pertama di pagi hari. Itu keajaiban.
Dan baru kemudian datang langkah 8.
sumber
Saya belum pernah mendengar hal seperti ini terjadi. Pertama-tama Anda tidak pernah diberi masalah yang tidak bisa diselesaikan sama sekali. Masalahnya mungkin sulit dan mungkin perlu waktu untuk diselesaikan. Ketika diberi masalah, Anda harus mengatakan ini adalah waktu yang saya perlukan. Jika dalam penelitian Anda Anda berpikir bahwa masalah ini benar-benar tidak dapat diselesaikan, Anda harus mengibarkan bendera dan memberi tahu manajer Anda bahwa masalah ini akan membutuhkan waktu lebih lama, atau sangat sulit untuk dipecahkan. Ini semua tentang jadwal. Jika Anda menjanjikan sesuatu dan tidak akan bisa mewujudkannya maka itu masalah. Tetapi jika Anda terus memberi tahu status dan masalah Anda, itu adalah tanggung jawab manajer untuk mengurusnya. Dia harus mengarahkan Anda ke orang yang tepat yang dapat membantu, atau menyesuaikan jadwal.
sumber
Ada beberapa saran bagus di sini! Nilai dua sen saya adalah; Jangan kewalahan oleh masalah BESAR, jangan lupa bahwa bagian yang menarik dan menantang dari pemecahan masalah adalah memecahnya menjadi serangkaian sub-masalah yang dapat dikelola dan lebih penting dipahami, yang pada gilirannya terurai lagi dan lagi menjadi lebih kecil sub-masalah. Setiap programmer yang baik biasanya akan melakukan ini setiap menit saat mereka membuat kode (menggunakan fungsi, metode, sub-rutin dll untuk membantu mengurangi kerumitan keseluruhan bagian kode) dan metodologi ini biasanya berlaku untuk masalah besar yang Anda alami hadapi dalam hidup (bukan hanya di tempat kerja).
sumber
Itu tergantung pada apa masalah spesifiknya, jelas. Tetapi jawabannya dapat berupa:
Nomor 3 mungkin memerlukan cuti dari masalah dan mengunjungi lagi minggu atau bulan kemudian. Itu sering membantu.
sumber
Dalam pengalaman saya, terkadang ada masalah yang tidak bisa Anda selesaikan, setidaknya dalam batasan waktu. Jadi mencari bantuan sesegera mungkin, setelah beberapa upaya penyelesaian gagal Anda .
Ingat aturan praktis: selalu perhatikan alasan bos mempekerjakan Anda. Lakukan apa pun yang menurut Anda dapat Anda lakukan untuk hasil pekerjaan terbaik, dan kadang-kadang itu merupakan laporan kegagalan awal (jauh lebih baik daripada yang terlambat).
Singkatnya, jika Anda pikir Anda dapat menemukan solusinya, jangan ragu untuk mencoba, tetapi berikan perkiraan bos Anda tentang risiko dan biaya waktu. Itu masalah mereka sekarang.
sumber
Jika proyek seratus juta dolar bisa gagal bahkan dengan orang-orang yang berpengalaman, Anda tidak perlu khawatir bahwa Anda gagal karena Anda masih mahasiswa. Saya memiliki masalah untuk dikerjakan dan saya menemukan bahwa jika Anda terjebak - Anda harus mencatat setiap upaya yang Anda lakukan untuk menyelesaikannya.
Itu membantu:
sumber
Pengalaman saya adalah bahwa lulusan baru tidak dilemparkan ke dalam. Alih-alih, Anda kemungkinan akan menjadi bagian dari tim yang juga menyertakan pengembang berpengalaman.
Saran saya adalah: manfaatkan mereka. Ketika Anda tidak yakin bagaimana cara mengatasi masalah, atau jika Anda ingin tahu apakah solusi Anda mengarah ke arah yang benar, diskusikan hal ini dengan mereka. Dan jika Anda merasa terjebak di suatu tempat, ambil salah satu dari orang-orang yang berpengalaman dan jelaskan masalah Anda dan minta bantuan.
Paling sering, hanya menjelaskan masalah Anda akan mengungkapkan solusi dan menjelaskan solusi Anda juga dapat mengungkapkan kelemahan di dalamnya.
sumber
Seringkali ini terjadi karena Anda belum mendefinisikan masalah dengan tepat dan akurat. Mungkin Anda mencoba memecahkan solusi yang sudah terbentuk sebelumnya alih-alih masalah yang sebenarnya.
Masalahnya hanya apa yang Anda amati, bukan apa yang Anda bayangkan.
"Mobilku yang berdarah tidak mau hidup" adalah masalah. "Baterai lemah." adalah solusi yang sudah ada sebelumnya untuk masalah permulaan mobil. Bahkan menguji baterai tidak membuktikan itu adalah satu-satunya penyebab masalah. Kecuali Anda benar-benar mengisi ulang atau mengganti baterai dan berhasil menyalakan mobil, maka Anda tidak memiliki bukti bahwa baterai adalah penyebab masalah.
Sederhanakan dan terus sederhanakan. Hancurkan menjadi beberapa bagian kecil. Jika Anda tidak dapat menyelesaikan bagian-bagian itu, hancurkan mereka. Anda akan merasa lebih baik. Kemudian pecah menjadi beberapa bagian kecil. Masing-masing bagian itu harus menjadi fenomena yang bisa diamati.
sumber