Di mana pemrograman dimulai?

gambar


Sekali waktu, kami mengembangkan platform tingkat tinggi untuk mengembangkan aplikasi bisnis lsFusion . Satu-satunya yang tersisa adalah menemukan orang yang akan menulisnya. Diputuskan untuk mengirim pekerjaan di situs pencarian kerja. Tetapi muncul pertanyaan: apa yang harus ditunjukkan sebagai posisi atau profesi.

Dalam hal kompleksitas, bahasa platform tidak jauh berbeda dari SQL, yang awalnya dibuat bukan untuk programmer, tetapi untuk pengguna bisnis. Oleh karena itu, kami juga memutuskan untuk menunjukkan "Analis Bisnis" sebagai posisi.

Kami mengusulkan kepada pelamar untuk menyelesaikan tugas tes yang relatif sederhana, di mana perlu sedikit memperbaiki contoh sederhana. Beberapa orang melakukannya, tetapi surat kemarahan datang dari banyak orang dengan kemarahan seperti: "Apakah Anda mencari seorang programmer atau analis bisnis?"

Sebagai hasilnya, kami menemukan orang yang kami butuhkan, tetapi menganalisis pengalaman ini, tanpa sadar saya bertanya-tanya: di mana analisis bisnis berakhir dan pemrograman dimulai?

Ketika saya baru saja lulus dari universitas, saya memiliki seorang teman yang sudah bekerja sebagai programmer di sebuah perusahaan outsourcing besar. Semuanya dewasa di dalamnya - selain programmer, ada analis bisnis dan penguji. Kemudian saya sangat tertarik dengan bagaimana mereka membangun semuanya di sana, khususnya, apa yang dilakukan analis bisnis. Untuk pertanyaan bagaimana dia berinteraksi dengan mereka, jawaban berikut diterima kira-kira: “Mereka mengirimi saya beberapa diagram di sana, semua jenis dokumen. Saya tetap tidak membacanya dan segera menghapusnya. " Jelas bahwa dia agak tidak jujur, dan dia sedang melihat sesuatu.

Sekarang, membaca sejumlah besar berbagai tugas teknis dan spesifikasi, saya memahami masalah utama dari "analisis bisnis" seperti itu: kertas akan menanggung segalanya. Inilah perbedaan utama antara analisis dan pemrograman. Di atas kertas, Anda dapat menulis kondisi yang sepenuhnya kontradiktif, menunjukkan persyaratan yang benar-benar abstrak seperti "Saya ingin itu menjadi baik", menjadikannya indah, dan menganggap bahwa pekerjaan itu dilakukan. Dalam pemrograman, trik semacam itu tidak berfungsi - semuanya harus jelas. Untuk alasan ini, pengembang sering dapat menangkis implementasi fungsi apa pun dari pelanggan, cukup terus-menerus menunjukkan kontradiksi dan membutuhkan klarifikasi persyaratan. Dan pelanggan hanya bisa melakukannya jika dia, pada kenyataannya, melakukan pekerjaan seorang programmer.

Programmer sepertinya harus menulis program. Apa yang bisa dianggap sebagai program? Salah satu formalisme yang digunakan dalam teori adalah Mesin Turing. Ini adalah komputer paling sederhana yang dapat digunakan untuk menggambarkan algoritme. Ini, pada gilirannya, menunjukkan bahwa salah satu sifat program sangat penting. Program memiliki status dan proses eksekusi. Salah satu fitur utama SQL adalah sifat deklaratifnya. Diasumsikan bahwa orang biasa akan menggunakannya, karena mereka tidak harus menulis "program", tetapi jelaskan dalam SQL apa yang ingin mereka dapatkan.

