Berurusan dengan frustrasi ketika sesuatu tidak berhasil [ditutup]

62

Anda pernah mencoba menerapkan sesuatu yang sederhana tetapi untuk beberapa alasan aneh itu tidak berhasil.

Jadi Anda mencoba solusi yang mungkin tetapi kemudian sesuatu yang lain tidak berhasil. Anda terus mencoba solusi yang berbeda tetapi setiap kali sesuatu yang berbeda tidak berhasil.

Setiap kali Anda mendapatkan satu langkah lebih dekat, Anda juga mendapatkan satu (atau lebih) langkah lebih jauh dari penyelesaian masalah ini dan sekarang sudah 3 jam ketika ini seharusnya memakan waktu Anda 10 menit. Dan itu masih belum terpecahkan.

Tidak ada seorang pun di perusahaan Anda yang dapat membantu, dan Anda akan mengepalkan layar Anda.


Pada titik ini Anda sangat frustrasi sehingga Anda tidak bisa lagi memikirkan masalah dengan jelas. Apa yang harus Anda lakukan pada titik ini? Atau apa yang dapat Anda lakukan untuk menghindari mencapai titik ini?

JD Isaacks
sumber
3
Saya pikir Anda dan saya baru saja mengalami hal yang sama.
AndrewKS
19
Letakkan di SO dan tawarkan hadiah.
JeffO
4
Kalau saja sesederhana itu. Beberapa dari masalah semacam ini adalah di antara banyak pertanyaan mati / tidak dijawab / gagal dijawab.
Aditya P
2
Pertanyaan ini tampaknya di luar topik karena ada di tempat
kerja.stackexchange.com
Masalah saya yang sama dan pertanyaan yang sama.
Anwar

Jawaban:

69

Meskipun ini adalah masalah nyata, ini tidak khusus untuk pemrograman. Namun, itu IMHO sangat penting sehingga layak mendapat tempat di forum ini.

Saran saya: istirahatlah . Berjalan-jalan, bermeditasi, tidur, melakukan aktivitas fisik * - lakukan sesuatu yang sama sekali berbeda untuk memungkinkan otak Anda rileks dan keluar dari kebiasaan mental , sambil membiarkan alam bawah sadar Anda mengerjakan masalah dengan tenang. Biasanya itu memberikan hasil sangat cepat - hanya perlu memberi tahu Anda tentang hal itu. Tetapi sementara pikiran sadar Anda mati-matian mengulangi siklus pemikiran yang sama berulang-ulang, ia tidak akan dapat mendengarkan hal lain.

apa yang dapat Anda lakukan untuk menghindari mencapai titik ini?

Teknik relaksasi dan perhatian adalah kunci untuk mengatasi reaksi stres dan memungkinkan pikiran Anda untuk fokus dengan jelas. Dan berlatih ini benar-benar bermanfaat. Ketika seseorang berpengalaman dalam hal ini, dia sudah dapat melihat tingkat stres meningkat sebelum rasa frustrasi dapat mengambil alih . Kemudian seseorang dapat mengganggu siklus pikiran misalnya dengan mengambil beberapa napas dalam-dalam, atau melakukan beberapa menit latihan relaksasi. Mungkin inilah yang dibutuhkan pada saat itu.

* Cium pasanganmu, belai peliharaanmu - saran dari istriku :-)

