03.09.2024
Rumah / OS Seluler / Apa yang harus diketahui seorang programmer? Pemrograman, atau apa yang perlu diketahui seorang programmer Pengetahuan apa yang dibutuhkan seorang programmer

Apa yang harus diketahui seorang programmer? Pemrograman, atau apa yang perlu diketahui seorang programmer Pengetahuan apa yang dibutuhkan seorang programmer

Pengetahuan apa yang dibutuhkan untuk menjadi seorang programmer yang baik? Apakah ada keterampilan yang membedakan seorang programmer yang baik dari yang buruk? Jika Anda sedang bersiap untuk memilih profesi dan ingin mengetahuinya, artikel kami cocok untuk Anda.

Untuk mengetahui apa yang perlu diketahui oleh seorang programmer yang baik, kita perlu mendefinisikan apa itu “programmer yang baik”. Stereotip memberi penghargaan pada citra seorang programmer yang baik dengan penglihatan yang buruk, partisipasi terus-menerus dalam Olimpiade pemrograman dan matematika, serta kemenangan di dalamnya. Tentu saja, Anda dapat meningkatkan standar sebanyak yang Anda suka, tetapi kami akan mencoba menawarkan prinsip yang lebih umum daripada seleksi kompetitif. Jadi mari kita perhatikan hal-hal yang melekat pada seorang programmer baik yang tidak diidealkan.

  • Pengetahuan mendasar.

Saat ini tidak perlu lulus dari universitas khusus untuk menjadi seorang programmer. Cukup, dan jika Anda memang ingin, Anda bisa belajar memprogram sendiri. Melewati universitas teknik, mahasiswa tidak menerima dasar yang diperlukan untuk menguasai pemrograman. Tentu saja pengetahuan mendalam tentang matematika dan fisika bukanlah kriteria utama dalam perekrutan, namun membuka prospek dan wawasan yang besar bagi seorang programmer, ketahuilah. Pengetahuan dasar, seperti algoritma, sangat penting bagi siapa saja yang ingin menjadi programmer yang baik.

  • Pemikiran analitis.

Seorang programmer yang baik seringkali memiliki pikiran analitis dan tipe pemikiran. Artinya dia logis, konsisten, paham dan bisa menjelaskan setiap langkahnya. Orang-orang seperti itu mampu menemukan solusi paling efektif dan optimal untuk setiap masalah dalam waktu singkat. Ngomong-ngomong, siapa pun bisa belajar berpikir analitis, misalnya dengan memecahkan masalah logika dan memainkan permainan khusus.

  • Keinginan untuk menjadi lebih baik, untuk mengetahui lebih banyak adalah pengembangan diri.

Tanpa pengembangan diri yang konstan, Anda tidak bisa menjadi programmer yang baik. Sektor TI berkembang tanpa kenal lelah: bahasa, kerangka kerja, dan alat baru lainnya bermunculan. Pembaruan pengetahuan Anda secara teratur, keraguan bahwa Anda tahu "bagaimana melakukannya dengan benar" akan membawa Anda menuju kesuksesan dalam karir Anda dan menjadikan Anda seorang profesional sejati.

  • Cinta untuk pemrograman

Setiap hari, pergi ke pekerjaan yang tidak Anda sukai untuk menulis kode yang membosankan... Kami pikir ini adalah ketakutan semua orang: melakukan sesuatu yang tidak Anda sukai. Dengarkan diri Anda sendiri untuk melihat apakah pemrograman benar-benar merupakan minat Anda. Mari kita lakukan apa yang kita suka saja, karena dengan begitu hasilnya akan lebih baik.

Jadi, secara umum, kita memahami siapa “programmer yang baik” itu. Sekarang mari kita cari tahu apa yang perlu diketahui seorang programmer.

Pengetahuan apa yang dibutuhkan seorang programmer?

  • bahasa Inggris.

Anda memerlukan bahasa Inggris untuk menulis kode. Selain itu, banyak perusahaan bekerja dengan klien berbahasa Inggris yang akan berkomunikasi secara rutin dengan Anda. Selain itu, banyak buku bagus tentang pemrograman berbahasa Inggris. Oleh karena itu, kami menyarankan Anda untuk melatih keterampilan Anda setiap hari, berkomunikasi, membaca dan menulis dalam bahasa Inggris, dan mendengarkan podcast berbahasa Inggris.

  • Bahasa pemrograman.
  • Algoritma dan struktur data.

Dalam pemrograman, semuanya didasarkan pada algoritma dan struktur data. Jika Anda dapat membagi tugas besar menjadi beberapa rak, maka Anda dapat dengan mudah menemukan solusi untuk masalah apa pun dalam penataan rak tersebut. Faktanya, seorang programmer menggunakan pengetahuan algoritmik setiap hari tanpa menyadarinya. Apapun masalah yang dia pecahkan, dia selalu menggunakan struktur data. Dan untuk setidaknya memiliki pemahaman dangkal tentang apa itu struktur data dan cara kerjanya, Anda juga perlu memahami apa itu algoritma. Jika Anda tidak mengetahuinya, bagaimana Anda bisa yakin bahwa Anda membuat keputusan yang tepat dalam menggunakan algoritma tertentu?

Kami berbicara tentang hal-hal dasar yang harus diketahui seorang programmer. Kami harap Anda suka menulis kode dan akan menghabiskan banyak waktu untuk menjadi programmer yang baik. Jika Anda memerlukan bantuan dalam pelatihan, kami menunggu Anda di Pusat PelatihanISsoft.

Terlepas dari jenis pendidikan apa yang dimilikinya - teknisi atau insinyur, agar berhasil dalam profesi ini, ia memerlukan serangkaian kualitas pribadi khusus. Pertama-tama, ia harus mampu berpikir logis dan memperhitungkan kejadian-kejadian jauh ke depan. Ia juga membutuhkan perhatian, ketekunan dan kemampuan untuk tidak hanya melakukan pekerjaan kreatif, tetapi juga pekerjaan rutin. Terkadang, untuk mewujudkan ide kreatifnya, dia perlu menghabiskan lebih dari 90% waktunya untuk implementasi dan debugging program. Tentu saja, seseorang tidak dapat hidup tanpa tekad dan ketekunan dalam profesi ini, serta tanpa kecerdasan yang berkembang, kemampuan menguasai ilmu-ilmu eksakta dan kemampuan berkonsentrasi.

