Memotivasi diri Anda untuk benar-benar menulis kode setelah Anda merancang sesuatu [ditutup]

27

Apakah itu hanya terjadi pada saya atau apakah ini akrab bagi Anda juga?

Seperti ini: Anda harus membuat sesuatu; modul, fitur, seluruh aplikasi ... apa pun. Ini adalah sesuatu yang menarik yang belum pernah Anda lakukan sebelumnya, itu menantang.

Jadi Anda mulai berpikir bagaimana Anda akan melakukannya. Anda menggambar beberapa sketsa. Anda menulis beberapa prototipe untuk menguji ide-ide Anda. Anda mengumpulkan potongan-potongan berbeda untuk mendapatkan tampilan yang lengkap.

Anda akhirnya memiliki desain yang Anda sukai, sesuatu yang sederhana, jelas bagi semua orang, mudah dirawat ... apa saja. Anda menutupi setiap basis, Anda memikirkan segalanya. Anda tahu bahwa Anda akan memiliki kelas ini dan file itu dan skema database itu. Konfigurasikan ini di sini, sesuaikan benda lain ini di sana, dll.

Tapi sekarang, setelah semuanya beres, Anda harus duduk dan benar-benar menulis kode untuk itu. Dan tidak menantang lagi .... Pernah ke sana, lakukan itu! Menulis kode sekarang hanya "formalitas" dan membuatnya terlihat seperti mengulangi apa yang baru saja Anda selesaikan.

Di pekerjaan saya sebelumnya saya kadang-kadang lolos karena orang lain melakukan pengkodean berdasarkan spesifikasi saya, tetapi pada pertunjukan baru saya, saya bertanggung jawab atas seluruh proses jadi saya harus melakukan ini juga (karena saya dibayar untuk melakukan saya t).

Tapi saya punya proyek hewan peliharaan yang saya kerjakan di rumah, setelah bekerja dan hanya ada saya dan tidak ada yang membayar saya untuk melakukannya. Saya melakukan pekerjaan kreatif dan kemudian ketika tiba saatnya untuk menuliskannya, saya hanya merasa tidak suka (mari telusuri web sedikit, lihat apa yang baru di P.SE , di SO dll).

Saya hanya ingin pindah ke hal yang menantang berikutnya, dan kemudian ke yang berikutnya, dan yang berikutnya ...

Apakah ini juga terjadi pada Anda? Bagaimana Anda menghadapinya?

Bagaimana Anda meyakinkan diri sendiri untuk masuk dan menulis kode aneh?

Saya akan mengambil jawaban.

Komunitas
sumber
Berapa perkiraan Anda tentang ukuran proyek Anda? Apa tujuanmu? Siapa yang akan mendapat manfaat dari proyek jika menjadi sukses? Apa manfaatnya?
rwong
2
@ rwong: Tujuan utama saya adalah untuk memperluas pengetahuan saya. Saya bereksperimen pada proyek pribadi saya dengan berbagai ide, teknik, lib dll untuk tujuan perbaikan diri. Tapi saya ingin membangun sesuatu dengan skenario use case yang nyata dan bukan hanya sebuah prototipe yang tidak terkait.
1
Jika Anda hanya mendesain dan tidak pernah kode, bagaimana Anda tahu jika desain Anda akan berfungsi? Kode memvalidasi atau menyangkal kelayakan "desain". Dengan kata lain, sangat mudah untuk "mendesain" dengan melambaikan tangan yang tidak jelas, tetapi sebenarnya penerapan biasanya merupakan pekerjaan yang sangat besar. Kadang-kadang membuat frustrasi, kadang membosankan, tetapi pada akhirnya, bagi saya setidaknya, memuaskan.
Kevin
Saya menjawab ini lebih dari 3 tahun yang lalu, tetapi ketika saya membaca kembali pertanyaan Anda, saya bertanya-tanya apakah ini bukan tanda ADHD (yang kebetulan saya miliki). Saya juga berjuang dengan apa yang dijelaskan oleh pertanyaan Anda, dan meskipun apa yang saya jawab sedikit membantu saya, itu masih sangat sulit. Russell Barkley menjelaskan mengapa dengan cukup baik: youtu.be/LyDliT0GZpE
Mark Freedman

