Profesi: Pengembang Backend

Tidak ada alasan untuk berhenti - 
saya berjalan, meluncur.
Dan di dunia tidak ada puncak seperti itu,
Apa yang tidak bisa diambil.
V. Vysotsky


Jika artikel ini tidak dipublikasikan di Habré, tetapi di majalah pendidikan, saya akan memulainya seperti ini: “Ingat situs yang Anda suka, yang memiliki navigasi yang nyaman dan antarmuka yang bagus. Tapi tahukah Anda bahwa ini hanya puncak gunung es ... " Tapi mungkin semua tahu di Habré, oleh karena itu, tidak ada lirik. Backend dari setiap proyek web adalah sistem kompleks yang memungkinkan aplikasi untuk bekerja dengan cepat, untuk mencari secara efisien, dengan cepat memberikan informasi kepada pengguna, untuk menyimpan data dengan aman dan aman dan, jika perlu, bekerja dengan sistem eksternal lainnya. Ini seperti arloji Swiss: mereka membelinya untuk gaya dan papan nama, tetapi para penikmat tahu bahwa di bawah dial yang tertahan terletak dunia ajaib dari jarum jam. Dan pengembang backend adalah penyihir mekanisme, organisme, usus, jeroan, atau seperti yang Anda sebut dalam aplikasi web. Eh, tanpa lirik itu tidak mungkin! 

Singkatnya, hari ini kami sedang menganalisis profesi lain dalam seri "Profesi ...". Jadi, bagaimana jika Anda pergi ke pengembang backend? 


Backend selalu sedikit sakit

Siapa ini?


Berbicara secara akademis, pengembang backend adalah seorang programmer yang bertanggung jawab atas logika internal dan komputasi suatu situs web atau aplikasi web, serta perangkat lunak dan sistem informasi lainnya. Sebenarnya, backend tidak hanya untuk solusi web, tetapi juga tersedia untuk aplikasi desktop dan mobile sebenarnya, backend adalah semua yang berhubungan dengan perangkat keras dan perangkat lunak layanan. Tetapi secara historis terjadi bahwa backend dan frontend mulai secara khusus dibedakan secara jelas dalam pengembangan web. Dan karena ini juga bidang paling populer saat ini, maka kita akan berbicara secara spesifik tentang web (untuk desktop, banyak tesis juga akan valid, tetapi kita akan berbicara tentang pengembang seluler di salah satu masalah secara terpisah).

Pengembang backend menciptakan komponen dan fungsi yang dapat diakses oleh pengguna aplikasi atau situs melalui antarmuka. Sederhananya, backders adalah programmer yang mengembangkan segala sesuatu yang tidak dilihat dan tidak disentuh oleh pengguna. Artinya, formulir entri data yang indah atau keranjang dari toko online adalah tampilan depan, dan menyimpan data dalam DBMS, sekelompok bidang formulir pendaftaran dan keranjang, integrasi dengan gateway pembayaran, surat otomatis, memuat dan memperbarui konten semuanya merupakan backend. Oleh karena itu, jika formulir pendaftaran mulai memberikan kesalahan basis data, kesalahannya adalah ... tester :-) (mengapa - kami juga akan memberi tahu pada seri berikutnya).

Apa yang bertanggung jawab atas pengembang backend:

  • memastikan operasi yang benar dari semua fungsi situs dan logika komputasinya;
  • organisasi dan bekerja dengan database melalui DBMS;
  • pengembangan logika dasar dan algoritma operasi aplikasi;
  • API
  • integrasi yang diperlukan dengan layanan eksternal;
  • menguji dan men-debug aplikasi dan komponen individual.

Secara umum, otak dan darah situs berada di hati nurani pengembang backend. Hanya tidak perlu berpikir bahwa ini adalah dewa dan raja dari semua perkembangan, dan seluruh peserta dalam proses membeku untuk mengantisipasi tindakannya - ini tidak sepenuhnya benar (well, hampir).