Untuk mendapatkan pekerjaan sebagai teknisi perangkat lunak, seseorang harus memiliki pendidikan kejuruan menengah, sangat baik jika ia juga memiliki pengalaman kerja di bidang khusus tersebut.

Apa tanggung jawab pekerjaan seorang insinyur perangkat lunak?

Tentu saja, pekerjaan teknisi perangkat lunak akan sangat bergantung pada bidang apa dia akan bekerja dan jenis aktivitas apa yang dilakukan perusahaan tersebut. Namun tentu saja ada persyaratan umum dan pengetahuan yang akan berguna baginya di tempat kerja mana pun. Pertama-tama, ia perlu memiliki pengetahuan yang sempurna tentang komputer dan perangkat yang digunakan bersama dengannya, serta perangkat untuk mengumpulkan, memproses dan mengirimkan informasi, aturan pemeliharaan dan pengoperasiannya. Anda akan memerlukan pengetahuan tentang metode dan teknologi pemrosesan informasi otomatis, bahasa pemrograman dasar, dan produk perangkat lunak khusus yang digunakan dalam pekerjaan perusahaan ini.

DI DALAM tanggung jawab pekerjaan Teknisi pemrograman biasanya mencakup pekerjaan untuk memastikan kelancaran pengoperasian sistem komputer dan peralatan yang dipasang di stasiun kerja pengguna. Dia perlu melakukan operasi persiapan terkait pengoperasian jaringan komputer lokal, memantau cara kerja stasiun kerja, dan memberikan bantuan teknis.

Dia mungkin diminta untuk mengembangkan utilitas sederhana dan program kerja untuk mengoptimalkan proses produksi; dia harus melakukan debug dan mengujinya. Dalam beberapa kasus, ia mungkin dipercaya untuk membuat diagram sederhana proses teknologi pemrosesan berbagai arus informasi dalam suatu perusahaan atau algoritma individu untuk memecahkan masalah yang dihadapi departemen TI. Di banyak perusahaan, insinyur perangkat lunak terlibat dalam pemeliharaan database, pengisiannya, penyimpanannya, dan pemrosesannya. Seorang insinyur perangkat lunak di perusahaan mana pun harus dapat bekerja dengan data dalam jumlah besar, mengetahui aturan pengarsipan dan penyimpanannya, ia harus memiliki gagasan tentang

Seorang programmer adalah salah satu profesi terpenting. Di sebagian besar bidang aktivitas modern, komputer digunakan, dan spesialis dengan profil yang sesuai adalah orang utama yang bertanggung jawab atas fungsinya yang secara praktis signifikan bagi manusia, dan dalam banyak hal atas kinerjanya. Keterampilan apa yang harus dimiliki seorang programmer agar berhasil menyelesaikan masalahnya? Pengetahuan dasar apa yang dibutuhkan seseorang untuk menjadi seorang spesialis?

  • ciri-ciri tugas yang diselesaikan oleh seseorang dalam spesialisasi tertentu, serta keterampilan dan pengetahuan yang diperlukan terkait dengannya;
  • spesifikasi masing-masing bahasa pengembangan perangkat lunak sebagai komponen utama perangkat pemrogram.

Mari kita pertimbangkan esensi dari aspek-aspek yang disebutkan secara lebih rinci.

Apa yang harus diketahui seorang programmer untuk menyelesaikan masalahnya?

Seseorang yang bekerja sebagai programmer dapat menghadapi banyak sekali masalah. Diantaranya:

  • menulis program komputer;
  • pengembangan konsep perangkat lunak;
  • adaptasi program untuk berbagai kategori pengguna (dalam hal antarmuka dan fungsi);
  • pengujian dan debugging perangkat lunak.

Mari kita pelajari esensi dari bidang aktivitas pemrogram ini, serta keterampilan apa yang harus mereka miliki agar berhasil menjalankan fungsi yang relevan.

Kompetensi bahasa

Penulisan program merupakan kompetensi utama seorang spesialis pada profil yang bersangkutan. “Perangkat Lunak” dibuat menggunakan bahasa khusus, dan seseorang harus menguasai tingkat kemahiran yang sesuai di dalamnya. Oleh karena itu, ini merupakan persyaratan utama untuk pengetahuan seorang programmer.

Mengenai tugas pertama, perangkat lunak dapat dikembangkan untuk kebutuhan internal perusahaan (misalnya, untuk tujuan mengatur pekerjaan dengan database dan peralatan, mengelola arus keuangan) atau untuk konsumen eksternal (sebagai bagian dari tatanan perusahaan atau dengan memperkenalkan produk ke pasar ritel dengan merek komersial).

Bahasa pemrograman apa yang harus diketahui seorang programmer? Hal ini sangat bergantung pada jenis perangkat lunak yang ia buat. Sebagai bagian dari tugas internal perusahaan, seorang programmer paling sering bekerja dengan database, server, debugging, pengujian, dan penulisan algoritma kontrol peralatan. Kompetensi ini kemungkinan besar memerlukan pengetahuan tentang bahasa universal dan multifungsi: C, C++, Java, Ruby. Ketika bekerja dengan database, Anda tidak dapat melakukannya tanpa mengetahui SQL. Seorang spesialis akan membutuhkan pengetahuan tentang Python - salah satu bahasa yang paling mudah dipelajari, tetapi sangat diperlukan dan diminati.

Dalam hal merilis perangkat lunak sesuai pesanan di pasar eksternal, persyaratan keterampilan programmer biasanya lebih luas - karena keberhasilan komersial perusahaan pemberi kerja bergantung pada fungsionalitas dan kualitas solusi yang dihasilkan. Selain bahasa universal yang disebutkan di atas, seseorang harus mahir dalam bahasa yang lebih “profil sempit” - seperti, misalnya, C#, Javascript, PHP, Objective-C.

Nanti kita akan mempelajari fitur masing-masing bahasa yang disebutkan secara lebih rinci.

Partisipasi dalam konsep

