Sedikit tentang kasus khusus implementasi algoritma pencarian pintu terbuka

Halo, Habr!


Dari waktu ke waktu di sumber favorit saya, lewati a "Bagaimana saya kelelahan pada pekerjaan pertama saya", "Hidup itu sakit", dll., Sering diisi dengan kekecewaan dan maksimalisme muda. Secara khusus, posting "Mengapa berperang melawan pintu tertutup?" Meminta saya untuk menulis materi ini . .


Semua posting ini disatukan oleh satu hal: kisah betapa indahnya, tetapi mimpi yang rapuh menabrak kenyataan pahit. Mungkin, sensasi seperti itu dapat terjadi pada usia berapa pun, saya bertemu "maximalism kecewa" di antara dua puluh tahun dan di antara orang-orang di atas 40. Saya ingin mendorong para penulis posting ini dan orang-orang yang mengalami emosi yang sama, tetapi saya tidak akan membicarakan hal itu kenyataan itu tidak terlalu keras. Seringkali, kenyataan jauh lebih buruk. Anda bisa kelelahan pada pekerjaan pertama Anda. Itu terjadi. Hidup tidak selalu membawa kejutan yang menyenangkan. Ini terjadi jauh lebih sering. Setiap mimpi, seperti setiap kehidupan seseorang, adalah unik, dan masing-masing membuat keputusan yang akhirnya menentukan kita sebagai pribadi, berdasarkan keadaan. Saya tidak akan berbicara tentang apa dan bagaimana Anda harus melakukannya. Saya hanya ingin berbicara tentang impian saya untuk menjadi seorang programmer dan bagaimana saya melakukannya.


Mulai


Mungkin ini layak dimulai dari saat pertama. Saya berumur 5 setengah tahun, dan saya, seperti banyak teman sebaya saya (dan seringkali orang tua mereka) pada tahun-tahun itu, tidak mencurigai keberadaan komputer pribadi. Tapi saya sudah tahu istilah "pemrograman" dan tahu apa itu. Saya tidak tahu kapan dan dari mana saya mendapatkannya, mungkin saya mendengar atau membaca di suatu tempat - ibu saya belajar dengan saya sejak usia sangat muda dan ketekunannya terbayar: saya belajar membaca hanya sedikit lebih lambat daripada saya mulai membuat suara yang bermakna, dan sebelum tentang bagaimana saya membentuk pidato yang jelas dan jelas, yang membutuhkan waktu bertahun-tahun untuk saya latih, tetapi tentang ini lain waktu. Saya sangat menyukai teknik yang berbeda, saya suka memahami bagaimana itu diatur, dan dalam banyak hal saya terinspirasi oleh buku-buku yang ditinggalkan oleh salah satu kakek saya - folio tebal penuh dengan informasi teknis, dihiasi dengan rumus-rumus misterius dan gambar luar biasa dan sketsa perangkat fantastis. Secara kebetulan, saya juga mendapatkan istilah "formula" dari buku-buku ini: banyak gaya magis, yang belum dipahami oleh pikiran anak-anak, ditandatangani dengan kata ini. Di halaman lain, alih-alih huruf dalam mantra ini, angka diganti dan hasilnya diperoleh yang ditentukan, misalnya, berapa banyak putaran kawat tembaga yang perlu dilukai pada kumparan transformator. Dengan analogi, jika di suatu tempat saya melihat sesuatu yang tampak seperti formula dan angka dapat diganti di sana, maka itu adalah formula. Mungkin ini adalah salah satu kasus pertama pengetikan bebek dalam praktik saya. Hanya satu hal yang membuat saya sedih: Saya masih tidak bisa membuat perhitungan yang diasumsikan formula ini.