Péter Török
sumber
12
+1, Pikiran kita SELALU berusaha memecahkan masalah, hanya karena kita tidak secara sadar mencoba menyelesaikannya, pikiran kita masih berputar. Itu sebabnya Anda sepertinya mengingat nama yang muncul tiba-tiba, satu jam setelah tidak dapat mengingatnya. Dan bangun dengan masalah terpecahkan di tengah malam. Sebuah buku hebat yang menjelaskan hal ini adalah Pemikiran dan Pembelajaran Pragmatis: Refactor Your Wetware
CaffGeek
+1 Tidak bisa dari kata sendiri yang lebih baik. Saya benar-benar keluar dari kubus saya, meninggalkan kantor, dan berjalan-jalan di kota, menelepon istri saya, dan kemudian kembali ke kantor. Bekerja hampir 100% dari waktu.
Tn. Ant
9
Dan jangan bekerja lebih dari 8 jam sehari. Semakin lelah Anda, semakin mudah Anda merasa frustrasi.
HLGEM
3
Saat saya buang air kecil, saya sering mengalami masalah pada saat saya berjalan kembali ke meja saya. Sepertinya alam bawah sadar Anda sedang menunggu kesadaran Anda untuk diam.
barrycarter
1
@ junxiong, seseorang dapat menggunakan teknik ini bahkan ketika di bawah tekanan waktu, tetapi ini membutuhkan pengalaman. Seseorang yang telah bermeditasi misalnya selama bertahun-tahun, dapat mengendalikan dan menenangkan dirinya dalam hitungan menit atau bahkan detik. Tetapi mencoba mempelajari sesuatu yang baru - dan terutama perhatian - di bawah tekanan waktu sangat sulit. Jika semuanya gagal, anggap ini sebagai pelajaran penting, dan begitu tenggat waktu selesai, mulailah mempersiapkan krisis berikutnya dengan menganalisis perilaku Anda dan mempraktikkan beberapa teknik yang disebutkan di sini atau di jawaban lain.
Péter Török
35

sekarang sudah 3 jam ketika ini seharusnya memakan waktu 10 menit.

Kata ajaib itu seharusnya . Tegaskan itu dari kosakata Anda.

Siapa bilang butuh 10 menit? Khususnya siapa? Apa dasar faktual untuk klaim mereka?

Jika Anda telah melakukan 3 kali sebelumnya, dan setiap kali Anda mendekati 10 menit, Anda memiliki dasar rasional untuk suatu keharusan .

Jika Anda belum pernah melakukannya sebelumnya, mengatakan seharusnya hanya membuat diri Anda gagal. Anda harus berhenti menggunakan seharusnya hari ini.

S.Lott
sumber
2
Tentu saja, ada banyak hal yang telah Anda lakukan jutaan kali sehingga suatu hari berhenti bekerja. File yang rusak dalam beberapa kode yang dibuat secara otomatis bisa sangat membuat frustasi, dan kadang-kadang sangat sulit untuk di-debug. Saya memikirkan saat-saat ketika saya secara tidak sengaja menyebutkan dua hal dengan nama yang sama, kemudian menggunakan alat refactoring untuk mengubah semua kejadian di mana nama itu muncul. Saya telah membuat gerakan berkepala beberapa kali dengan kelas yang bertentangan dengan ORM saya menghasilkan kelas. Lakukan sesuatu seperti itu, dan lebih baik Anda berharap Anda sudah baik tentang check-in.
Morgan Herlocker
1
@Prof Plum: "Saya telah membuat gerakan berkepala beberapa kali". Poin luar biasa. Itu berarti bahwa ekspektasi harus memasukkan waktu untuk gerakan berkepala dingin itu. Sekali lagi, fakta "harus" harus mencakup semua fakta, bukan fakta "jika semuanya berjalan dengan benar", dan mengecualikan fakta "gerakan berkepala dingin".
S.Lott
22

Temukan seseorang untuk digunakan sebagai papan suara

Bahkan jika tidak ada yang memiliki keahlian dalam apa yang Anda kerjakan, itu ide yang baik untuk sering membicarakan hal-hal ini. Hanya tindakan semata menggunakan seseorang sebagai papan suara dapat membuat pikiran Anda mulai berputar. Anda akan menemukan diri Anda memikirkan hal-hal baru untuk dicoba. Ini juga akan mengurangi stres Anda untuk melampiaskan sedikit dan berpotensi membuat teman baru. Secara umum juga sehat bagi tim untuk merasa nyaman berbagi dan bersimpati satu sama lain untuk menghasilkan suasana yang berorientasi pada tim untuk memecahkan masalah-masalah semacam ini.