Pengembang Frontend mengecat lampu kuning dan menggosok backend sehingga lampu bekerja, tetapi hanya di siang hari.


Pengembang Backend terkagum-kagum di mana setiap orang mendapat masalah dengan bohlam-bohlam ini, ingat bahwa ia lupa memasukkan cahaya ke dalam basis data, tenang, dan menyalahkan ujung depan.

Di mana itu dibutuhkan?


Seperti dalam kasus pengembangan front-end, benar-benar di mana-mana ada situs web atau aplikasi yang berinteraksi dengan pengguna di web. Ini masalah lain bahwa setiap orang membutuhkan backder dari level yang berbeda: di kantor jaringan sosial bersyarat atau situs pengumuman besar, pengembang backend tidak hanya harus memiliki keterampilan dasar, tetapi juga bekerja dengan beban tinggi, arsitektur layanan mikro dan containerisasi (Docker, Kubernetes), tahu sistem pemantauan ( seperti Zabbix, Grafana), memiliki keterampilan Scrum (opsional untuk perusahaan tertentu). Dan untuk toko online kecil, sekelompok PHP-Ajax membutuhkan DBMS-beberapa HTML sudah cukup, terkadang bahkan lebih sedikit. Jelas bahwa upah dan persyaratan untuk pengalaman juga sangat berbeda. 

Secara tradisional di Habré Careerkami menemukan 444 lowongan dari pengembang backend, yang hampir 2 kali lebih banyak daripada di frontend. Pada hh.ru - sekitar 1800. Secara umum, vendor front-end sedang menunggu Anda di workstation, di mana pencarian situs membutuhkan waktu dua jam untuk menyelesaikan :-) Namun serius, perusahaan mungkin memiliki 2-3 pengembang backend per frontend, terutama jika kita berbicara tentang aplikasi dengan logika internal yang kompleks dan logika bisnis (toko online, CRM-ERP, portal perusahaan, dll.).

gaji rata-rata


Kami juga akan melihat upah di Haber Career. Ambil data untuk paruh kedua 2019, terlepas dari kepemilikan tumpukan tertentu. 
Tingkat spesialis
gaji rata-rata
Magang (Magang)
35 345 gosok.
Muda
55 241 gosok.
Tengah
105 048 gosok.
Senior
168 350 gosok.
Presenter (Pimpinan)
185 335 gosok.

Jika kita bandingkan dengan gaji tender front-end, pertumbuhannya tidak signifikan, dari beberapa ratus rubel menjadi 6.000 rubel. (di tengah). Tapi ini benar-benar nilai yang sangat rata-rata, banyak tergantung pada tumpukan pemrograman, keterampilan tambahan, pengalaman dan bahasa pengembangan utama. Omong-omong, PHP berada di tempat pertama untuk semua level pengembang backend, dan kita akan membicarakannya lebih lanjut.

Persyaratan Profesional Dasar


Persyaratan untuk back-end bahkan lebih sensitif terhadap fitur perusahaan dan proses bisnisnya daripada front-end. Kadang-kadang bisa sangat aneh pada pandangan pertama hal-hal seperti "memahami prinsip-prinsip kulkas ikan sebagai suatu perusahaan", "pengetahuan tentang dasar-dasar penjualan atau pengalaman dalam penjualan", "pengetahuan cemerlang tentang JavaScript, CSS dan HTML". Tapi itu terlihat gila dan menjijikkan hanya dengan pendekatan pertama. Bahkan, pengembang backend benar-benar lebih terbenam dalam proses bisnis, tidak hanya harus mengembangkan kode yang sesuai dengan mereka, tetapi juga menyesuaikan beberapa hal dengan tugas-tugas tertentu, memahami cara kerjanya dari dalam. Jika Anda belum pernah melihat corong penjualan dan tidak mengerti jenis sampah apa itu, Anda tidak akan pernah bisa mengembangkan logikanya bersama dengan filter, irisan dan transisi (bahkan jika Anda memiliki spesifikasi teknis yang sangat baik, sulit untuk mengetahuinya).Nah, dalam contoh dengan "pengetahuan brilian tentang JavaScript, CSS, dan HTML" semuanya sederhana: manajer mungkin tidak benar-benar mempercayai pengembangnya yang lain dan siap mempertimbangkan kembali pendekatannya terhadap pengembangan. Ini sering terjadi di perusahaan kecil. 

