Tidak ada kotak!
Ada masalah khusus untuk dipecahkan, dan serangkaian kendala yang mungkin berlaku. Cari tahu apa masalahnya (pikirkan secara abstrak dan dalam istilah nyata), definisikan dalam istilah berbasis topik tertentu, dan dalam istilah yang lebih umum.
Periksa setiap kendala (jangan membuat asumsi) untuk melihat apakah, kapan, dan sejauh mana mereka mungkin berlaku. Lihatlah masalah dari perspektif siapa yang memengaruhi (jangan lupa tujuan) serta dari balik layar.
Jangan membuat asumsi.
Jika Anda menganggap hal-hal tertentu benar ketika mereka tidak, Anda akan mencegah diri Anda dari memeriksa berbagai perspektif. Juga menentang keputusan / asumsi yang ada yang dibuat orang lain - mungkin ada alasan bagus untuk itu, atau mungkin tidak ada, atau ada yang tidak berlaku lagi.
Berpikir secara abstrak.
Belajarlah melihat hal-hal sebagai pola dan dalam istilah abstrak. Ketika Anda melihat suatu pola, pertimbangkan hal-hal serupa dan lihat apakah Anda dapat menerapkan tindakan dari itu ke hal saat ini. Jika area subjek Anda bernama pola, pelajari - tetapi jangan memperlakukannya sebagai solusi pemotong kue.
Jangan berpikir secara abstrak.
Selalu berusaha melihat sesuatu sebagaimana adanya - ingat bahwa "pengguna" adalah orang, dan mereka tidak selalu logis atau rasional. Berlatih berempati dengan orang-orang menggunakan apa yang Anda buat.
Jangan lupa tujuannya.
Kadang-kadang mudah terjebak dengan target / implementasi tertentu (mis. "Bagaimana kita memasukkan kontrol X ini ke dalam UI?") Daripada mengingat tujuan yang sebenarnya (seperti "bagaimana kita mengizinkan pengguna untuk melakukan Y?" )
Jangan berhenti belajar.
Pengetahuan umum dapat menjadi sumber inspirasi - banyak masalah telah diselesaikan oleh seseorang - semakin Anda tahu semakin Anda mungkin ingat sesuatu yang berlaku untuk situasi saat ini.
Jadilah pemrogram yang baik, bukan hanya ahli [bahasa pemrograman].
Jangan takut untuk belajar banyak teknologi dan teknik - bahkan beberapa bahasa "tumpang tindih" dapat membantu Anda melihat berbagai hal dalam istilah yang berbeda, tetapi variasi yang berbeda dari yang berbeda dapat membantu lebih banyak. Tentu saja memilih beberapa bidang untuk dikhususkan / dikuasai, tetapi juga memastikan Anda memiliki landasan yang layak dalam konsep umum, yang dapat Anda peroleh dengan mempelajari berbagai bahasa,
Jangan menganggap seseorang terlalu berpengalaman untuk membantu.
Kadang-kadang orang yang tampaknya tidak terlalu berpengetahuan, atau yang tidak pernah diprogram, dapat tampak tidak berguna untuk masalah pemrograman - tetapi itu tidak berarti Anda harus mengabaikannya. Setiap orang memiliki perspektif dan keterampilan yang berbeda, dan mungkin memberikan wawasan unik yang memberi Anda solusi.
Anak-anak muda khususnya dapat menjadi sumber yang baik dari perspektif "tidak ternoda" yang dapat memberi inspirasi.