Seorang programmer mungkin juga kompeten untuk memecahkan masalah konseptual yang berkaitan dengan pembuatan “perangkat lunak”. Seorang spesialis dalam profil yang sedang dipertimbangkan sering kali terlibat dalam diskusi tentang proyek pengembangan perangkat lunak dan mengevaluasi prospek implementasinya dalam praktik. Misalnya, seorang programmer dapat memberi tahu rekannya bahwa produk yang diusulkan tidak sepenuhnya optimal untuk proses produksi tertentu dan desainnya memerlukan perbaikan dalam aspek ini dan itu.

Saat memecahkan masalah yang berkaitan dengan konsep perangkat lunak, fungsi pemrogram juga terlibat tingkat tinggi pengetahuan linguistiknya. Secara khusus, seorang spesialis harus dapat memilih bahasa yang optimal dengan benar dalam hal kompatibilitas dengan proyek. Misalnya, Objective-C, yang kami sebutkan di atas, adalah yang utama dalam pengembangan. aplikasi seluler untuk iOS, tetapi untuk solusi untuk Android, salah satu alat paling optimal untuk membuatnya adalah Java.

Fakta bahwa akan selalu ada bahasa yang lebih cocok untuk platform tertentu daripada yang lain adalah salah satu prinsip utama profesi ini, dan inilah yang harus diketahui oleh programmer pemula sebelum memulai karir. Oleh karena itu, spesialis yang baik dalam profil ini jelas merupakan “poliglot” dalam hal kemahiran dalam bahasa komputer, dan dia selalu memiliki kesempatan untuk memilih “dialek” yang optimal untuk menulis perangkat lunak.

Ketika memecahkan masalah di bidang aktivitas "konseptual", pemrogram juga harus memiliki pengetahuan yang cukup tentang pasar perangkat keras: perangkat lunak yang akan ia buat kemungkinan besar memerlukan adaptasi terhadap satu atau beberapa jenis komputer atau gadget. Spesialis harus memastikan kinerja kualitas yang lebih tinggi dari fungsi "perangkat lunak" yang ia ciptakan sehubungan dengan jenis peralatan tertentu dibandingkan dengan solusi kompetitif.

Semua komponen penting

Setiap jenis perangkat lunak terdiri dari dua komponen dasar: kode dan antarmuka. Elemen pertama adalah algoritma matematika dan logika yang ditulis dalam bahasa pemrograman khusus yang menjamin fungsionalitas produk. Yang kedua adalah bagaimana kemampuan perangkat lunak akan digunakan oleh pengguna, bagaimana dia akan mengontrol fungsinya. Sebuah program bisa menjadi sempurna sesuai keinginannya dalam hal kode, tetapi antarmuka yang tidak nyaman akan membuatnya efektif. aplikasi praktis sulit untuk diterapkan.

Sangatlah penting bahwa kontrol program sesuai dengan keinginan kelompok pengguna sasaran. Sulit untuk mengembangkan produk yang kemampuannya nyaman digunakan semua orang. Pasti akan ada persentase besar orang yang tidak puas dengan antarmukanya. Yang paling penting adalah programmer menyesuaikan solusi untuk “konsumennya”. Yang penting, pertama-tama, dia puas.

Ikuti tes

Sebuah program komputer mungkin menawarkan berbagai fungsi dan dicirikan oleh antarmuka yang ramah pengguna, tetapi jika pengoperasiannya disertai dengan kegagalan dan kesalahan terus-menerus, maka keunggulan terkait tidak akan ada artinya. Oleh karena itu, pengembang perangkat lunak harus memiliki keterampilan yang memungkinkan debugging dan pengujian solusi yang diperlukan.

Ada banyak jenis perangkat lunak untuk memeriksa kebenaran program. Yang populer termasuk Device Anywhere, Jira, Android Debug Bridge, iPhone Configuration Utility. Pemrogram harus dapat menggunakannya, tentu saja tidak termasuk pengetahuan tentang bahasa yang digunakan untuk membuat perangkat lunak untuk platform tempat pengujian dilakukan.

Perhatikan bahwa di perusahaan modern Pemrogram biasanya bekerja dalam tim. Dengan demikian, kompetensi yang terdaftar paling sering didistribusikan di antara spesialis individu. Misalnya, identifikasi kegagalan dan masalah pada perangkat lunak dapat dilakukan oleh seseorang yang berperan sebagai penguji. Pengembangan konsep dan peningkatan antarmuka juga sering dilakukan oleh individu spesialis. Tetapi sering kali semua tugas yang disebutkan diselesaikan oleh orang yang sama. Skenario ini paling sering terjadi pada perusahaan kecil atau startup.

Beberapa pakar TI lebih suka memberi peringkat pada spesialisasi ini berdasarkan tingkat keahlian. Oleh karena itu, penguji terkadang, pada prinsipnya, tidak dianggap sebagai pemrogram karena mereka jarang bekerja dengan “kode”. Namun, kemampuan untuk memeriksa kesalahan perangkat lunak dengan benar, dengan satu atau lain cara, merupakan kompetensi penting dari pengembang. Sekalipun dia tidak dapat memberikan programnya kepada orang lain untuk diuji, dia harus melakukan pekerjaan yang diperlukan sendiri.

Hal yang sama dapat dikatakan tentang antarmuka program. Seorang spesialis dengan keterampilan desain kemungkinan besar akan melakukan pekerjaan yang lebih baik dalam mengoptimalkan fungsi manajemen perangkat lunak daripada programmer “umum”. Tetapi jika seseorang bekerja di sebuah startup dan tidak memiliki kesempatan untuk meminta bantuan seorang ahli, maka dia harus melakukan semuanya sendiri.

Bahasa pemrograman apa yang harus diketahui seorang programmer?

Kami mencatat di atas bahwa kompetensi utama seorang programmer adalah pengetahuan tentang bahasa khusus yang digunakan untuk membuat perangkat lunak, dan kami mencantumkan bahasa-bahasa yang secara aktif digunakan di pasar TI modern. Pada bidang bisnis dan pengembangan TI manakah bahasa tertentu paling baik diadaptasi? Bagaimana seorang programmer dapat memutuskan mana yang akan dipelajari?