Tetapi ada juga satu set persyaratan dasar yang akan dilihat oleh pengembang backend di hampir semua pekerjaan.

  • Pengetahuan tentang setidaknya satu bahasa pemrograman "server": PHP, Go, ASP.NET, C / C ++, Python, Ruby, Java. Dalam beberapa kasus, pengetahuan JavaScript untuk backend (Node.js) sudah cukup, tetapi ini lebih merupakan nilai tambah daripada poin.
  • Pengetahuan tentang API (REST, SOAP - kurang dan kurang).
  • Memahami prinsip-prinsip Apache, NGINX, IIS dan server lain.
  • Keterampilan untuk menulis tes unit dan mencakup kode dengan tes.
  • Dasar-dasar keamanan jaringan dan pengetahuan alat untuk memastikannya.
  • Pengetahuan tentang kerangka kerja web populer yang dapat memecahkan masalah dalam mengembangkan aplikasi tertentu.
  • Ketrampilan menulis kueri basis data dan desain basis data.
  • Mengetahui dasar-dasar frontend bukanlah nilai tambah, tetapi poin wajib, jika tidak, akan sangat sulit bagi Anda untuk merancang dan menulis aplikasi.

Nilai tambah yang besar untuk resume dan pekerjaan Anda yang sebenarnya akan menjadi seperangkat pengetahuan.

  • Administrasi UNIX atau pengetahuan tentang Linux (Anda dapat menggunakan salah satu kit distribusi).
  • Pengetahuan tentang prinsip-prinsip kerja HTTP (caching, otorisasi, struktur pesan, header, kode respons, dll.)
  • Model OSI. 
  • Keterampilan dalam persiapan dan penilaian kerangka acuan (TOR) adalah keterampilan yang sangat penting yang diperlukan untuk mengumpulkan informasi yang paling akurat tentang persyaratan perangkat lunak. 

"Ya, gila!" - Anda akan mengatakan dan Anda akan benar. Namun, saya punya kabar baik: alat pengembangan backend berubah jauh lebih lambat daripada ujung depan, serta persyaratan menjadi usang untuk waktu yang lama. Jadi saya menguasainya sekali - dan membaca intisari untuk tetap up to date dengan hal-hal, tetapi terutama untuk tidak mendidih karena desain datar telah menjadi modis, dan kartu produk di situs Anda telah keluar dari tren selama dua hari :)

Ngomong-ngomong, ada banyak ahli matematika yang baik dan kuat di antara para backender, karena pengembangan backend adalah ilmu pasti, dan kualitas hasilnya sangat tergantung pada seberapa terverifikasi algoritma, pola, siklus, fungsi, dan pilihan yang Anda pilih dan terapkan.
Magang (Magang)
Muda
Tengah
Senior
Presenter (Pimpinan)
  1. C ++
  2. C #
  3. Golang
  4. SQL
  5. .BERSIH

  1. Php
  2. Python
  3. Jawa
  4. Java spring framework
  5. PostgreSQL

  1. Php
  2. Python
  3. Jawa
  4. PostgreSQL
  5. Java spring framework

  1. Php
  2. Jawa
  3. Python
  4. PostgreSQL
  5. Java spring framework

  1. Php
  2. Jawa
  3. MySQL
  4. PostgreSQL
  5. Sistem yang sarat muatan


+ OOP, kerangka kerja