Jawaban:

6

Jika tantangan bagi Anda adalah dalam mendesain dan tidak mengimplementasikan, mungkin Anda membutuhkan faktor motivasi yang berbeda:

Jika ini adalah proyek kesayangan (bukan untuk pekerjaan), saya benar-benar berharap untuk melihatnya menjadi hidup, jadi merancang itu tidak cukup bagi saya. Ketika Anda datang dengan proyek hewan peliharaan Anda sendiri, apa tujuannya? Apakah itu untuk sesuatu yang perlu Anda gunakan? Jika demikian, Anda dapat menggunakannya sebagai motivasi untuk mengimplementasikannya. Untuk melihatnya bekerja. Untuk memberikan fungsionalitas yang Anda cari untuk keluar darinya.

Apakah Anda berencana menyediakannya untuk orang lain? Faktor yang memotivasi bisa membuat mereka mendapat manfaat dari produk akhir. Mereka tidak akan mendapatkan utilitas jika hanya dalam mode desain. Dan jika Anda berencana untuk memasarkannya, gunakan fakta bahwa tidak ada orang yang akan membayar untuk proyek kesayangan Anda saat sedang terjebak dalam mode desain, sebagai faktor pendorong.

Ketika saya mengerjakan hal saya sendiri, saya mengambil pendekatan yang lebih iteratif daripada yang saya bisa di tempat kerja - saya tidak khawatir tentang semua detail sebelum menghasilkan sesuatu. Mungkin perlu waktu lebih lama, tetapi 1) karena ini hanya untuk saya (atau untuk seseorang yang bahkan belum tahu itu ada dalam bentuk apa pun), maka saya memiliki fleksibilitas untuk bereksperimen dan mengambil waktu saya. 2) Saya menghabiskan banyak siklus refactoring dan belajar cara-cara yang lebih baik dalam melakukan sesuatu. Dengan sepeser pun, berbicara secara kiasan.

Namun, pada akhirnya, bukankah kepuasan nyata ketika melihat sesuatu muncul dari kehabisan udara? Itulah gunanya bagi saya. Jika itu tidak berhasil untuk Anda, kecuali motivasi Anda adalah produk akhir, maka saya tidak yakin saya mengerti mengapa Anda ingin mengerjakan proyek hewan peliharaan sama sekali. Jika mendesain adalah yang membuat Anda kesal, dan Anda melakukannya di tempat kerja, Anda tampaknya sudah mendapatkan kepuasan yang Anda cari.

Mark Freedman
sumber
6

Anda perlu membuat prototipe cepat di rumah.

Ketika Anda menerapkan tingkat kekakuan profesional yang sama pada proyek pribadi pribadi, itu dengan mudah menghasilkan rekayasa berlebihan.

Sangat dapat diterima untuk menetapkan standar tinggi untuk proyek pribadi, tetapi Anda harus memahami bahwa Anda mungkin tidak memiliki sumber daya yang cukup (jam pengkodean, selain 8 jam kerja harian Anda) untuk membuat kemajuan pada proyek.

Apa tujuan paling penting dalam proyek kesayangan Anda? Untuk membuktikan kegunaan salah satu wawasan Anda? Jika ini masalahnya, maka kurangi proyek tersebut hingga menjadi proyek proof-of-concept . Kemudian, gunakan prototyping cepat sehingga Anda dapat mencapai lebih banyak dengan waktu pengkodean lebih sedikit.

rwong
sumber
5