Jadi, di antara bahasa terpopuler saat ini: C, C++, C#, Java, Javascript, Ruby, PHP, Python, Objective-C, SQL. Apa alasan seorang programmer modern harus mengetahuinya?

Mengenai bahasa C, perlu dicatat bahwa ini adalah salah satu bahasa yang paling serbaguna dan kuat dalam hal kemampuannya. Anda dapat membuat hampir semua program di dalamnya. bahasa ini- sangat sulit untuk dipelajari, tetapi hal ini membuatnya sangat terhormat untuk mengetahuinya. Hal yang sama dapat dikatakan tentang C++ dan menambahkan bahwa ini bahkan lebih universal dan diminati.

Pada gilirannya, bahasa C# tidak terlalu mirip dengan C, tetapi membutuhkan banyak hal dari C++, serta Java. Adapun penerapannya, sangat diperlukan bagi pemrogram yang bekerja dengan perangkat lunak Windows jenis perusahaan.

bahasa jawa Banyak pakar IT menyebutnya sebagai yang paling universal. Ini dapat digunakan di hampir semua platform - Windows, Linux, Mac, sistem operasi seluler, pengembangan web. Bahasa Java relatif sulit dipelajari, namun setelah dikuasai, seorang programmer akan mampu memecahkan berbagai macam masalah.

Javascript tidak berhubungan langsung dengan Java, meski memiliki kesamaan nama. Ini digunakan terutama di bidang pengembangan web. Dengan menggunakan Javascript, Anda dapat menerapkan konfigurasi halaman web yang fleksibel dalam hal penampilan, kontrol, animasi, dan fitur lainnya. Oleh karena itu, bagi para programmer yang memutuskan untuk mendalami pembuatan website, mempelajari Javascript adalah suatu keharusan. Demikian pula, pengembangan web adalah bidang aplikasi utama PHP. Tidak sulit untuk mempelajarinya dan sangat fungsional.

Apa yang harus diketahui seorang programmer tentang Python dan Ruby? Pertama-tama, meskipun mudah dipelajari, mereka digunakan di berbagai bidang. Misalnya, Python secara aktif digunakan oleh pengembang perusahaan online terbesar - Google, Facebook. Bahasa Ruby sangat bagus untuk startup kecil, tetapi tidak hanya - misalnya, proyek besar seperti Slideshare dan Groupon memiliki pengalaman menggunakannya dengan sukses.

Pasar aplikasi seluler adalah salah satu yang paling dinamis dan menguntungkan saat ini. Jika seorang programmer ingin merasa nyaman dengan platform iOS, maka ia harus mempelajari bahasa Objective-C - bahasa tersebut, seperti yang kami sebutkan di atas, dibuat khusus untuk mengembangkan jenis perangkat lunak yang sesuai. Jika seseorang lebih dekat dengan pasar perangkat Android, maka dia perlu mempelajari Java.

Bahasa SQL adalah salah satu bahasa yang paling umum untuk bekerja dengan database. Hal ini relatif mudah dipelajari, namun pengetahuannya akan selalu berguna bagi seorang spesialis yang berencana membangun karir di perusahaan besar.

Karier sebagai programmer menarik banyak orang. Hal ini tidak hanya disebabkan oleh gaji yang tinggi, tetapi juga karena kesempatan untuk mengambil bagian dalam implementasi proyek-proyek menarik yang dapat berdampak besar tidak hanya bagi perusahaan individu atau startup, tetapi juga bagi seluruh negara dan pasar TI global.

Mari kita pelajari pengetahuan dan keterampilan apa yang harus dimiliki seseorang yang berencana menjadi seorang programmer.

Apa yang harus diketahui oleh seorang programmer pemula?

Ada pandangan umum bahwa hanya spesialis dengan pendidikan matematika atau teknik yang dapat mengembangkan perangkat lunak kompetitif. Oleh karena itu, mata pelajaran dengan profil yang relevan harus diambil sebagai ujian spesialisasi IT di universitas. Dapat dicatat bahwa matematika bukanlah kriteria untuk kelangsungan hidup seorang programmer, namun merupakan alat yang diperlukan. Pengetahuan dalam disiplin ini tidak menjamin bahwa seseorang akan mampu membuat perangkat lunak yang berkualitas, namun tanpanya akan sulit baginya untuk menguasai bahasa pengembangan perangkat lunak yang paling dasar sekalipun.

Keterampilan pemrograman dapat berguna tidak hanya bagi mereka yang ingin membuat program atau website secara profesional. Ilya Shchurov, Associate Professor Departemen Matematika Tinggi di Sekolah Tinggi Ekonomi dan guru di Pusat Pendidikan Berkelanjutan Fakultas Ilmu Komputer di Sekolah Tinggi Ekonomi Universitas Riset Nasional, berbicara tentang bagaimana kemampuan menulis kode dapat membuat hidup lebih mudah. T&P menerbitkan catatan kuliahnya.

Ilya Shchurov

Associate Professor Departemen Matematika Tinggi Sekolah Tinggi Ekonomi dan Dosen Pusat Pendidikan Berkelanjutan Fakultas Ilmu Komputer Sekolah Tinggi Ekonomi Universitas Riset Nasional

Ada banyak klasifikasi yang bisa Anda buat, tapi pertama-tama saya akan membagi pemrograman menjadi dua kategori besar: pemrograman untuk orang lain, di mana Anda menulis program yang akan digunakan orang lain, dan pemrograman untuk diri Anda sendiri. Pemrograman profesional sebagian besar merupakan aktivitas untuk orang lain, dan menurut saya itu tidak selalu menyenangkan. Terlepas dari apakah Anda dibayar untuk program tersebut atau Anda menulis perangkat lunak gratis yang dapat digunakan oleh siapa saja, banyak orang akan mengeluh bahwa ada sesuatu yang tidak berhasil untuk mereka, dan akan selalu ada lebih banyak dari mereka daripada yang memuji Anda. Dan pemrograman untuk diri sendiri adalah kegiatan yang sangat menyenangkan, dan hari ini kita akan membahas hal itu.