Pada salah satu hari musim panas yang indah, ibuku dan aku pergi ke toko tempat aku pertama kali melihat dengan mata kepala sendiri kalkulator yang bisa diprogram Electronics MK-61 . Saya baru saja terbakar dan meminta ibu saya untuk membelinya untuk saya. Kalkulator itu layak untuk semua gajinya, dan kami tidak mampu membelinya, tetapi dia bertanya: "Mengapa Anda membutuhkannya?" Saya menjawab: "Anda dapat memasukkan formula ke dalamnya, memasukkan angka ke formula ini - dan semuanya akan dihitung sendiri! Saya benar-benar tidak memiliki cukup untuk memahami buku-buku kakek." Dia terkejut dan berkata: "Kita tidak bisa membelinya sekarang, tapi mari kita bicara dengan ayah, bisakah dia membuat sesuatu?" Malam itu saya sedang menunggu ayah dari tempat kerja dengan sangat tidak sabar ...


Ketika ayah saya datang, ibu saya memberi tahu dia tentang acara ini, dan saya menunjukkan pada halaman-halaman buku apa yang ingin saya lakukan dan apa yang harus saya hitung. Ayah mendengarkan saya dengan seksama dan menjelaskan kepada saya bahwa saya dapat melakukan perhitungan ini sendiri, saya hanya perlu belajar matematika. Tetapi pembicaraan tidak berakhir di sana, dia menangkap esensi dari fakta bahwa saya tertarik pada sesuatu yang "dilakukan sendiri." Dia mengatakan bahwa ada hal-hal seperti itu yang disebut komputer yang jauh lebih berguna, karena mereka tidak hanya dapat membuat formula "membuat", tetapi juga banyak hal lain yang jauh lebih menarik, misalnya, menggambar, yang menurutnya robot pintar dikendalikan oleh komputer yang sama. akan membuat bagian jadi. Dia sedikit mengecewakan saya dengan mengatakan bahwa komputer ini sekarang sangat mahal, dan sejauh ini tidak ada yang memilikinya di rumah, hanya di pabrik-pabrik, seperti di mana dia bekerja, tetapi ketika saya dewasa, mereka harus menjadi lebih murah dan mungkin suatu hari nanti mereka akan bersama banyak orang, seperti kulkas di dapur kita. "Anda mungkin tidak mempercayainya, tetapi kakek saya tidak pernah memiliki lemari es, dan kami memilikinya. Dan saya akan mencoba untuk memiliki yang pertama di komputer Anda. Tetapi selama tidak, itu tidak berarti Anda harus melupakannya "Untuk memulainya, kita hanya akan mencari tahu apa itu, apa yang dapat kamu lakukan dengannya, dan setiap minggu kita akan belajar sesuatu yang baru. Untuk ini, kamu memiliki semua yang kamu butuhkan." Jadi dunia fantasi baru terbuka untuk saya, "Pulau Hilang" saya, "Narnia" saya, dan saya dengan tegas memutuskan untuk menjadi seorang programmer. Saya masih tidak tahu seberapa drastis hidup saya akan berubah hanya dalam waktu enam bulan ...


Hogwarts


Pada titik tertentu, ayah saya berhenti muncul di rumah. Mereka tidak memberi tahu saya apa pun tentang di mana dia berada dan apa yang terjadi padanya, tetapi saya dengan sabar menunggu dia kembali. Harapan saya tidak ditakdirkan untuk menjadi kenyataan: hanya beberapa tahun kemudian saya mengetahui bahwa Ayah tidak benar-benar pergi bekerja, tetapi mengalami kecelakaan mobil. Selain kejadian aneh dan tak terduga ini, kudeta terjadi di negara tempat saya tinggal, dan nenek saya lumpuh. Dia tidak punya kerabat dekat untuk menjaganya, kecuali nenek buyut saya, yang, karena usianya, tidak bisa melakukan ini secara fisik. Ibu meninggalkan segalanya dan kami pergi ke desa. Kami tidak khawatir tentang apartemen itu, ada seseorang yang menjaganya. Kami tidak curiga bahwa sebenarnya mereka akan berarti "90-an", serta fakta bahwa seseorang akan pergi untuk melemparkan seorang wanita dengan seorang anak ke jalan, dan bahwa segera kami akan kehilangan apartemen ini dan tidak berdaya untuk mengubah apa pun. . Rubicon telah dilewati, jalan kembali terputus. Namun, kita semua selamat dan ini tidak bisa lain kecuali bersukacita. Sejak saat itu saya menyadari bahwa jika saya ingin mengubah sesuatu, saya hanya dapat mengandalkan diri saya sendiri.