+ OOP, frameworks, Docker
+ sistem yang sangat dimuat, OOP, kerangka kerja, Docker
+ Linux, OOP, frameworks, Docker
Top 5 teknologi yang diminati oleh para spesialis menurut "Habr Career", paruh kedua tahun 2019, intinya adalah keterampilan "tambahan".

Prinsip pembentukan daftar: pengguna, memasukkan data upah, menunjukkan keterampilan yang mereka prioritaskan (apa yang bisa mereka lakukan!). Artinya, ini bukan persyaratan dari majikan, tetapi keterampilan spesialis di setiap kategori.

Seperti yang Anda lihat, perusahaan siap mengambil magang dengan universitas dasar C, C ++ dan C #, tetapi di masa depan mereka lebih suka spesialis dengan "set kerja" dari back-end. Perhatikan minat pada peti kemas dan sistem yang sarat muatan. 

Omong-omong, inilah roadmap lain untuk Anda, tetapi sudah untuk backend pengembang(Yang lain juga ada di situs - menurut saya, ini adalah salah satu yang terbaik dan paling sistematis yang saya lihat pada topik ini). Lihat, cetak, dan teruskan ke bagian atas backend. 


Kualitas pribadi yang penting


Back-upnya bagus, bisa jadi introvert :) Area kerjanya dengan pengguna diminimalkan, pada dasarnya, semua kontak yang berfungsi dengan manajer atau kolega. Orang-orang ini sering mengerjakan TK dan melakukan segala sesuatu seperti yang dijelaskan dalam dokumen atau sedemikian rupa untuk mendapatkan kondisi yang sedekat mungkin dengan target (TK, Anda tahu, juga tidak sempurna, atau bahkan tidak sama sekali ...).

Namun, ada serangkaian kualitas, yang tanpanya Anda tidak harus memikirkan arah backend. Bagi Anda itu mungkin tampak seperti kualitas seorang karyawan yang dibutuhkan oleh "tim muda yang berkembang secara dinamis", tetapi tidak, ini tentang keharusan internal yang akan membantu tidak hanya melakukan pekerjaan dengan baik, tetapi juga melakukannya dengan kenyamanan batin (dan bukan "keluar") ").

  • . , : , , , .. , — (, - - - CRM-).
  • . , , .
  • . — , , , « » , , - ( ).
  • . .
  • , . — .
  • . , . , . — . 
  • . — . , , . — ( ).
  • . , , , , , , , . , , — «» , « ».


Inilah yang ditulis untuk pengembang front-end.

Untuk setiap programmer, bahasa Inggris setidaknya menengah ke atas dengan bias dalam bahasa Inggris teknis sangat diinginkan. Jadi, Anda dapat membaca dalam aslinya berbagai rekomendasi Google dan perusahaan lain untuk pengembangan optimal (banyak dokumentasi berguna!), Belajar mandiri dengan bantuan kuliah asing, berkomunikasi dengan kolega di forum, mengajukan pertanyaan, dan juga membaca buku tentang kegunaan dan desain, di antaranya ada sangat banyak edisi berbahasa Inggris yang keren dan belum diterjemahkan. 

Hal yang sama berlaku untuk back-end, bahkan lebih dari itu. Dalam komentar di artikel sebelumnya, mereka memperhatikan bahwa level menengah-atas terlalu besar untuk spesialis IT, cukup rendah. Saya menilai sendiri dan tingkat buku teks. Anggap saja dari intermediate ke intermediate menengah, langkahnya tidak terlihat seperti catcher dan level “chatting” diambil dengan mudah. Tetapi dari atas ke lanjutan - jurang dan kompleksitas serta kosakata. Namun, jika Anda membaca peraturan dan memahami bahwa Anda membaca pada tingkat yang berbeda, tidak ada yang akan membawa Anda untuk mengikuti ujian, gunakan itu. 

Tempat belajar