Survei terhadap programmer profesional tahun ini menemukan bahwa 81% dari mereka membuat kode sebagai hobi. Artinya, pemrograman itu menyenangkan, menyenangkan, dan juga berhasil. Anda dapat menggunakan program yang sudah jadi, dan dalam 95% kasus Anda akan melakukannya, bahkan jika Anda seorang programmer profesional. Namun di bidang apa pun ada masalah yang belum pernah dipecahkan oleh siapa pun sebelumnya, dan kemampuan memprogram memungkinkan Anda menyelesaikannya dengan lebih efisien. Suatu hari saya berada di call center dan saya diminta untuk bergabung dengan dua meja. Orang yang memberi saya tugas ini mengharapkan saya untuk mulai menyalin sel satu per satu dari tabel pertama ke tabel kedua. Saya mentransfer beberapa catatan, bosan dan menulis skrip pendek yang mengambil data dari satu tabel dan mengisi formulir Google untuk saya, yang tidak terlalu sulit. Saya menyukainya, tetapi yang paling saya sukai adalah rekan-rekan saya memandang saya seolah-olah saya memiliki semacam sihir.

Menulis kode memang menarik, tetapi di sisi lain merupakan tantangan. Anda berinteraksi dengan komputer, dan sangat sering interaksi ini, terutama jika Anda menguasainya teknologi baru, bahasa baru, terlihat seperti ini. Anda menulis kode, Anda pikir Anda menulisnya dengan benar, tetapi komputer memberi tahu Anda bahwa Anda mengalami kesalahan sintaksis. Memang saya lupa titik koma, dikoreksi, dijalankan lagi. Dan komputer berkata: “Tutup braketnya.” Setelah beberapa kali pengulangan, program mulai bekerja, dan menjadi jelas siapa bosnya. Faktanya baik keterampilan pemrograman maupun proses pembelajarannya memiliki beberapa efek samping (termasuk efek positif).

1. Pengalaman Kepemimpinan yang Ekstrim

Komputer sangat bodoh dibandingkan dengan manusia, mereka memahami segalanya secara harfiah, dan jika Anda telah belajar mengemudikan mesin, kemungkinan besar Anda akan mampu membimbing orang mana pun.

2. Pendekatan baru terhadap informasi

Anda mulai melihat secara berbeda pada pemrosesan informasi, pengorganisasian arus informasi, dan manajemen. Misalnya, saat mengumpulkan kumpulan data, Anda sudah memikirkan apakah kumpulan data tersebut cocok untuk pemrosesan otomatis selanjutnya. Hal ini sangat penting jika Anda memiliki organisasi besar atau proyek dengan banyak arus informasi yang perlu Anda kerjakan secara efisien. Jika Anda memiliki pengalaman dengan otomatisasi, Anda akan segera memahami dalam bentuk apa Anda perlu menerima informasi agar dapat memprosesnya dengan cerdas.

3. Komunikasi profesional

Jika Anda belajar memprogram setidaknya sedikit, akan lebih mudah bagi Anda untuk berkomunikasi dengan programmer. Hal ini berguna untuk memahami setidaknya pada tingkat dasar bagaimana dunia TI bekerja dan berkomunikasi di bidang ini tanpa perantara. Orang belajar bahasa untuk lebih memahami budaya lain, dan bahasa pemrograman mempelajari teknologi.

4. Tanggung jawab

Mengapa pemrograman bisa berbahaya? Alasan pertama adalah “tyzhprogrammer”. Jika tiba-tiba seseorang mengetahui bahwa Anda tahu cara memprogram, Anda akan dibombardir dengan permintaan: “Instal ulang untuk saya.” sistem operasi“Tolong, Anda seorang programmer”, “Perbaiki ketel, Anda seorang programmer” dan seterusnya. Ini bukan masalah terburuk, masih ada masalah yang lebih buruk. Misalnya, pada tahun 2001, pada tahun pertama saya, ketika Internet masih lambat, saya memutuskan bahwa saya perlu melakukan sesuatu untuk bertukar informasi dengan teman-teman lebih cepat. Saya berpikir: ada surat, dan berhasil. Kemudian saya membuat kotak surat terpisah untuk pesta kami dan menulis naskah. Robot masuk ke kotak surat ini, mengambil surat-surat yang datang ke sana, dan meneruskannya ke semua orang yang berlangganan hal ini. Beginilah cara kerja grup Google sekarang. Jika saya ingin menulis surat kepada semua orang, saya mengirimkan surat itu ke kotak surat umum ini; jika ada yang ingin menjawab, dia menjawabnya, surat itu sampai ke semua orang, dan sesuatu bisa didiskusikan.

Tetapi kotak surat seseorang penuh, dan ketika kotak surat itu penuh, server surat, sebagai respons terhadap surat apa pun, mengirimkan pesan, yang juga berupa surat. Itu juga berakhir di kotak surat umum, skrip saya mengirimkannya ke semua alamat, termasuk yang penuh. Server surat menghasilkan respons baru dan seterusnya. Alhasil, pada hari Minggu pagi saya dibangunkan oleh telepon dari teman saya, yang dengan hati-hati berkata: “Mungkin ada masalah di sana, karena saya punya kotak surat 6 ribu surat, dan jumlahnya terus bertambah.” Tidak ada hal buruk yang terjadi, tapi itu adalah masalah. Kemudian saya menyadari bahwa kode tersebut dapat dengan mudah lepas kendali dan menimbulkan masalah, jadi saya harus bertindak hati-hati.

Ini adalah kisah seperti dalam “Pangeran Kecil”: Anda bertanggung jawab atas orang-orang yang telah Anda jinakkan. Orang dan proses bergantung pada kode yang Anda tulis. Artinya, begitu Anda melakukan sesuatu yang bermanfaat bagi orang lain, kerugian akibat kesalahan meningkat.

Bagaimana cara belajarnya?

Ada dua sudut pandang yang berlawanan mengenai topik ini. Pertama: mempelajari pemrograman sangat mudah; perintah dasar dapat dikuasai dalam tiga hari. Tetapi ada kemungkinan besar bahwa ketika seseorang menemui kesulitan, dia akan memutuskan bahwa dia telah ditipu dan pemrograman bukan untuknya. Pemrograman tidak mudah, timbul kesulitan. Salah satu alasannya adalah saat Anda membuat program, Anda mempelajari teknologi baru setiap saat, dan hal ini selalu menyusahkan.