Namun demikian, takdir, seolah-olah memberi kompensasi atas semua yang telah terjadi, menghadirkan hadiah yang murah hati: Sekolah baru muncul di desa kami, yang selesai pada saat saya naik ke kelas dua. Persis seperti ini: Sekolah, dengan huruf kapital, karena itu adalah sekolah terbaru dan paling maju di seluruh wilayah, yang mencakup gym besar, bengkel besar dengan berbagai mesin untuk pemrosesan kayu dan logam dan, lihatlah, dengan kantor informatika, yang berdiri selusin komputer Electronics MS 1502 . RAM sebesar 128 KB! Prosesor 16-bit! Dan beberapa kompatibilitas dengan mesin IBM pada prosesor i8088! Aku benar-benar ngiler.


Tapi ada satu masalah kecil: tidak ada guru ilmu komputer. Ketika saya masih di sekolah dasar, ini, di samping kurikulum sekolah, adalah alasan utama mengapa akses ke komputer tertutup bagi saya. Para direktur dapat memahami: siapa yang mau mengambil risiko membiarkan seorang anak dengan barang elektronik, yang biayanya melebihi gajinya selama lebih dari satu tahun, tanpa sepengetahuan, tahu bahwa ia membongkar hampir semua perangkat elektronik di distrik yang dapat ia jangkau. Saya terus belajar komputer dan pemrograman buku, tetapi tanpa latihan, kemajuan yang tepat tidak mungkin tercapai.


Saya juga tidak lupa soal matematika. Selain itu, dengan tidak adanya akses ke besi, ini adalah yang paling rasional. Segera setelah saya mengikuti program kelas saya, saya langsung mengambil yang berikutnya. Nenek saya, seorang guru sekolah dasar yang luar biasa pada masanya, membantu dan mendukung saya dalam segala hal, meskipun terbaring di tempat tidur. Saya hanya bisa menebak upaya apa yang harus dia keluarkan. Saya tidak diberi solusi untuk banyak masalah, dan kemudian dia mengatakan kepada saya: "Ulangi, tapi jangan ulangi! Cobalah untuk menyelesaikan masalah secara berbeda." Dan saya memutuskan secara berbeda. Di sekolah menengah, saya dapat menyelesaikan masalah apa pun dari kurikulum sekolah dengan setidaknya dua cara, memilih yang optimal, dan tidak harus yang disarankan di buku teks. Kemampuan untuk melihat tugas dari sudut yang berbeda mungkin merupakan salah satu keterampilan yang paling penting yang akan berguna bagi saya di masa depan dalam pekerjaan saya.


Semua ini tidak menghentikan saya untuk berteman tidak hanya dengan teman sekelas, tetapi juga dengan anak-anak baik yang lebih tua maupun yang lebih muda. Kita semua dipersatukan oleh kecintaan terhadap teknologi, serta keinginan untuk bermain dan bermain-main, seperti banyak anak normal lainnya. Kami tidak pernah menganggap keberhasilan dan kegagalan studi masing-masing sebagai hal utama, dan tidak benar-benar memperhatikannya. Anda tidak harus menjadi intelektual untuk menjadi teman yang baik. Tetapi untuk menjadi teman yang baik, menjadi seorang intelektual tidak cukup. Saya sangat berterima kasih kepada teman-teman saya karena telah menerima saya apa adanya, dan saya senang mereka tetap menjadi diri mereka sendiri.