Sebagai seorang anak, saya memiliki kesempatan untuk bermain catur. Sekarang saya mengerti bahwa saya sama sekali tidak mengerti prinsip dasar permainan posisi. Namun, saya bisa menghitung dengan baik posisi untuk banyak bergerak maju. Saya selalu mencoba untuk "membuka" permainan dan memenangkan lebih jauh hanya karena berbagai kombinasi, di mana lawan menganggap saya lebih buruk. Bahkan, saya hanya memiliki debugger yang bekerja di kepala saya yang bisa bergerak dan mewakili di jam tangan posisi saat ini di papan tulis. Pada kenyataannya, saya bermain seperti komputer sederhana. Namun demikian, di tahun pertama kelas, saya berhasil menyelesaikan peringkat dewasa pertama dan masuk ke tiga besar di Kejuaraan Belarusia pada usia saya. Ini lucu, tetapi catur menggunakan keterampilan yang sama seperti pemrograman. Permainan posisi adalah desain arsitektur. Permainan taktis - debugging program.

Mengajar orang pemrograman dalam lsFusion, saya sampai pada kesimpulan bahwa logika imperatif lebih sulit untuk dipahami oleh orang biasa daripada deklaratif. Menghitung situasi yang banyak bergerak maju bukanlah keterampilan dasar yang digunakan oleh seseorang dalam kehidupan sehari-hari. Dia harus mengingat kondisi dan dapat mengubahnya di setiap langkah. Pada saat yang sama, setiap orang harus secara teratur merumuskan apa yang dia inginkan, yang merupakan semacam "pemrograman deklaratif".

Deklaratif hadir dalam alat lain. Misalnya, di Excel, Anda bisa membangun logika tertentu menggunakan rumus. Saya berkesempatan melihat hampir seluruh sistem informasi yang ditulis dalam bentuk formula Excel, sedikit dibumbui dengan kode Visual Basic yang sangat penting. Apakah orang-orang ini adalah programmer, atau mereka adalah intelijen bisnis yang maju?

Jika kita mempertimbangkan tumpukan bahasa dan teknologi yang saat ini digunakan dalam pengembangan, maka ia dapat dibagi menjadi beberapa tingkatan (seperti tumpukan protokol jaringan). Pada masing-masing dari mereka ditambahkan sesuatu yang baru:

  1. Assembler. Bahasa berorientasi mesin.
  2. C. Bahasa prosedural.
  3. C ++. Pemrograman Berorientasi Objek ..
  4. Java / C # / Python dan lainnya. Mesin virtual dan memori yang dikelola.
  5. 1C / Akses / SAP NetWeaver, dll. Di sini dari kerumitan pengembang menghapus manajemen memori, disk, jaringan, dan detail lainnya. Anda perlu berpikir secara eksklusif tentang logika bisnis. Di suatu tempat di level ini lsFusion terletak sebagai platform.

Setiap teknologi selanjutnya ditulis berdasarkan teknologi dari level yang lebih rendah. Secara teoritis, ini berarti bahwa mereka yang menulis pada level yang lebih rendah akan dapat menulis pada level yang lebih tinggi. Ini, tentu saja, tidak berarti bahwa mereka akan melakukannya seefisien mungkin. Insinyur yang membuat mobil tidak akan menjadi pembalap terbaik di dunia, tetapi mereka harus bisa mengendarainya. Di arah yang berlawanan, ini tidak berhasil.

Sebagian besar karena alasan ini, sebagai suatu peraturan, pengembang selalu menghormati mereka yang menggunakan teknologi tingkat rendah dan membenci mereka yang menulis pada teknologi tingkat tinggi. Saya tidak begitu tua untuk menangkap saat-saat ketika pengembang assembler membenci pembuka. Tapi saya juga ingat sishnikov yang percaya bahwa C ++ berasal dari si jahat. Beberapa pengembang C ++ masih menganggap pengembang Java sebagai under-programmer, karena mereka tidak benar-benar mengelola memori, dan program Java memerlukan banyak memori tambahan karena hal ini. Nah, semua pengembang dari empat level pertama, tentu saja, membenci 1C-programmer, yang paling baik tercermin dalam anekdot berjanggut:

gambar


Namun, ini mungkin karena fakta bahwa teknologi tingkat kelima, tidak seperti empat pertama dan lsFusion, ditutup dan dibayar. Mereka digunakan dalam perusahaan berdarah, di mana itu dalam urutan hal. Dengan demikian, mereka tidak suka seluruh ekosistem, tetapi pada saat yang sama para pengembang di dalamnya.