Pandangan sebaliknya adalah jika Anda belum pernah memprogram sejak masih di sekolah, maka tidak ada gunanya memulai. Hal ini juga tidak benar. Pemrograman membutuhkan usaha, tetapi bidang ini terbuka untuk dimasuki bahkan jika Anda belum pernah melakukannya sebelumnya.

Kemungkinan besar masalah yang Anda hadapi telah terpecahkan dan solusinya ada di suatu tempat. Terkadang mencari tahu cara kerjanya lebih sulit daripada menulisnya lagi. Ini adalah masalah pemrograman standar, tetapi untuk ini kami memiliki Stack Overflow, salah satu penemuan utama umat manusia di bidang pemrograman. Ini adalah situs tempat para pengembang berbagi pengalaman dan menjawab pertanyaan satu sama lain. Setiap peserta memiliki tingkat reputasinya masing-masing, semuanya dirancang dengan sangat baik pertanyaan sederhana Anda bisa mendapatkan respons dalam sepuluh detik. Ini sangat membantu. Di dunia modern, Anda tidak hanya menulis sebuah program - Anda secara bersamaan menggunakan sejumlah besar program dan alat yang telah dibuat orang lain.

Cara yang baik untuk belajar memprogram adalah dengan menetapkan sendiri suatu masalah yang ingin Anda lakukan dan kemudian mencoba menyelesaikannya. Tentu saja, ada banyak kursus online - baca ulasannya untuk memilih kursus yang tepat. Bahasa pemrograman pertama sulit karena Anda harus merestrukturisasi cara Anda berinteraksi dengan komputer dan menganalisis proses. Tidak ada jawaban universal, semuanya sangat individual. Beberapa orang hanya perlu membaca dokumentasi, melihat contoh kode, dan semuanya sudah jelas. Dalam situasi lain, ada baiknya memiliki seorang mentor yang bisa menjawab pertanyaan-pertanyaan dasar. Berikut adalah beberapa tips yang tampaknya penting bagi saya.

1. Yang paling banyak cara terbaik untuk memahami sesuatu - temukan bagian kode yang berfungsi, mulailah memodifikasinya dan pelajari apa yang terjadi. Ini harus dilakukan setelah Anda memahami sintaks dasarnya. Sesuaikan kode dengan kebutuhan Anda atau cukup bereksperimen.

2. Jika Anda baru belajar pemrograman, jangan langsung mencoba menulis banyak kode sampai Anda dapat menjelaskan apa yang Anda inginkan dengan benar. Hal ini diperlukan agar komputer menjalankan perintah dengan jelas dan dalam langkah-langkah kecil. Setiap kali eksperimen Anda harus diakhiri bukan dengan Anda secara tidak sengaja menemukan solusi yang tepat, namun dengan pemahaman tentang alasan dan cara kerjanya.

3. Jangan khawatir tentang matematika. Dianjurkan untuk mengetahui apa itu sisa ketika suatu bilangan dibagi dengan bilangan lain, tetapi itu semua tergantung pada tugas yang Anda hadapi. Tentu saja, jika Anda ingin pandai mengolah data, maka Anda memerlukan matematika sejauh yang diperlukan untuk pemrosesan tersebut.

4. Jangan takut. Saat Anda memulai pemrograman untuk diri sendiri, Anda mungkin tidak akan menulis jenis kode yang disukai pengembang profesional. Mereka akan mengatakan bahwa ini bukan cara menulisnya, berlebihan, kode seperti itu akan sulit dipelihara, dan seterusnya. Mereka mungkin benar. Tetapi jika Anda menulis untuk diri sendiri dan baru memulai, wajar jika upaya pertama Anda bukanlah teks setingkat Leo Tolstoy. Jika Anda menulis sebuah program yang dapat berfungsi dan menyelesaikan masalah Anda, maka itu bagus.

Ada pendapat bahwa, dengan berkembangnya kecerdasan buatan dan pembelajaran mesin, pemrogram tidak lagi diperlukan: komputer akan belajar memprogram sendiri. Namun menurut saya tidak demikian. Selama ada masalah dan selama perlu dijelaskan cara mengatasinya, pemrograman akan tetap ada. Tentu saja, pemrograman berkembang pesat, banyak berubah selama 20 tahun terakhir. Namun karena komputer menjadi lebih pintar, jumlah pengembangnya pun tidak sedikit - sebaliknya, jumlah pengembangnya pun semakin banyak. Dan menurut saya hal yang sama akan terjadi lebih jauh.

Bagaimana cara menjadi seorang programmer? Apa yang perlu Anda pelajari? Jawabannya tampaknya sederhana: pergilah ke universitas dan mereka akan mengajari Anda di sana. Tetapi jika Anda bertanya kepada programmer mana pun, dia akan mengatakan bahwa apa yang mereka ajarkan di sana, meskipun terkadang menarik, hampir tidak berguna dan hanya memiliki sedikit kesamaan dengan pekerjaan nyata.

Pemrograman adalah sesuatu seperti literasi

Profesi kami adalah salah satu yang paling sulit, tetapi yang paling lucu adalah profesi itu sendiri cukup sederhana. Bahkan dipelajari dengan tenang di sekolah. Untuk menulis program sederhana dalam Pascal, siswa hanya perlu mengetahui sepuluh operator (hanya ada lima belas) dan beberapa fungsi input/output, matematika, dan string.

Operator-operator ini seperti huruf alfabet, dan fungsi input/output Read() dan Write() seperti kata pertama, “ibu” dan “ayah”, yang dengannya seorang anak mulai memahami dunia.

Namun demikian, seperti halnya ada orang biasa yang bisa membaca dan kadang-kadang menulis sesuatu, dan ada penulis profesional yang menguasai pena, saat ini ada pengguna komputer dan ada pula pemrogram. Dan menurut saya, menjadi seorang programmer jauh lebih sulit daripada menjadi penulis. Kami selalu memiliki tenggat waktu yang ketat, kami harus mempertimbangkan kebutuhan pengguna yang berubah-ubah dan mengatasi keterbatasan kemampuan komputer yang lambat, kami perlu membuat antarmuka sesederhana dan senyaman mungkin, mendokumentasikan semuanya dengan baik agar pengguna tidak tersesat, dan mencoba menyelesaikan semuanya tanpa kesalahan, dan juga memikirkan terlebih dahulu tentang bagaimana program akan berkembang di masa depan, dan memastikan bahwa fungsionalitas baru dapat dengan mudah ditambahkan dan dapat dimengerti serta diprediksi. Pada saat yang sama, program itu sendiri harus ditulis dengan gaya yang sama sehingga pemrogram lain dapat mengetahuinya setelah Anda dan terus bekerja.