Guru-guruku juga luar biasa. Mereka selalu memperhatikan kami. Tetapi sebagian besar waktu guru pendidikan jasmani kami habiskan bersama kami. Selain kurikulum sekolah, ia mengorganisasi bagian bola basket, mengatur meja tenis meja di aula dan mengajari kami cara bermain catur. Saya selalu khawatir menjadi anak kecil dan lemah dibandingkan dengan teman sebaya saya. Dia membantu saya mengatasi masalah ini. Saya berpikir bahwa tanpa simulator dan peralatan, tidak ada yang dapat dicapai, tetapi dia menunjukkan kepada saya latihan apa yang akan bermanfaat bagi saya, apa yang dapat saya lakukan, menggunakan sebagai beban apa yang tersedia untuk saya, dan bagaimana makan dengan benar sehingga hasilnya optimal. "Berolahraga setiap hari, dan kamu akan berhasil." Sekarang saya memiliki semua yang saya butuhkan. Periode pelatihan harian telah dimulai. Tahun berikutnya, ternyata saya telah tumbuh secara signifikan, dan pindah dari tempat terakhir di barisan ke awal. Hasilnya luar biasa, tetapi saya tidak berhenti di situ dan mempertahankan tren positif pada tahun-tahun berikutnya.


Ketika saya pindah ke sekolah menengah, seorang guru ilmu komputer masih muncul. Saya agak kecewa karena ternyata dia adalah murid kemarin, yang dirinya sendiri tidak memiliki pengalaman praktis baik dalam pedagogi maupun dalam pemrograman. Namun, kelemahan kecil ini diimbangi oleh pikiran, keingintahuan dan sikap manusia yang sederhana terhadap murid-muridnya. Secara kombinasi, ia bekerja sebagai guru buruh dan melakukan hal-hal menakjubkan. Dia memberi saya banyak: buku-buku baru, tidak terbatas, dengan alasan, akses ke komputer dan lokakarya sekolah, dan permainan catur yang luar biasa. Setelah beberapa tahun pelatihan, saya bahkan menang, bahkan mungkin beberapa kali. Tetapi di antara murid-murid sekolah saya tidak lagi sama.


Secara umum, kehidupan menjadi lebih baik, semuanya berjalan seperti biasa. Sayangnya, kami baru berusia sembilan tahun, jadi timbul pertanyaan: ke mana harus pergi selanjutnya? .. sekolah mana yang harus saya pilih untuk menyelesaikan 11 kelas dan memasuki universitas? Dan lagi, seorang gelandangan sedang menungguku: kesehatan orang-orang yang kucintai meninggalkan banyak hal yang diinginkan, ibuku kehilangan penglihatannya dan tidak bisa lagi bekerja, neneknya semakin memburuk setiap hari. Dia pergi pada bulan April ketika saya di kelas sembilan. Ibu dan aku kembali sendirian tanpa mata pencaharian.


Untungnya, teman-teman keluarga kami tidak meninggalkan kami: saya ditawari pekerjaan sebagai mekanik magang di sebuah pabrik di kota yang berjarak 200 kilometer dari rumah saya. Itu pilihan yang bagus, dan saya setuju. Bukannya ini yang saya impikan, tetapi pilihan lain lebih buruk. Selain itu, ada sekolah malam di mana saya bisa melanjutkan pendidikan. Jadi saya kembali ke kota.


Perjalanan pulang pergi


Beberapa tahun berikutnya saya bekerja dan belajar, secara teratur mengirimkan sebagian dari penghasilan saya kepada ibu saya, karena pensiunnya yang cacat meninggalkan banyak hal yang diinginkan, mencapai keberhasilan tertentu dalam pekerjaan, mengubah satu pekerjaan ke pekerjaan lain, tetapi tidak ada yang menghubungkan saya dengan pemrograman profesional. Tidak banyak uang, tetapi saya benar-benar menginginkan komputer, dan awalnya saya membeli Spectrum. Saya segera berlari ke keterbatasan dasar dan beralih ke assembler. Jika saya tidak salah, program saya yang pertama selesai adalah synthesizer musik.