Saya kira itu hanya saya, tetapi saya memiliki masalah sebaliknya. Saya biasanya mengalami kesulitan memikirkan semua detail sebelum saya mulai menulis kode dan benar-benar mengalami masalah yang relevan. Secara realistis, saya biasanya hanya memiliki desain yang samar di kepala saya ketika saya mulai coding sesuatu. Tantangan besar saya adalah membuat saya memikirkan semua detail dan memiliki desain di muka.

dsimcha
sumber
5
Mengapa ini dipilih begitu tinggi, itu tidak benar-benar menjawab pertanyaan utama "Bagaimana Anda meyakinkan diri Anda untuk masuk dan menulis kode aneh?"?
dan_waterworth
1
@dan_waterworth: Saya pikir karena banyak orang dapat berhubungan dengan jawabannya. Ketika saya masih junior, saya juga melakukan hal yang sama, melompat lebih dulu ke dalam kode tanpa perencanaan sebelumnya. Sejak itu saya belajar (cara yang sulit) yang lebih baik untuk benar-benar duduk dan berpikir sebelum pergi ke tahap mengetik.
2

Saya pasti bisa mengaitkannya dengan itu. Saya suka mengambil tantangan dari hal-hal yang belum saya temui, tetapi saya kesulitan memulai mengerjakan apa pun yang sudah saya selesaikan. Hal terbesar yang saya lakukan adalah memaksa diri saya untuk duduk dengan tujuan menyelesaikan X dan berfungsi. Biasanya begitu saya pergi, saya akhirnya bersenang-senang dan menyelesaikan lebih banyak daripada yang saya lakukan di awal, tetapi jika saya tidak memaksakan tujuan, saya hanya mabuk selama berjam-jam.

Saya juga bersama Anda dalam hal ini terjadi lebih di rumah pada pekerjaan sampingan daripada di kantor. Saya tidak tahu apakah lebih banyak gangguan, terbakar dari pekerjaan atau apa ...

bunglestink
sumber
2

Saya benar-benar mengerti frustrasi Anda karena saya sudah pernah melewatinya sendiri sebelumnya.

Meskipun takut beberapa api dari masyarakat karena saya tahu ini bukan pendekatan yang bagus, saya akan membagikan pendekatan saya untuk proyek sampingan dengan Anda. Harap dicatat bahwa metode ini bekerja untuk saya dan saya menggunakannya pada proyek jangka menengah / panjang, saya tidak akan melakukannya untuk sesuatu yang kecil (karena saya biasanya memiliki motivasi untuk menyelesaikannya dalam sekali jalan).

Raih seluruh proyek dan pecahkan menjadi 'paket', masing-masing terdiri dari bagian-bagian yang akan sering saling berinteraksi. Kemudian bagi masing-masing paket menjadi potongan-potongan kecil (pikirkan maks beberapa jam) yang dapat Anda desain dan kode.

Idealnya Anda dapat menyelesaikan setiap bagian dalam waktu berapa pun yang Anda alokasikan untuk proyek sampingan Anda selama sehari tetapi itu tidak diperlukan (tergantung orangnya).

Secara pribadi, saya tidak mengatur diri saya dengan kerangka waktu yang diperkirakan untuk masing-masing bagian karena saya baru saja kecewa dan kehilangan motivasi begitu saya gagal memperkirakan itu, oleh karena itu, saya tidak merekomendasikan itu. Luangkan waktu Anda tetapi jangan terlalu lama.

Sekarang setiap bagian kecil mendapatkan semua tahapan dalam proses pengembangan normal Anda, perancangan, pengujian, implementasi dan apa pun yang perlu Anda lakukan. Idenya adalah untuk memberikan awal yang baik pada masing-masing bagian tetapi bukan sentuhan akhir yang lengkap.

Ini membuat motivasi saya naik karena saya tahu bahwa setelah beberapa jam coding membosankan hal yang sebenarnya saya akan memiliki lebih banyak desain untuk dilakukan (enak). Jangan biarkan diri Anda menyimpang dari tujuan Anda, terus lakukan tugas yang mengerikan itu dan itu akan segera berakhir dan selesai.