Bagi penulis, segalanya jauh lebih sederhana. Sebaliknya, mereka malah menyambut baik jika pengarangnya punya gayanya sendiri, dan alur ceritanya membingungkan serta tidak bisa ditebak.

Satu-satunya hal yang bisa kita bandingkan dengan programmer adalah pencipta serial TV, yang pada dasarnya juga menulis sebuah program, hanya untuk aktor. Penulis skenario, seperti kita, bekerja sebagai tim, mereka juga memiliki tenggat waktu, rilis, mereka juga perlu memikirkan seluk-beluk plot di kepala mereka dan bahkan meletakkan kemungkinan untuk mengubah plot di masa depan, menambahkan karakter baru atau menghidupkan kembali. yang lama.

Namun ada satu perbedaan yang signifikan: penulis tidak dapat lagi menulis ulang plot dari episode yang difilmkan. Paling-paling, jika penonton salah memahami sesuatu, mereka akan mengklarifikasinya di episode berikutnya.

Kami, programmer, harus terus-menerus kembali ke kode lama dan mengubah sesuatu di dalamnya. Bayangkan sebuah novel tebal yang telah Anda tulis selama sepuluh tahun dan Anda harus menulis ulang setiap babnya berulang kali, mengubahnya menjadi sebuah thriller. Sekarang bayangkan Anda telah pindah ke proyek lain dan sekarang Anda harus melakukan hal yang sama dengan teks yang belum pernah Anda lihat sebelumnya, dan itu ditulis oleh beberapa penulis, masing-masing memiliki gayanya sendiri, dan selain itu, mereka semua sudah memilikinya. meninggalkan proyek.

Oleh karena itu, mempelajari pemrograman relatif mudah, tetapi untuk melakukannya secara profesional, Anda perlu melakukan pekerjaan yang sangat besar. Penulis memulai dengan cerita pendek kecil, secara bertahap menguasai semua perangkat gaya, memperkaya pidato mereka, dan sendiri banyak membaca. Dengan cara yang sama, programmer harus banyak memprogram dan mengasah keterampilan mereka. Dan sialnya, ini sangat sulit! Dan terus-menerus - selama bertahun-tahun, puluhan tahun - Anda harus meningkat. Ini adalah maraton yang panjang, penuh duri dan kegembiraan. Baik motivasi moneter maupun motivasi lainnya tidak akan membantu Anda - hanya minat Anda sendiri terhadap masalah tersebut.

Saya bertemu orang-orang yang hafal pemrograman, bahkan membaca beberapa buku di bidang ini dan mulai mencari pekerjaan, tetapi pada saat yang sama mereka tidak menulis satu program pun sendiri. Dapatkah Anda membayangkan seorang penulis yang baru saja menguasai literasi dan belum menulis satu cerita pun, sudah ingin mendapatkan pekerjaan di kantor redaksi? Ia bahkan tidak tahu apakah ia akan menyukai kegiatan ini dan apakah ia akan mampu meraih kesuksesan, namun ia sudah menghitung gajinya! Namun demikian, banyak calon programmer yang masih mendapatkan pekerjaan. Mereka melaksanakannya dengan buruk, namun selalu ada serangkaian tugas yang kualitasnya tidak terlalu penting.

Secara bertahap, programmer mengembangkan kosakata profesional mereka sendiri. Mereka menyebut proses penulisan sebuah program coding, dan orang-orang yang hanya menguasainya saja disebut dengan sebutan coder. Mereka dapat menulis sesuatu untuk Anda agar dapat berfungsi, tetapi akan sangat sulit dan tidak menyenangkan untuk memperbaiki dan menyempurnakan program seperti itu, biasanya lebih mudah untuk menulis ulang. Para pembuat kode sendiri menyebut diri mereka pengembang, dan seiring waktu, setelah memperoleh pengalaman, banyak yang mulai menyebut diri mereka insinyur perangkat lunak.

Oke, jika pemrograman itu “seperti literasi”, lalu apa lagi yang perlu Anda ketahui dan mampu lakukan untuk menjadi “penulis”?

Secara bertahap, dari berbagai disiplin ilmu, teknologi dan keterampilan, yang umum dan berulang-ulang mengkristal, yang dalam praktiknya ternyata paling berguna bagi para programmer. Sayangnya, hal ini juga tidak konstan. Misalnya, tiga puluh tahun yang lalu, sebagian besar programmer memerlukan pengetahuan tentang elektronik, pemrosesan sinyal, dan kode mesin instruksi prosesor (assembler).

Saat ini Anda dapat dengan sukses mengatasi pekerjaan tanpa sepengetahuan ini, dan saya bahkan terkejut ketika saya pernah bertemu dengan seorang pengembang Senior yang hanya memahami secara samar-samar cara kerja prosesor. Namun selama tiga puluh tahun ini Internet muncul, dan program menjadi sangat besar dan sangat kompleks. Dan banyak keterampilan dan pengetahuan lain telah ditambahkan, yang sangat diperlukan saat ini: proses pengembangan yang fleksibel, paradigma pemrograman berorientasi objek dan fungsional, membangun sistem yang skalabel, beban tinggi, dan toleran terhadap kesalahan, dan Anda juga harus mampu membaca dan bekerja dengan kode lama, gunakan sistem kontrol versi. Anda tidak dapat melakukannya tanpa keterampilan wajib seperti kemampuan mencari di Internet, yang sebelumnya tidak ada.