Pada saat itu, telepon seluler dengan layar monokrom sudah ada dan telepon pertama saya adalah Nokia 3310. Perangkat yang luar biasa, dapat diandalkan, dan tidak dapat dihancurkan. Tapi saya ingin lebih, dan perangkat berikutnya adalah Siemens dengan Java ME, dukungan GPRS dan layar warna. Saya juga bergabung dengan program pengujian awal GPRS dari salah satu operator seluler. Ini cukup untuk mengembangkan situs pertama saya. Tombol telepon dua belas tombol tidak khusus dirancang untuk pemrograman. Berkat fakta ini, pintasan dan cuplikan segera menjadi teman terbaik saya. Saya memiliki semua yang saya butuhkan.


Dan aku jatuh cinta. Kami bertemu untuk waktu yang lama, semuanya tidak mudah, tetapi pada akhirnya kami tetap bersama dan mengetahui bahwa kami punya bayi. Gaji saya, yang terkadang dikeluarkan dengan penundaan beberapa bulan, tidak akan cukup bahkan untuk popok. Tetapi saya mencintai istri saya dan anak sulung masa depan kami. Dan saya berusaha keras. Dia melemparkan pancing ke mana saja dia bisa jangkau. Saya menemukan perusahaan industri besar dengan gaji rata-rata tertinggi di pasar dan memutuskan untuk mencoba ke sana. Di satu tempat - lebih dari 50 kandidat, yang masing-masing adalah spesialis luar biasa dalam sesuatu. Untungnya bagi saya, pada saat itu saya sudah mengumpulkan seperangkat keterampilan unik dalam diri saya yang dapat menutup beberapa posisi sekaligus. Dan pada saat wawancara saya menemukan kesalahan dalam salah satu gambar yang saya tawarkan pada wawancara. Saya sangat dihargai dan disewa pada tingkat yang bahkan sedikit lebih tinggi dari apa yang semula diusulkan untuk posisi itu. Segera kami punya anak, waktu menjadi semakin kurang. Tapi kami membeli semua yang dibutuhkan. Penghasilan tambahan diizinkan untuk mengikis pada PC pertamanya. Saya telah berinvestasi cukup di dalamnya sehingga konfigurasinya tetap aktif untuk waktu yang cukup lama, tetapi pada saat yang sama tidak ada satu sen ekstra, berkat pemilihan komponen yang optimal dan penghematan pada perakitan. Pendidikan penuh waktu tidak bersinar untuk saya, korespondensi - saya tidak menawarkan pendidikan yang diperlukan, dan sepertinya masuknya saya ke universitas ditunda tanpa batas waktu. Namun, kehadiran komputer memungkinkan saya untuk memperkuat pengetahuan teoritis dengan praktik dan dalam jangka panjang memungkinkan saya untuk mencari pekerjaan tanpa pendidikan khusus. Saya memiliki semua yang saya butuhkan. Selama tahun-tahun ini, saya juga mempelajari JavaScript sisi-server, sayangnya Node.js belum ditemukan, akan muncul kemudian, pada tahun 2009. Tetapi mereka tidak membayar untuk pengetahuan teoritis potensial, tidak ada yang mengenal saya dan tidak ingin bekerja dengan saya, dan saya mulai membangun portofolio. Sebagian besar pekerjaan dan proyek saya selama periode ini tidak menghasilkan pendapatan sama sekali, atau membawa sepeser pun. Kasus langka dari pekerjaan yang sangat menguntungkan dikompensasi oleh kegagalan dan penipuan dangkal saya. Tetapi bagi saya itu lebih penting untuk mendapatkan pengalaman praktis.