Doug T.
sumber
7
Bahkan jika orang tersebut tidak memiliki petunjuk tentang apa yang Anda katakan kepadanya, tindakan berbicara saja membantu untuk mengklarifikasi hal-hal.
Michael Brown
2
@ Mike, bahkan jika "orang" itu adalah boneka beruang, ia masih bekerja dalam persentase yang sangat besar dari kasus-kasus (ada kisah nyata tentang ini di Hacker's Dictionary AFAIR)
Péter Török
3
@ Mike Brown - lihat "debugging bebek karet"
ocodo
1
Debugging Bebek Karet? pfft Saya menyimpan Debugging Goomba di meja saya hanya untuk alasan ini, bebek lebih baik untuk sisi manajemen proyek.
glasnt
Ya saya akan referensi bahwa ... terlalu malas untuk menarik tautan: P
Michael Brown
9

Pergi sebentar dan lakukan sesuatu yang lain. Tidur nyenyak dan kembali ke masalah di pagi hari.

Juga, jangan menyalahkan diri sendiri. Perkiraan sepuluh menit Anda jelas tidak benar, dan itu terjadi setiap saat.

jprete
sumber
9

Saya memiliki beberapa langkah ketika saya mencapai titik ini. Biasanya saya bisa mencari solusi jika saya mengambil waktu untuk mundur dan berefleksi.

Langkah 1: Berjalan menjauh dari masalah dan menjernihkan pikiran Anda. Kembalilah ketika Anda tidak frustrasi dan dapat melihatnya dengan pikiran yang segar.

Langkah 2: Kembali ke kode dan lihat apakah ada sesuatu yang Anda lewatkan. Minta seseorang datang dan menjadi mata kedua jika Anda tidak bisa membuat kepala atau ekornya.

Langkah 3: Hapus kode dari persamaan. Apa masalah yang Anda coba selesaikan? Tuliskan di selembar kertas atau papan tulis. Bicarakan masalah dengan seseorang untuk mendapatkan pendapat mereka tentang masalah dan solusi.

Langkah 4: Jangkau komunitas untuk melihat apakah mereka memiliki solusi atau apakah ada orang lain yang pernah menabrak tembok yang sama.

Pada dasarnya, ini dapat disimpulkan sebagai 'Hentikan peretasan dan menjauhlah dari kode'.

Tyanna
sumber
Saya menggunakan papan tulis sepanjang waktu. Sangat berguna untuk memvisualisasikan saat debugging.
Michael K
Langkah 3 dikenal sebagai mengubah domain masalah untuk melihat apakah kesuksesan paralel dapat digunakan kembali. Ini juga disebut sebagai menggunakan metafora.
Kurucu
2

Saya akan mengajukan pertanyaan di sini dan minta komunitas membantu Anda menyelesaikannya. Kurang stres seperti itu.

Bernard
sumber
6
Kadang-kadang hanya menulis pertanyaan akan mengarah ke solusi
JoelFan
1

Saya memiliki solusi yang berbeda - TIDUR !!

Ketika Anda frustrasi dengan masalah, Anda tidak bisa dengan mudah keluar dari masalah itu. Jadi lebih baik jika Anda menjadi begitu lelah mencoba menyelesaikan masalah dan kemudian tertidur.

Ketika Anda bangun Anda akan memiliki perasaan segar dan lagi Anda dapat berpikir jernih dengan masalah tersebut. Terkadang saya melakukannya.

Ruben
sumber
Bukan untuk menjadi nitpicky, tetapi solusi "berbeda" ini telah disebutkan dalam setidaknya dua jawaban sebelumnya.
Péter Török
1
apa yang saya maksudkan -> tidak hanya istirahat, berjalan atau tidur, melainkan menjadi lelah mencoba memecahkan masalah dan kemudian tidur. karena ketika Anda memiliki masalah di dalam diri Anda, Anda mungkin tidak akan bisa keluar dengan mudah
ruben
1

Temukan sesuatu untuk membantu membangun kembali kepercayaan diri adalah apa yang cenderung saya lakukan ketika saya mencapai titik ini. Ini bisa memecahkan teka-teki Sudoku atau Kenken, melakukan beberapa tugas administrasi sederhana tanpa berpikir seperti mengisi lembar waktu saya, atau keluar untuk berjalan-jalan. Kuncinya di sini adalah bagi saya untuk memiliki rasa prestasi dalam apa pun gangguan sisi kecil ini adalah untuk membantu memompa saya cukup untuk kembali naik kuda dan naik ke sana ke sana, untuk mencampur beberapa metafora di sana.

Sedangkan untuk menghindari mendapatkan ini buruk, saya akan menyarankan memiliki beberapa strategi waktu-kotak sehingga jika Anda percaya sesuatu akan memakan waktu 10 menit dan tiba-tiba satu jam kemudian dengan tidak banyak kemajuan, saya akan berhenti dan memiliki sedikit istirahat daripada mencoba untuk terus membenturkan kepalaku ke dinding.

JB King
sumber
1

Saya memiliki nama khusus untuk situasi seperti ini: pertempuran pemrograman epik .

Jika saya belum pernah mengalami setidaknya satu pertempuran pemrograman epik dengan bahasa atau alat pemrograman tertentu, dan menyelesaikan masalah, saya tidak dapat mengatakan pada diri sendiri bahwa saya dapat menggunakan bahasa atau alat pemrograman tersebut.

Jadi ada solusi saya: katakanlah itu seperti perkelahian dan ujian keberanian dan ketekunan . Jika saya tidak bisa menyelesaikan masalah, maka saya " hidup untuk bertarung di hari lain ".

Ini mungkin terdengar agak konyol, tetapi, akan lebih menyenangkan dan memuaskan untuk memikirkannya dalam istilah ini (seperti itu adalah semacam permainan yang harus Anda menangkan) daripada menderita sepanjang jalan karena Anda harus menghadapi kenyataan bahwa Anda tidak tahu segalanya .

dukeofgaming
sumber
0

Baiklah ... Saya pikir Anda membutuhkan karier baru atau harapan yang sama sekali baru. Meskipun tentu saja tidak sering, mengambil 3, 4, 8, 10 atau 40 jam untuk melakukan apa yang awalnya Anda pikir akan menjadi pekerjaan 10 menit tentu tidak biasa dalam bisnis perangkat lunak. Saya yakin sebagian besar pengembang yang mengerjakan apa pun yang bahkan dari kompleksitas sedang memiliki tugas 2 hari berubah menjadi tugas 1 bulan setelah mereka menyelidiki dan memahami masalahnya.

Bagian dari menjadi pengembang yang baik adalah bersabar, jika tidak, komputer akan menang dan Anda akhirnya akan memasukkan semacam peretasan perbaikan cepat yang sepertinya tidak berfungsi, tetapi pasti akan merusak sesuatu yang tidak Anda pikirkan. Jika sedikit keterlambatan menyebabkan Anda sangat tertekan maka Anda mungkin seharusnya tidak berada di jalur pekerjaan ini.

Celup
sumber
0

Dua saran:

  1. Orang terpintar yang saya kenal, yang memiliki dua gelar PhD dan memiliki jabatan "Research Fellow", di sebuah perusahaan swasta bertubuh kecil, mengatakan ini

    Jika Anda sudah memikirkannya selama 15 menit dan Anda tidak memiliki jawabannya, Anda salah melakukannya.

    Berhentilah memikirkannya.

    Tidur siang. (jalan-jalan atau apalah)

    Jawabannya akan ada di sana ketika Anda bangun.

  2. Dapatkan buku David J Agan "Debugging" . Ini mungkin akan mengajarkan Anda lebih banyak tentang debugging sehingga ketika sesuatu tidak berfungsi, Anda dapat men-debugnya dengan cepat.

Tim Williscroft
sumber
0

Ketika saya dihadapkan dengan sesuatu yang tidak berfungsi, saya selalu ingat kutipan ini:

Ketika Anda berada di neraka, terus berjalan karena ini adalah hal terbaik yang dapat dilakukan pada saat itu.

Beristirahatlah, cobalah menyegarkan diri dan fokus pada masalah dengan tingkat energi baru.

Rachel
sumber
0

menggemakan rekomendasi orang lain:

  • situasi ini hampir selalu merupakan sesuatu yang sepele yang tidak Anda lihat ; istirahat
  • sepasang mata lain atau bahkan sekadar menjelaskan masalahnya pada kucing Anda bisa membantu

dan menambahkan:

  • periksa kembali asumsi Anda, terutama yang tidak disebutkan; kemungkinan Anda telah menggonggong pohon yang salah
  • membalikkan situasi: anggap perilaku saat ini adalah hasil yang diinginkan, jadi apa yang harus Anda lakukan terhadap kode untuk mewujudkannya?
  • tulis beberapa kode uji (menegaskan atau mencatat, atau breakpoint bersyarat - sederhanakan) untuk memverifikasi asumsi Anda di sepanjang jalur eksekusi
Steven A. Lowe
sumber
0

Terkadang, yang terbaik adalah tidak hanya mencoba meretas jalan melalui masalah. Luangkan waktu dan tuliskan dalam kode pseudo apa yang perlu Anda lakukan. Saya tahu ada tekanan untuk menyelesaikan sesuatu secepat mungkin, tetapi dari apa yang saya lihat, gaya pengkodean mengarah pada jenis situasi yang Anda gambarkan. Jika seseorang menulis kode yang hanya akan berfungsi dengan sejumlah kondisi dan perubahan itu, kode tersebut akan merusak atau melakukan hal-hal yang tidak terduga.

Juga (saya benci mengakui profesor saya benar tentang ini ...), mendokumentasikan dan pengujian unit membantu. Ini akan membuatnya lebih mudah untuk mengetahui bagian kode apa yang akan dikeluarkan mengingat set input. Kemudian, akan lebih mudah untuk melihat apa efek perubahan pada bagian yang akan menyebabkan input.

John
sumber
0

Kelelahan atau kurang tidur tidak pernah menjadi masalah bagi saya. Saya lebih frustrasi dengan kurangnya organisasi dalam industri secara keseluruhan, dan secara keseluruhan standar rendah yang kami tetapkan untuk diri kami sendiri. Inilah lima hal yang membuat saya frustrasi:

  1. API yang rumit dalam desain. Ini seperti mempelajari bahasa pemrograman yang sama sekali baru. Bahkan beberapa API jauh lebih sulit untuk dipelajari daripada belajar bahasa pemrograman baru. Saya mengagumi kecerdasan Anda, tetapi Anda bisa menghemat waktu saya dengan memasukkan dokumentasi yang saya perlukan untuk gelar Phd dalam rekayasa perangkat lunak atau ilmu komputer untuk memahaminya.

  2. Kurangnya dokumentasi yang baik. Saya tidak pernah bisa melupakan kenyataan bahwa begitu banyak desainer API menghabiskan banyak waktu dalam membuat API hanya untuk merilisnya dengan dokumentasi minimal. Terima kasih, tetapi bagaimana saya menggunakan ini? Apa yang harus dilakukan dalam situasi ini? dll.

  3. Implementasi eksklusif. Beberapa penerapan hak milik adalah ok, tetapi jika standar ada, demi umat manusia, patuhi standar itu. Tidak ada yang lebih membuat frustrasi daripada menghabiskan waktu bertanya-tanya mengapa sesuatu tidak bekerja hanya untuk menemukan implementasi tidak mengikuti standar normal.

  4. Lingkungan / pembatasan kotak pasir. Ok, mungkin ini membantu mencegah orang jahat keluar, tetapi menurut saya, pembatasan apa yang bisa dilakukan oleh seorang programmer hanya membatasi kreativitas dan kemajuan teknologi. Banyak ide hebat yang telah saya hancurkan setelah mengetahui bahwa saya tidak diizinkan melakukan sesuatu. Industri pemrograman benar-benar dibuat untuk menghasilkan aplikasi sehari-hari, bukan perangkat lunak inovatif. Jadi jika Anda memutuskan untuk menjadi seorang programmer Anda benar-benar memilih untuk menjadi penggerutu modern, kecuali jika Anda ingin menjadi akademisi yang kesepian.

  5. Diskusi modern. Orang-orang saat ini masih memperdebatkan keburukan tanda kurung Lisp, atau kelayakan kebersihan Piton, atau bagaimana beberapa bahasa seperti Cobol atau Fortran akan punah, dll, dll. Benarkah orang? Ini yang kita debat? Mari kita bicara tentang paralelisme, atau cara yang lebih baik untuk merancang sistem yang lebih aman, atau bagaimana pemrograman logika dapat meningkatkan kehidupan kita. Mari kita berhenti berpikir seperti coders dan mulai berpikir seperti desainer dunia masa depan.

Jadi saya pribadi tidak memprogram sebanyak itu lagi karena frustrasi ini. Sampai industri memutuskan ingin melakukan lebih dari sekedar membuat Facebook berikutnya, atau menemukan kembali pengolah kata saya siap. Saya akan menyerahkannya kepada kalian. Jujur tidak ada pelanggaran berarti, itu adalah uang yang baik.

annoying_squid
sumber