Pada prinsipnya, universitas teknis yang sama, kursus, pendidikan mandiri dan universitas perusahaan. Namun ada nuansa penting.

  • - (, , .), . - — , . , , , .. 
  • — - (, PHP Java) - -, , ( ).
  • , / . , .
  • open source , .
  • , , (-), . , , , , . , , - , - , .. ( / ). 



Penting untuk memilih alat pelatihan berdasarkan bahasa pemrograman yang dipilih dan tumpukan saat ini pada saat tertentu. Rekomendasi umum adalah sebagai berikut.

  • Buku dasar tentang bahasa pemrograman Anda - Saya suka edisi O'Reilly, banyak yang diterjemahkan oleh Peter. 
  • Demikian pula, buku dasar di tumpukan Anda. 
  • Cookbook berdasarkan bahasa dan rekomendasi perusahaan, artikel blog, dll.
  • Beck Kent, Pemrograman Ekstrim. Pengembangan melalui pengujian adalah buku yang bagus untuk semua pengembang pada prinsipnya, tetapi terutama untuk back-end. Masuk ke filosofi TDD itu mahal.
  • Joel H. Spolsky - Anda dapat membaca blognya, Anda masih dapat menemukannya di e-book Runet "Joel about programming" - kumpulan posting blog dalam bahasa Rusia.
  • « », « » — «» , .
  • « » — «» , .
  • , Youtube . , , . , . 
  • webref.ru — , , . 
  • codecademy.com — , , , . 
  • ITc | komunitas programmer - mobil informasi terorganisir dengan kursus, ceramah dan apa pun. Baca komentar, mudah menentukan yang terbaik untuk belajar.
  • Perpustakaan Programmer - banyak buku tentang berbagai topik IT.

Mengapa saya fokus pada buku? Pertama, mereka profesional, dan kedua, mereka dapat dengan mudah disimpan, membuat catatan dan menempel stiker, dengan cepat kembali ke informasi yang Anda butuhkan. Ini adalah format yang nyaman dan dapat diakses untuk presentasi informasi untuk otak. Jika Anda belum menguji diri sendiri, pastikan untuk mencobanya, bersenang-senanglah!

Masa depan back-end


Masa depan back-end digambarkan dengan sangat jelas dan menjanjikan.

  • : junior , middle , senior , , , team lead .. , , , , .
  • : - Java, /++ « », , , , .. , .
  • -: .
  • DevOps, DevSecOps, — - , .
  • , . 
  • — . - ( -).

Saya akan memberi tahu Anda lebih banyak: jika pada 2020-2022 Anda belajar SQL dan bahasa pemrograman "backend" apa pun, itu akan baik untuk Anda pada tahun 2032. Dan intinya di sini bukanlah dukungan legacy, tetapi pada kenyataan bahwa belum ada alternatif yang layak untuk web, dan jika itu dan akan tampak bahwa back-end memiliki peluang yang jauh lebih baik bahwa tumpukannya akan jatuh ke tempatnya.

Hal utama yang tidak berhasil bagi Anda adalah menjadi pengembang yang buruk dan pada saat yang sama mengandalkan sesuatu yang menarik. Faktanya adalah bahwa setiap perusahaan mengharapkan tanggung jawab dari back-end (bayangkan kesalahan dalam kode aplikasi perbankan, beberapa GIS kritis atau sistem pemantauan online - Anda dapat segera menjadi abu-abu) dan pendekatan yang baik untuk bekerja. Tidak mungkin bahwa akan mungkin untuk menyaring atau mengatakan "itu dimaksudkan" - dengan semua tembus pandang eksternal backend, kegagalan di dalamnya paling terlihat.

Mitos tentang profesi


▍ Backend sangat sulit