Setelah Anda selesai membaca semua bagian, lihat paketnya. Lihat cara kerjanya, apa yang dilakukannya, tinjau kembali seluruh paket. Saya yakin akan ada perubahan dan penyesuaian, lakukan itu sekarang. Simpan informasi paling vital di pikiran Anda karena Anda akan membutuhkannya ketika mengerjakan semua paket lainnya. Mencatat juga, mereka banyak membantu.

Periksa setiap paket dan ingat semua yang Anda lakukan sebelumnya, bagaimana kode baru yang Anda tulis akan berinteraksi dengan barang yang Anda tulis seminggu yang lalu? Jangan takut mencari barang yang sudah Anda tulis dan mungkin lupa.

Akhirnya, ketika Anda semua kehabisan paket, saya biasanya membiarkannya pergi selama beberapa hari, memberi diri saya istirahat dan fokus pada sesuatu yang lain.

Biasanya saya ingin kembali dan mulai menjalin paket-paket dan melakukan beberapa pengujian main-main, tidak ada lebih banyak kode untuk ditulis dan tujuannya sudah dekat, itu motivasi yang cukup untuk saya saat itu.

Semoga ini bisa membantu Anda dengan usaha Anda.

andre
sumber
2

Saya selalu menemukan bahwa asumsi asli tidak berlaku sepenuhnya dan lebih atau kurang dari desain asli harus diubah berdasarkan pengalaman yang dikumpulkan saat melakukan implementasi yang sebenarnya.

Jika Anda menganggap desain Anda benar-benar sempurna dan sempurna setelah menggambar beberapa kotak, tetapi sebelum benar-benar mencobanya, saya akan menganggap Anda kandidat yang sempurna untuk beberapa implementasi proyek.

Pengiriman adalah fitur. Jika Anda tidak pergi jauh, Anda hanya seorang arsitek.


sumber
1
+1 Secara keseluruhan bagus, satu arsitek perhatian memiliki tempat mereka, "hanya seorang arsitek" terdengar sedikit merendahkan, tentu saja tidak disengaja.
Orbling
@Orbling: Thorbjørn menahan diri dari astronot arsitektur ( yang jauh lebih merendahkan).
rwong
@Orbing, bisa jadi. Bagaimana Anda mengutarakan fakta bahwa Anda tidak dapat melakukan sendiri apa yang Anda katakan harus dilakukan orang lain?
1

Saya pikir masalahnya ada di tujuan yang salah. Sepertinya Anda menetapkan tujuan "sistem desain". Dan kemudian Anda melakukannya dengan baik, dan tujuan tercapai. Jadi satu saran adalah untuk menetapkan tujuan lain "menerapkan sistem", tetapi kemudian lebih terkait dengan motivasi dan bagaimana Anda melakukannya.

Ada satu cara lain yang bekerja untuk saya dengan baik: tetapkan tujuan awal sebagai "mengirimkan sistem ke pengguna tertentu" alih-alih "sistem desain" atau "membuat sistem". Dengan cara ini, Anda tidak akan puas, sampai pengguna mendapatkan sesuatu yang berharga. Dan Anda melakukannya dengan baik dari awal (termasuk pengujian dan hal-hal mewah modern lainnya).

Konstantin Petrukhnov
sumber
1

Terlepas dari memang masalah motivasi, saya pikir bagian dari solusi dapat ditemukan dalam menggabungkan desain dan proses pengkodean. Begitulah cara saya melakukannya. Pada dasarnya itu turun untuk menerapkan dasar-dasar desain Anda ketika Anda memikirkan hal itu, dan kemudian pindah ke langkah berikutnya.