Perlu dicatat bahwa pada tingkat kelima ada bahasa tingkat tinggi dan deklaratif seperti SQL dan HTML + CSS. Omong-omong, pengembang SQL jauh lebih loyal kepada pengembang SQL. Kemungkinan besar, karena fakta bahwa mereka bekerja dengan mereka dalam hubungannya, memecahkan blok tugas yang terpisah, tidak seperti programmer 1C yang sama yang berurusan dengan database, dan backend, dan frontend pada saat yang sama.

Dalam keadilan, situasi serupa ada tidak hanya dalam pemrograman. Sebagai contoh, ada sejumlah orang yang berkendara secara eksklusif pada gearbox mekanik, sangat negatif mengenai transmisi otomatis. Mereka percaya bahwa mesin tidak menggeser persneling secara efisien, dan secara manual mereka dapat melakukan yang lebih baik (yang umumnya benar). Hal lain adalah kebanyakan dari mereka masih rela mengorbankan efisiensi, keandalan dan peningkatan konsumsi bahan bakar demi kenyamanan bersama. Dan seperti dalam pemrograman, ada orang yang sama sekali tidak bisa mengendarai mekanik, karena mereka tidak memiliki cukup koordinasi untuk dengan cepat menggeser persneling dan menekan pedal yang diperlukan.

Memang benar untuk dicatat bahwa pengemudi dengan transmisi otomatis memiliki kemampuan untuk beralih ke mode manual. Demikian pula, Anda dapat menanamkan kode rakitan di C, atau Anda bisa turun satu level di lsFusion dan menulis kode Java.

Semakin tinggi tingkat teknologinya, semakin bersifat deklaratif dan kurang penting. Anda dapat mempertimbangkan level ini sebagai skala, di mana "mesin" akan berada di bagian bawah, dan "pengguna" atau "bisnis" di bagian atas. Ketika Anda bergerak dari bawah ke atas, diyakini bahwa pemrograman menjadi semakin berkurang. Dan mungkin di suatu tempat di jalur ini ada titik ketika pemrograman menjadi analisis bisnis.

Mengapa kita tidak mencari programmer yang sudah selesai? Setidaknya ada beberapa alasan untuk ini.

Pertama, mereka sudah memiliki semacam tumpukan teknologi yang mereka gunakan. Terlepas dari industri yang relatif inovatif, sebagian besar programmer adalah konservatif (walaupun tentu tidak semua). Mereka tidak akan belajar teknologi yang tidak dikenal tanpa hype, yang tidak ada permintaan (meskipun sementara). Ketika seseorang mengubah lingkungan tempat dia bekerja, dia secara otomatis “kehilangan nilai”. Karena itu, secara psikologis sulit untuk melepaskan apa yang Anda ketahui dan mulai belajar sesuatu yang baru.

Kedua, pengembangan pada platform lsFusion, serta pengembangan pada 1C, benar-benar lebih dekat dengan analisis bisnis daripada pengembangan pada platform tingkat rendah seperti Java, .Net dan Python. Ada tugas, masalah, dan pendekatan lain.

Tapi salah satu alasan utamanya adalah ekonomi. Di Belarus, orang tidak mencari untuk menjadi pejabat dan pejabat keamanan. Di sini Anda tidak dapat, bekerja sebagai menteri, membawa anjing di pesawat pribadi Anda ke pameran apa pun, atau mabuk di arah yang berlawanan. Jendela rias jauh dari sambutan, dan banyak pejabat kadang-kadang dipenjara, dan kemudian dibebaskan untuk memimpin pertanian kolektif. Kami juga tidak memiliki perusahaan yang hidup dari sumber daya alam, sehingga impian kami untuk menjadi pekerja tambang juga tidak ditakdirkan untuk menjadi kenyataan. Hampir setiap pasar cukup kecil dan sudah, sebagai aturan, terbagi. Karena itu, ada juga sedikit ruang untuk pengusaha baru.