Semua ini melampaui lingkup pemrograman itu sendiri dan, dengan cara yang bersahabat, memerlukan istilah tersendiri. Secara pribadi, untuk lebih jelasnya, saya menyebutnya “pemrograman” - ini seperti Rekayasa Perangkat Lunak, tetapi istilah yang lebih luas yang mencakup apa yang penting bagi kami: proses pengembangan; kemampuan memprogram otak Anda untuk, misalnya, “mengikuti arus”; kemampuan untuk bekerja dalam tim atau menulis resume - secara umum, semua yang kami lakukan.

Dasar-dasar Pemrograman

Saya sangat beruntung karena segera setelah saya tertarik pada pemrograman, saya membaca buku yang luar biasa - “Perfect Code”. Saya tersadar bahwa ini bukanlah buku tentang bahasa atau teknologi pemrograman, seperti semua hal lain yang pernah saya temui sebelumnya, melainkan buku tentang Pemrograman itu sendiri. Ini mungkin buku pertama yang mencoba mengisi kekosongan yang ditinggalkan dengan membaca buku teks algoritma, manual teknis, dan dokumentasi.

Dan dia segera dimulai dengan metafora yang membantu menyampaikan esensi pekerjaan kami dengan lebih akurat. Anda telah mempelajari tentang Metafora Sastra, ketika pemrograman dibandingkan dengan menulis, namun ada juga metafora populer yang membandingkan pemrograman dengan membangun rumah, atau bahkan membuat pesawat terbang.

Bukan suatu kebetulan bahwa dia memenangkan survei “Jika Anda dapat kembali ke masa ketika Anda masih seorang pengembang pemula, buku pemrograman apa yang Anda sarankan untuk Anda baca?”

Kemudian muncul buku bagus lainnya tentang pemrograman:

Dan masih banyak lagi yang layak lainnya, namun secara umum mencakup area tertentu yang lebih dalam.

Faktanya, keseluruhan alkimia pemrograman ini sebenarnya terdiri dari hal-hal yang kita kerjakan sepanjang waktu dan perlu dipahami:

  • Dasar-dasar teknologi komputer: dasar-dasar aljabar Boolean, sistem bilangan biner dan enam belas baris.
  • Perangkat komputer: prosesor, RAM, tumpukan, perangkat keras, kartu grafis, bus, periferal (yaitu keyboard, mouse).
  • Perakit prosesor dan C - Anda juga perlu mengetahuinya setidaknya sedikit.
  • Sebenarnya literasi dasar: sintaksis, cara mendeklarasikan variabel, fungsi, cara menulis pernyataan if bersyarat, prioritas operator, cara mengatur perulangan, cara menerima masukan dari pengguna, dan cara mengeluarkannya. Pemrograman terstruktur - cara menulis tanpa goto, menggunakan loop dan rekursi. Sangat mudah; lima belas operator dapat dipelajari dengan cepat. Hampir semua bahasa pemrograman yang digunakan saat ini merupakan warisan dari C (C++, Java, C#, PHP, JavaScript), sehingga tidak perlu mempelajarinya kembali. Oleh karena itu, tidak masalah bahasa mana yang Anda mulai pelajari.
  • Algoritma: pencarian brute force linier, pencarian biner, pengurutan gelembung, pengurutan cepat, dll. Estimasi kompleksitas algoritma.
  • Struktur data: string, antrian, tumpukan, daftar tertaut tunggal dan ganda, array, dll.
  • Dekomposisi, abstraksi dan desain program: pemrograman berorientasi objek, SOLID, pola desain, diagram UML.
  • Dasar-dasar pemrograman fungsional: cara menulis tanpa penugasan dan perulangan yang merusak, bekerja dengan koleksi dalam gaya fungsional.
  • Pengetahuan tentang platform, perpustakaan, teknologi: Java Core, bekerja dengan file, bekerja dengan Jaringan, bekerja dengan array, string dan koleksi, bekerja dengan memori dan pengumpulan sampah. Ada banyak buku tentang semua ini dari pencipta teknologi itu sendiri (misalnya, “Java Efektif”).
  • Standar dan protokol jaringan: TCP, UDP, HTTP, HTML, XML, JSON, MIME, RFC.
  • Kemampuan menulis kode yang bersih: cara memberi nama variabel dan kelas dengan benar, cara memformat kode, cara menulis komentar dengan benar (lebih tepatnya, bagaimana tidak menulisnya :-)). Pemahaman muncul setelah membaca buku Clean Code.
  • Kemampuan untuk bekerja dengan kode: refactoring (buku Fowler), hotkey IDE untuk refactoring, kemampuan membaca dan memelihara kode lama.
  • Praktik teknik: pengujian unit, pemrograman ekstrem (XP), integrasi berkelanjutan, sistem kontrol versi (Git, SVN).
  • Manajemen proyek dan organisasi proses: Waterfall, Agile, SCRUM, Kanban, pelacak bug, estimasi waktu untuk suatu tugas.
  • Soft skill: kemampuan berkomunikasi dengan pelanggan dan rukun dalam tim, mengatasi kurangnya motivasi, memilih prioritas.
  • Basis data: SQL, basis data relasional, berorientasi dokumen dan grafik, ACID, teorema CAP, optimasi kueri.
  • Sistem operasi: Linux, menginstal dan mengkonfigurasi program di dalamnya, baris perintah.
  • Penskalaan dan beban tinggi, pemantauan, logging, toleransi kesalahan.
  • Kriptografi, perlindungan terhadap serangan.
  • Kegunaan, pengumpulan persyaratan.
  • Pengetahuan bahasa Inggris, kemampuan menulis dokumentasi dengan jelas dan ringkas.
  • Kemampuan merumuskan pertanyaan dengan benar dan menemukan jawabannya secara mandiri.
  • Kemampuan untuk belajar dan sekaligus terus meningkat.
  • Kemampuan untuk mengajar orang lain, menjelaskan dengan jelas dan bahkan berbicara kepada publik di konferensi...
  • dan pada saat yang sama tidak menjadi gila.

Seperti yang Anda lihat, daftar ini dapat dilanjutkan, tetapi Anda harus memahami hal utama: pemrograman itu sendiri hanyalah sedikit. Hampir semua keterampilan lainnya tidak mungkin dipelajari. Anda hanya dapat menemukannya melalui pengalaman luas dan terus-menerus membaca buku-buku yang tepat yang akan membantu Anda memikirkan kembali hal tersebut.