Saya memiliki waktu yang sangat sulit untuk berfokus pada apa yang saya lakukan (berdasarkan pemrograman) ketika sesuatu (kompilasi, waktu startup, dll.) Membutuhkan lebih dari beberapa detik saja. Secara anekdot tampaknya ambang sekitar 10 detik (dan saya ingat pernah membaca tentang studi yang mengatakan hal yang sama, meskipun saya tidak dapat menemukannya sekarang). Jadi yang biasanya terjadi adalah saya membuat perubahan dan kemudian menjalankan program untuk mengujinya. Itu membutuhkan waktu sekitar 30 detik, jadi saya mulai membaca sesuatu yang lain, dan sebelum saya menyadarinya 20 menit telah berlalu, dan kemudian diperlukan (jika saya beruntung!) 10+ menit lagi untuk berurusan dengan konteks, beralih ke kembali ke pemrograman .
Ini tidak berlebihan untuk mengatakan bahwa beberapa hal yang seharusnya membuat saya menit benar-benar memakan waktu berjam-jam untuk menyelesaikannya.
Saya sangat ingin tahu tentang apa yang dilakukan programmer lain untuk melawan kecenderungan ini (atau jika saya unik dan mereka tidak memiliki kecenderungan ini?). Saran jenis apa pun boleh digunakan - mulai dari "duduk di tangan Anda setelah menekan tombol kompilasi", hingga trik mental, hingga "jika diperlukan waktu 30 detik untuk memulai sesuatu untuk menguji perubahan, maka ada yang salah dengan proses pengembangan Anda ! "
sumber
Jawaban:
Saya menulis sebuah utilitas commandline kecil yang disebut 'peringatan' yang akan menyebabkan komputer berbunyi bip / memainkan suara / dll. Kemudian, ketika saya memiliki perintah yang panjang untuk dijalankan seperti a
make
, saya jalankanmake; alert
. Di mana saya bisa, saya juga akan meminta argumen sehingga suara berbeda tergantung pada argumen. Dengan demikian saya dapat melakukanmake; alert $?
dan saya akan tahu a) pembangunan telah dilakukan, dan b) itu berhasil atau gagal. Anda tidak harus semanis itu; hanyaecho -e "\a"
bisa cukup.Jika Anda ingin menjadi benar-benar mewah / mengganggu, gunakan beberapa paket text-to-speech dan memicu popup dialog.
Gagasan utama di sini adalah untuk mengganggu gangguan Anda segera setelah tugas terkait pekerjaan selesai.
sumber
MSG="back to work" && xmessage -buttons ok -default ok -nearmouse "${MSG}" 2> /dev/null
;
sebagai ganti&&
. Contoh kedua Anda hanya akan berjalanshow_message
jikamake
berhasil, yang tidak sesuai dengan yang Anda inginkan. Untuk menjadi jelas: Saya suka contoh yang Anda berikan, saya hanya pilih-pilih tentang detail implementasi. ;)command; alert
dan itu akan memberi Anda peringatan desktop ketika selesai menentukan perintah mana yang sudah selesai. Sangat berguna untuk kompilasi atau tes yang panjang.Saya memiliki masalah yang sama, dan solusi bagi saya adalah menghabiskan waktu melakukan sesuatu yang tidak akan membuat Anda tersedot. Bagi saya, ini biasanya (1) mengisi botol air, atau (2) berdiri dan berjalan-jalan selama 30 detik di sekitar kantor untuk meregangkan kaki saya, yang tetap membutuhkan gerakan. Anda bisa tersesat menjelajahi internet; Anda jarang tersesat berjalan di sekitar bilik Anda sendiri.
sumber
Lakukan sesuatu untuk kesehatan Anda:
Standup, berjalan menjauh dari komputer Anda dan lakukan beberapa latihan peregangan tangan dan lengan. Maksimal 2-5 menit. Masa depan Anda yang tidak menderita RSI akan berterima kasih untuk ini.
Juga, mengenai istirahat 2-5 menit, baca teknik Pomodoro . Ini didasarkan pada gagasan untuk sering istirahat sejenak untuk mengalihkan pikiran Anda dari tugas Anda saat ini dan membiarkan hal-hal sedikit meresap. Ini adalah istirahat yang cukup singkat untuk tidak kehilangan alur pemikiran Anda sepenuhnya tetapi cukup lama untuk membuat otak Anda tenang.
sumber
Pengembangan adalah proses kreatif. Anda tidak dapat terus-menerus produktif, terutama jika ada banyak gangguan di kantor Anda. Itu sebabnya Tes Joel menunjukkan kondisi kerja yang tenang.
Joel Spolsky juga menjelaskan apa artinya "tidak berada di zona" . Setiap kali sesuatu menghalangi Anda melakukan pekerjaan, Anda harus menghabiskan sepuluh menit, seringkali lebih untuk kembali ke zona itu dan menjadi produktif lagi.
Ada banyak gangguan:
Tidak ada hubungannya dengan itu. Satu-satunya hal yang dapat Anda lakukan adalah menghilangkan gangguan itu sendiri:
Dalam kasus Anda, jika kompiler yang mengalihkan perhatian Anda, cobalah untuk mengurangi waktu kompilasi dengan:
sumber
Saya kira saya akan menjadi orang yang mengatakannya, tetapi Anda harus duduk di sana dan menunggu sampai selesai.
Anda perlu melatih diri untuk tidak merasa perlu terus-menerus dan aktif melakukan sesuatu. Ini adalah masalah yang sangat merugikan yang mempengaruhi tidak hanya pengembang tetapi semua orang. Masyarakat menjadi terobsesi dengan kebutuhan akan stimulasi yang konstan (visual, audio, mental). Sepertinya tidak ada yang bisa diam selama lebih dari 30 detik tanpa menarik ponsel mereka dan mengirim pesan teks, menjelajahi web, memeriksa facebook, dll.
Jika Anda menekan kompilasi dan itu akan memakan waktu sekitar satu menit atau lebih menganggap itu peluang bagus untuk hanya duduk dan membiarkan otak Anda rileks. Tahan keinginan untuk melakukan sesuatu yang merangsang dan hanya menikmati saat tanpa aktivitas.
Seiring waktu, itu akan menjadi lebih mudah dan Anda akan menemukan Anda akan memiliki pengalaman kerja yang jauh lebih baik ketika Anda berhenti berusaha menjaga otak Anda tetap 100% sepanjang hari.
sumber
Saya setuju dengan apa yang disarankan oleh @retracile, tetapi perhatikan bahwa menurut aturan pemrograman Zen Anda harus fokus hanya pada satu tugas pada satu waktu. Menjawab panggilan telepon, menjelajah Web, jejaring sosial, atau bahkan melakukan multitasking kemungkinan besar akan menurunkan produktivitas Anda. Gunakan penundaan tunggu singkat untuk memikirkan tugas / solusi yang ada dan apa yang dapat Anda lakukan untuk memperbaikinya.
sumber
Saya memiliki bar yang terpasang di tiang pintu
Saya hanya dapat melakukan 5 pull-up sehingga dibutuhkan kurang dari satu menit. Atau saya membuat secangkir teh.
sumber
Bagi saya, cara untuk mempertahankan fokus saya adalah dengan kejam dalam mempertahankan ruang kerja yang bersih, apa pun ruang kerja itu. Apa pun yang bukan bagian dari proyek saya saat ini adalah noise dalam rasio signal-to-noise yang dikuduskan. Bagian penting dari mempertahankan fokus adalah menjaga rasio signal-to-noise tetap tinggi.
Saat saya mengode, ini berarti menutup program yang belum saya gunakan baru-baru ini, memangkas tab browser saya secara teratur, dan menjaga desktop saya bersih dari item yang tidak langsung relevan dengan proyek saya saat ini. Saya menggunakan sepuluh detik penundaan untuk "membuat putaran", jadi untuk berbicara - tab penutupan, program penutupan, menghapus file sementara dan pengarsipan apa yang perlu diarsipkan, dll.
Membiasakan diri "melakukan putaran" juga membantu mencegah jejak kelinci, karena hal itu memaksa saya untuk terus mengevaluasi - dan diingatkan - setiap tugas saat ini.
Ada harga kecil yang harus dibayar ketika Anda harus membuka kembali tab yang telah Anda buka 5 kali hari ini atau meluncurkan kembali prompt perintah dengan hak istimewa yang ditingkatkan untuk ke-15 kalinya, tetapi meningkatkan akselerator seperti pintasan keyboard dapat memotong ini menjadi harga yang sangat kecil.
sumber
Saya merasa terbantu untuk melacak waktu aktual yang saya habiskan untuk tidak bekerja
Anda dapat menggunakan sejumlah hal untuk ini. Saya tahu ada banyak aplikasi gratis di luar sana yang dapat Anda unduh untuk melakukan ini untuk Anda (tidak dapat memikirkan yang ada di atas kepala saya sekarang, tetapi jika seseorang memberi saya beberapa, saya akan menambahkannya ke jawaban ini), atau sangat mudah untuk membuat sendiri. Saya biasanya menggunakan yang saya buat yang merupakan jendela kecil di sudut layar saya dengan tombol untuk
Working
/NotWorking
, dan saya cukup klik yang mana saya aktif setiap kali saya beralih fokus.Jam catur juga berfungsi
Tindakan melacak waktu Anda membuat Anda lebih sadar tentang berapa banyak waktu yang Anda habiskan untuk bekerja, dan saya merasa itu membuat saya lebih produktif karena saya akan memaksa diri saya untuk meninggalkan pertanyaan stackoverflow yang sangat menarik, atau blog artikel, dan kembali bekerja
sumber
Untuk menjaga perhatian saya, saya menggunakan coretan. Saya selalu membawa pena dan buku catatan di belakang keyboard dan mencoret-coret. Itu tidak lebih dari menggosok-gosok selembar kertas tanpa makna apa pun, tetapi itu membuat perhatian saya tetap cukup dan tidak membuat saya terganggu sehingga saya dapat langsung kembali ke apa yang saya kerjakan.
Saya telah melakukan ini sepanjang hidup saya secara tidak sadar tetapi baru-baru ini menemukan sebuah wiki tentang hal itu: http://en.wikipedia.org/wiki/Doodle
sumber
Apa pun yang Anda lakukan jangan pergi di salah satu situs StackExchange. Mereka akan menyedot Anda :)
Lebih serius lagi, menjelajah web sambil menunggu sesuatu selesai tidak baik untuk produktivitas (kecuali jika Anda sedang meneliti sesuatu yang berkaitan dengan tugas saat ini).
Saya biasanya melakukan beberapa tugas kecil yang tidak akan memakan waktu lebih dari 1-2 menit. (membersihkan sesuatu, menulis komentar, catatan).
sumber
Dalam kasus Anda, bangun dan berjalanlah sedikit. Jika sulit untuk kembali ke "zona" itu mungkin karena Anda terlalu jauh. Melakukan hal-hal di web hanyalah zona lain dan zona waktu yang mudah dilupakan. Berikan waktu istirahat yang diinginkan dengan jelas oleh otak Anda dan pergi jalan-jalan, ikuti jagoan, idealnya di kamar kecil, atau berbicara dengan rekan kerja acak. Kami melakukan banyak hal di belakang layar dengan pilot otomatis. Istirahat tidak buruk untuk pengkodean, itu bagus, tetapi idenya adalah untuk berhenti menembakkan semua silinder untuk sementara waktu dan melihat apa yang dihasilkan oleh pembakar punggung Anda sementara bagian yang lebih sadar dari pikiran Anda memberikan istirahat. Dev yang baik bukanlah kalkulator manusia. Biarkan bagian otak Anda yang melakukan semua hal intuitif dan pencocokan pola pada autopilot untuk sementara waktu.
Jika ini bukan hanya masalah pengkodean, Anda mungkin ingin mempertimbangkan ADD.
sumber
Saran untuk bangkit dan berjalan dll. Bagus jika siklus Anda panjang (sekitar satu jam). Tetapi ketika waktu siklus menjadi pendek, dan saya menemukan diri saya bolak-balik antara vim dan membuat setiap beberapa menit, maka saya tinggal di zona dengan tetap di dalam pipa: Sementara membangun atau test suite berjalan, saya cenderung untuk kembali dan tinjau kode, lalu mulailah mengerjakan potongan berikutnya yang akan saya lakukan jika build atau tes berhasil.
sumber
Buat rencana di awal setiap hari tentang cara menggunakan "waktu luang" ini. Itu mungkin melibatkan
atau apa saja sebenarnya.
Biarkan tugas sekunder ini selalu terbuka di jendela di suatu tempat di desktop Anda. Segera setelah Anda menekan tombol "kompilasi" (atau apa pun yang membawa Anda lebih dari 30 detik), beralihlah ke tugas sekunder, dan berikan waktu yang cukup untuk benar-benar bergerak maju, yang mungkin beberapa menit, atau bisa kurang.
Saat Anda melakukan tugas kedua, ingat-ingat bahwa ini bukan fokus otak Anda. Teruslah berpikir tentang pemrograman. Ini tidak mudah; Anda masih akan lebih sering mengalami perubahan konteks daripada tidak.
Jika Anda melakukan ini, bahkan jika Anda kehilangan konteks berkali-kali, waktu Anda yang hilang sebenarnya bukan waktu yang terbuang, dan Anda memiliki sesuatu untuk ditunjukkan pada akhirnya. Tetapi yang paling penting adalah merencanakan, pada awal hari, apa tugas sekunder hari itu.
sumber
Saya kira kita dapat menggunakan waktu kompilasi untuk mendokumentasikan kode, pembersihan kode, menyelaraskan kode dengan benar, sehingga kita tidak menjauh dari IDE kita dan masih meningkatkan kualitas kode.
sumber
Saya biasanya hanya mencoba mencari bug, kesalahan ketik, atau cara untuk meningkatkan gaya kode sementara itu. Itu membuat saya melihat kode, tapi saya tidak (selalu) terganggu oleh sesuatu yang menarik. Juga ini !
sumber
Bisa dibayangkan Anda memiliki sedikit ADHD. Banyak orang melakukannya. Mekanisme koping seperti yang diberikan dalam jawaban lain (atau mungkin obat).
sumber
Selama 10-30 detik, pergilah dan lakukan sesuatu:
Selama waktu itu, jangan lakukan hal-hal yang Anda tahu akan memakan waktu lama (kecuali Anda mampu menghabiskan waktu) seperti:
Selain itu, jangan pasang alarm audio untuk memberi sinyal akhir kompilasi. Rekan kerja Anda akan menghargainya.
sumber
Untuk gangguan internet selama bekerja secara umum, saya sarankan Plugin Pomodoro jika Anda menggunakan Google Chrome
Saya pribadi berpikir bahwa Anda tidak dapat menjadi produktif selama waktu kerja Anda! karena Anda mengkompilasi, itu berarti bahwa Anda melakukan upaya yang cukup untuk menarik napas ... untuk tidak menyalahgunakan atau keluar dari konteks, terus berpikir pada langkah berikutnya jika kompilasi tidak menghasilkan kesalahan ... Atau bersihkan pekerjaan Anda area: Desktop, Tab, Penjelajah ...
sumber
Apa yang Anda gambarkan adalah sangat normal.
Ketika kami melakukan studi kegunaan, kami akan melihat penundaan berdasarkan urutan besarnya. Ketika pengguna mengklik tombol, berapa lama mereka harus menunggu?
Ada banyak pengecualian, seperti operasi gabungan, seperti mengetik.
Ketika kami melakukan pekerjaan kinerja, kami sering mengajukan pertanyaan "seberapa cepat seharusnya operasi X?" Jawabannya adalah, selama pengguna dapat merasakan penundaan, lebih cepat akan lebih baik.
Dalam kasus Anda, Anda mencapai ambang 10-an, dan perhatian Anda hilang. Hal terbaik yang dapat Anda lakukan adalah mengurangi penundaan. Semakin pendek penundaan, semakin besar produktivitas Anda. Bayangkan Anda memiliki kode di sisi kiri layar Anda, dan aplikasi yang berjalan di sebelah kanan. Saat Anda mengedit kode, aplikasi berubah secara waktu nyata. Sampai Anda di sana, Anda punya ruang untuk berkembang.
Lihat juga posting blog terbaru Jeff (berton-ton konten bagus): http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html
Jika Anda akan beralih ke sesuatu yang lain, pilih sesuatu yang tidak melibatkan otak Anda dengan cara yang sama seperti pekerjaan yang Anda lakukan. Bersihkan meja Anda, meditasi, peregangan, push-up, seni, melihat ke luar jendela.
sumber
Saat melakukan pekerjaan ad-hoc di SAS, saya menemukan baris berikut ini sangat berguna:
Ini menghasilkan kotak dialog pop-up setelah semua kode sebelumnya selesai dieksekusi. Saya yakin ada padanan dalam bahasa lain. Saya akan memposting ini sebagai komentar untuk menjawab retracile tetapi saya tidak memiliki reputasi yang cukup.
sumber