Titik diperdebatkan. Beberapa pengembang mengklaim bahwa itu lebih mudah berkat alat pengembangan, perpustakaan yang tak terhitung jumlahnya dan tingkat dinamika yang rendah, sementara yang lain takut untuk mendekati backend pada prinsipnya. Namun, seperti biasa, di tengah: alih-alih, tumpukan pengembang backend beragam dan memiliki komponen heterogen, tetapi, pertama, tidak semua yang dibutuhkan dalam proyek, kedua, perlu memahami satu hal, dan sekarang semua hubungan sudah jelas, pengetahuan digantung pada satu batang. Bagaimanapun, Anda perlu mencoba sendiri di backend - bahkan jika Anda berbalik dan memilih jenis pengembangan yang berbeda, pengetahuan yang diperoleh akan membantu Anda dalam pekerjaan Anda.


▍ Pengembang Backend mendapat jutaan


Ini umumnya mitos umum tentang pemrograman. Upah nyata terbesar dari pengembang Rusia, yang harus saya lihat dengan mata kepala sendiri, adalah 540 ribu rubel. per bulan (C / C ++, proyek asing, sistem visi komputer, PhD, jarak jauh), yang kedua darinya - 400 ribu rubel. (Delphi, udalenka, perusahaan asing, Jerman sebagai penduduk asli). Sisanya sangat mirip dengan angka yang saya ambil dari "Habr Karir" untuk piring saya. Anda akan menerima jutaan hanya jika konvergen: pengetahuan yang brilian tentang bahasa + bakat + pengalaman dan keterampilan unik dalam proyek + lingkup sempit yang siap membayar begitu banyak. Hanya ada beberapa dari orang-orang ini, dan saya tidak akan mengatakan bahwa nasib mereka indah: 99% dari hidup mereka bekerja, 1% adalah mimpi. Oleh karena itu, penting untuk mewujudkan tesis lain: pengembang backend dalam permintaan dan menghasilkan uang yang baik, lebih baik daripada banyak spesialis. Carapatut dicoba.

▍PHP - r @ vno, PHP sudah mati, PHP harus mati


Saya suka holivar ini! Tetapi pada saat yang sama, saya tahu bagaimana pemula takut padanya dan mencoba untuk menyiasati bahasa yang kuat dan nyaman ini beserta kerangka kerjanya. Faktanya adalah bahwa pada awal 2000-an-2010-an, PHP adalah bahasa pemrograman yang sangat populer untuk para freelancer dan orang-orang beruntung IT lainnya. Dikatakan banyak situs web dan aplikasi amatir yang buruk - tetapi bukan karena bahasanya buruk, tetapi karena orang-orang ini tidak dapat menggunakannya dengan anggun dan kompeten. Dari situlah mitos tentang "buruk" berjalan.

Tentu saja, PHP mudah dipelajari, lebih hidup daripada semua yang hidup, ratusan ribu proyek, proyek desain dan insinyur proyek ditulis dan didukung di dalamnya, dan itu akan hidup untuk waktu yang agak lama. Menurut Stackoverflow, PHP dipilih oleh 25,8% pengembang profesional. Bahasa Ya dan Octoverse GitHub cukup stabil di sejumlah proyek:


Ngomong-ngomong, programmer PHP yang benar-benar baik sangat dihormati dalam segala hal.

Tip utama


Tidak ada bahasa yang lebih baik untuk backend, apalagi saya akan memberi tahu Anda bahwa tidak ada bahasa pemrograman yang lebih baik untuk apa pun. Pelajari bahasa yang Anda atau calon calon atasan Anda perlukan (ini dapat dipelajari di muka), maka Anda dapat dengan cepat dan elegan menyelesaikan tugas yang diberikan kepada Anda. Anda seharusnya tidak belajar beberapa teknologi dari prinsip "semua orang berlari dan saya berlari." Kemudian Anda bisa menjadi spesialis yang benar-benar unik, berpikir, dan berpenghasilan. Yang akan menentukan kondisinya, tentu saja, yang terbaik. 

Nah, apakah ada backend yang berpengalaman di antara pembaca? Bagaimana itu? Mengapa Anda memilih sisi pengembangan khusus ini? Ah ya: Profesi: pengembang front-endProfesi: administrator sistem







All Articles