Misalnya: Jika saya telah merancang kelas dasar saya, saya menuliskannya dan menjalankan beberapa tes di atasnya. Kemudian saya telah merancang basis data yang mendasarinya, saya mengaturnya dan mengujinya. Selanjutnya saya memiliki metode dan fungsi yang saya butuhkan untuk mendapatkan semuanya masuk / keluar dari database, saya lanjutkan itu. Pengujian dilakukan dengan lebih mudah karena saya sudah menyiapkan kelas dasar. Dan ketika akhirnya saya datang untuk mendesain antarmuka pengguna, saya sudah memiliki seluruh rangkaian kode yang siap untuk dimainkan.

Sekarang ini mengasumsikan Anda juga mendesain dalam blok yang dihubungkan melalui antarmuka. Saya tidak tahu kata mahal untuk itu, karena saya bukan seorang programmer oleh pendidikan, tetapi Anda tahu apa yang saya maksud.

Semoga ini membantu.

Joris Meys
sumber
1

Kemudian cukup tulis ide-ide desain Anda, publikasikan (di blog), lakukan yang terbaik untuk menjelaskan masalah dan solusi yang Anda miliki kepada orang lain.

Trik: tuliskan penjelasan Anda tentang desain sebagai program melek! :) Kemudian Anda menyibukkan diri dengan bagian yang menarik (ide-ide desain Anda), tetapi sebenarnya membenarkan mereka dengan kode nyata yang Anda berikan bersama.

Dan posting program melek sebagai presentasi ide baru Anda kepada orang lain!

imz - Ivan Zakharyaschev
sumber
1

Ini akan terdengar usang, tetapi baru mulai. Anda mungkin perlu membuka lingkungan pengembangan Anda, jadi lakukan saja. Anda mungkin perlu mendefinisikan masing-masing kelas dalam desain Anda, dan menulis tanda tangan metode mereka, jadi lakukanlah. Anda harus mulai menerapkan metode yang paling penting, jadi lakukan saja.

Biasanya sekitar waktu ini, saya lupa bahwa saya kesulitan memulai, dan saya berada di zona tersebut.

Bekerja sekitar 80% dari waktu. Selebihnya, ada Tetris.

Vince Green
sumber
0

Jelas bukan hanya kamu! Saya sebenarnya menunda proyek sekarang.

Tidak ada yang bisa memotivasi Anda selain diri Anda sendiri.

Buat garis waktu yang realistis dan tantang diri Anda untuk menyelesaikan setiap bagian tepat waktu. Anda tidak perlu menunjukkan apa pun untuk proyek jika mereka tidak pernah melewati tahap desain.

dan_waterworth
sumber
0

Menilai dari pertanyaan Anda, masalah Anda adalah Anda tampaknya menciptakan kembali roda. Jika Anda sudah melakukan semua ini, mengapa Anda perlu melakukannya lagi? Apakah tidak ada kerangka untuk melakukannya untuk Anda? Jika tidak (walaupun ini agak mustahil), mengapa tidak menulisnya?

Tugas utama dalam pemrograman adalah tidak melakukan hal-hal yang membosankan lagi , tetapi melakukannya sekali, melakukannya dengan benar dan kemudian menggunakannya kembali. Atau bahkan lebih baik: menemukan seseorang yang sudah melakukannya sekali dan semestinya.

back2dos
sumber
0

Saya benar-benar mengerti dari mana Anda berasal. Ini masalah yang menarik minat Anda, dan begitu Anda mengetahuinya, implementasi hanya akan berhasil.

Mengapa Anda tidak merancang saja solusinya, dan meminta orang lain menerapkannya?

John MacIntyre
sumber
-1

Hal-hal yang saya lakukan:

  • Letakkan timer besar di depan saya (bisa dalam mode terbalik, dalam potongan 1 jam)
  • Paksa saya untuk tetap terjaga sampai mencapai tujuan (kadang-kadang dengan bir, saya menemukan sedikit alkohol membantu)

Namun, tidak selalu berhasil

PS. Saya bekerja dari rumah

Eduardo Molteni
sumber