Terhadap latar belakang ini, bidang TI berdiri terpisah. Ini paling baik dilihat pada gambar berikut:

gambar

Jika kami mengecualikan area pilot yang sangat kecil dan beberapa konsultan keuangan, ternyata rata-rata, programmer memperoleh tiga setengah kali lebih banyak daripada karyawan di area dengan bayaran tertinggi lainnya. Jika kita bandingkan dengan pegawai negeri, selisihnya tujuh kali lipat.

Kelebihan lainnya dalam pekerjaan seorang programmer di Belarus adalah stabilitas. Karena pasar lokal sangat kecil, sebagian besar perusahaan beroperasi di pasar barat. Oleh karena itu, sebagai suatu peraturan, semua gaji programmer adalah dalam mata uang asing. Itu sebabnya pada Juni ada penurunan dibandingkan dengan paruh pertama tahun ini - rubel dihargai. Di negara di mana mata uang lokal terus-menerus didevaluasi dari mata uang dunia, gaji dalam dolar dan euro dianggap sebagai kunci stabilitas dan ketenangan. Orang-orang di negara itu dianggap oleh banyak orang sebagai "penguasa kehidupan." Mereka adalah konsumen utama dari segmen mahal di sebagian besar pasar. Banyak orang tua mengirim anak-anak mereka ke lingkaran pemrograman, dan kompetisi tertinggi untuk departemen terkait.

Tidak mengherankan bahwa tren "Enter IT" sedang berkembang di Belarus. Kami memutuskan untuk mengambil keuntungan dari hal ini dan mencoba untuk merekrut orang-orang dari profesi lain, mengajari mereka cara berkembang di lsFusion. Omong-omong, sekarang kami memiliki pengembang lsFusion yang bekerja untuk mantan manajer penjualan, administrator sistem, ekonom, konsultan untuk sistem ERP dan sebagainya.

Kami menempatkan iklan berbayar di halaman utama sumber informasi terbesar di Belarus. Itu memperhitungkan kesalahan dari situs pekerjaan dan menunjukkan bahwa kami tidak mencari intelijen bisnis, tetapi seorang pengembang tanpa pengalaman kerja. Untuk motivasi terbaik, mereka secara eksplisit menunjukkan plug gaji potensial yang sesuai dengan industri TI.

Karena kami membutuhkan sejumlah kecil orang, dan ada banyak yang ingin, kami memahami bahwa para kandidat perlu disaring entah bagaimana. Kami memilih skema paling sederhana: Anda perlu mengambil contoh Klasemen dan memperbaikinya sehingga untuk pertandingan skor tidak ditentukan secara manual, tetapi berdasarkan gol yang dicetak yang harus dimasukkan pengguna. Agar tidak repot dengan masing-masing kandidat secara individu dan tidak membuang-buang waktu, kami mengindikasikan secara langsung dalam pengumuman bahwa solusi untuk masalah ini diperlukan.

Untuk mengatasi masalah, diperlukan untuk mengunduh dan menginstal platform (installer ada di situs), hubungkan kode dari contoh di sana dan perbaiki di IDE. Ini akan memakan waktu sekitar 15 menit untuk salah satu pengembang lsFusion kami. Seorang programmer biasa akan membutuhkan waktu maksimum 3 jam untuk memahami contoh, mengunduh, menjalankan, dan menyelesaikannya, karena solusinya tidak memerlukan pengetahuan tambahan tentang platform. Semuanya dilakukan di sana dengan analogi dengan logika yang ada.

Menurut statistik, pengumuman itu dibuka dan dibaca oleh beberapa puluh ribu orang. Tugas tes itu sendiri (itu pada tautan terpisah) dibaca oleh beberapa ribu. Sekitar 400 orang mengunduh platform (dan kemudian itu adalah satu file 1,5GB, yang termasuk IDEA, Java dan PostgreSQL). Empat puluh orang mengirim sesuatu. Dari jumlah tersebut, sekitar sepuluh orang memiliki solusi yang memadai. Dari orang-orang ini, kami telah memilih orang-orang yang akan kami pekerjakan.