Itu perlu untuk menyediakan bagi keluarga, saya fokus pada pendapatan saya, dan dari tahun ke tahun saya meningkatkan pendapatan bulanan rata-rata sebanyak 2 kali. Saya khawatir bahwa saya tidak akan bisa masuk ke salah satu spesialisasi yang menarik minat saya, dan bahwa pembayaran untuk pendidikan tinggi akan terlalu tinggi bagi kami. Satu-satunya arah yang relevan bagi saya adalah ekonomi, saya selalu punya masalah dengannya. Istri saya mendukung saya, dia berkata bahwa saya tidak perlu khawatir tentang uang dan tindakan. Lima setengah tahun berikutnya saya habiskan untuk diploma ekonom-manajer sambil bekerja secara paralel, belajar pemrograman (PHP, Java, C ++, JavaScript). Di universitas, saya pindah ke Linux. Setelah menyelesaikan pelatihan, saya mengambil waktu untuk memompa keterampilan praktis pada baris perintah dan pengembangan untuk CMS dan kerangka kerja yang populer saat itu. Saya pindah ke departemen kontrol kualitas, gajinya sedikit kurang, tetapi waktu untuk pelatihan sedikit lebih. Itu sebagian besar LAMP. Setelah satu tahun, saya kurang lebih bisa menyelesaikan masalah yang diterapkan. Dan kemudian saya memutuskan.


Pekerjaan pertama saya langsung di TI dibayar sekitar 6 kali lebih murah daripada yang biasanya saya terima. Itu tidak penting dalam periode enam bulan. Sesuatu yang lain tetap bersama kami, saya kembali meminta dukungan belahan jiwa saya dan tidak khawatir. Enam bulan kemudian, masuk ke industri dipastikan. Saya kembali melemparkan pancing di mana pun setidaknya ada sesuatu yang menarik minat saya. Tapi "Zuckerberg tidak menelepon," dan saya mendapat pekerjaan di kota lain tiba-tiba sebagai pemuat. Ini bukan lelucon, saya benar-benar menurunkan mobil dan kereta. Semua orang yang mengenal saya, dan yang tidak benar-benar mengenal saya, kaget. Sebenarnya, semuanya sederhana: pembayarannya sama seperti di "kantor" sebelumnya, tetapi jadwal yang lebih nyaman di kota, yang saya perlukan untuk mengembangkan karier. Jadwal yang ketat dan nyaman untuk pekerjaan ini memungkinkan saya menjalani hingga 3 wawancara per hari. Pada titik tertentu, saya mencetak cukup saran yang dapat saya anggap sebagai "netral" - mengembalikan tingkat pendapatan ke parameter "pabrik" saya. Jadi saya berhenti dari pekerjaan saya dan mencurahkan 2 minggu ke depan untuk pencarian pekerjaan yang lebih aktif. β€œLebih aktif” berarti wawancara non-stop dari 9 hingga 19. Dan setelah itu - jalan pulang dan penyelesaian tugas tes. Minggu kedua minggu itu akan berakhir ketika mereka memanggil saya. Bingo! Saya ditawari penawaran dari satu perusahaan internasional, saya menginginkannya, dan tawaran mereka adalah yang terbaik. Semuanya datang bersamaan.


Alih-alih sebuah kesimpulan


Hampir 30 tahun yang lalu, seorang bocah lelaki memutuskan untuk membuat program yang akan membuat hidup orang lebih mudah dan lebih menarik. , , 22 . , , , . . . , , . , . , , , . . - , - . . . - - . . .


Mungkin saya sangat gigih. Saya percaya bahwa mimpi itu harus diikuti bagaimanapun caranya. Kalau tidak, ini bukan mimpi. Apakah Anda belum siap untuk mengikuti mimpi itu? Mungkin Anda harus mengubah impian Anda? Pikirkan tentang itu. Saya punya banyak teman yang telah mengubah IT untuk hal lain (misalnya, pertukangan kayu). Jika jawaban Anda untuk pertanyaan terakhir adalah "Tidak," maka mungkin Anda harus beristirahat sejenak untuk melanjutkan dengan semangat baru. Tidak semua yang kita inginkan segera diberikan. Hal utama adalah tidak berhenti di jalan menuju impian Anda. Anda memiliki semua yang Anda butuhkan untuk ini - itu Anda.

Source: https://habr.com/ru/post/id480794/


All Articles