Apa yang tidak bisa saya pahami dalam cerita ini adalah kekurangan orang: motivasi atau kemampuan. Lagi pula, jika seseorang bekerja pada pekerjaan bergaji rendah, yang tidak memberinya kesenangan, maka apa yang mencegahnya menghabiskan waktu bahkan beberapa jam untuk memahami masalah dan menyelesaikannya. Sejak awal, kami telah menawarkan gaji tinggi, yang jauh dari dibayarkan kepada semua pengembang junior dalam bahasa lain. Mungkin banyak orang bertindak berdasarkan prinsip, “Saya akan pergi ke programmer, izinkan saya mengajari Anda.” Sebenarnya, di negara kami, kami sudah memiliki banyak jenis kursus berbayar yang diambil banyak orang, tidak memahami betapa pentingnya pendidikan mandiri dalam pemrograman.

Tapi mungkin masalahnya ada pada kemampuan. Untuk memulai pemrograman, diperlukan satu keterampilan dasar: pemikiran analitis. Maksud saya kemampuan untuk membedakan dari pribadi umum (induksi) dan sebaliknya (deduksi). Kemampuan ini dikembangkan dalam jumlah yang relatif kecil, tetapi tanpa itu, sayangnya, bukan programmer yang baik. Selain itu, jika Anda entah bagaimana mengukur pemikiran analitis dan membangun grafik ketergantungan pada jumlah orang dengan keterampilan ini, Anda mendapatkan hiperbola. Artinya, semakin rendah ambang untuk memasuki teknologi, semakin banyak orang yang bisa mengatasinya.

Masalah dengan pemikiran analitis adalah bahwa hal itu tidak dapat dipelajari. Itu terbentuk di suatu tempat pada usia dini, dan orang dewasa tidak lagi dapat mengubah sesuatu. Kami telah melewati kandidat periode percobaan ilmu teknis. Namun, ia tidak dapat menerapkan logika domain sederhana. Pria itu mencoba, bekerja di rumah di malam hari, tetapi setiap kali dia diberi tugas di mana dia hanya perlu dilakukan dengan analogi, dia tidak bisa mengatasinya. Bagaimana dia bisa membela kandidat, tidak jelas. Namun, ini lebih menunjukkan bahwa pemikiran analitis tidak diperlukan dalam kehidupan sehari-hari. Dan ada sejumlah profesi di mana keterampilan ini tidak diperlukan secara khusus.

Ketika mereka bertanya kepada saya teknologi apa yang memulai jalur pemrograman, saya menjawab: mulai dengan SQL. Bagaimanapun, pengetahuannya tidak akan sakit, dan tidak lebih dari satu hari untuk mempelajari fungsi dasar (SELECT / JOIN / UNION). Selanjutnya Anda perlu mencoba menyelesaikan masalah dari Internet. Itu tidak berhasil - jadi Anda tidak boleh memulai dengan pemrograman sama sekali. Jika sesuatu dapat dipecahkan, maka setidaknya 1C atau lsFusion dapat menjadi seorang programmer. Dan kemudian, bagaimana kelanjutannya.

Kesimpulan


Tentu saja, pertanyaan dari judul artikel bersifat retoris. Konsep pemrograman bersifat subyektif, dan tergantung pada pandangan orang tertentu. Semua orang pada tingkat tertentu terlibat dalam pemrograman. Misalnya, ketika mereka hanya mengatur pengaturan di termostat dari lantai yang hangat, atau membuat tabel dengan rumus di Google Documents. Namun, teknologi di tingkat yang berbeda memiliki ambang masuk yang berbeda. Semakin tinggi tingkat teknologinya, semakin banyak orang yang bisa saya programkan. Pemrograman sejati dalam proses ini benar-benar semakin kecil. Saya hanya ingin ini tidak menjadi subjek penghinaan bagi beberapa pengembang oleh orang lain.

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


All Articles