Sebagai pengembang dipanggil
Di blog saya, saya menggunakan istilah "programmer", "coder", "developer" dan "engineer" secara bergantian untuk menghindari tautologi. Meskipun demikian, saya percaya bahwa ada beberapa perbedaan antara kata-kata ini dan yang serupa lainnya.
Pada artikel ini, kita akan membahas serangkaian kata benda khas untuk menunjuk orang yang menulis kode. Saya akan memberikan interpretasi saya tentang bagaimana istilah-istilah ini berhubungan dengan tingkat penguasaan.
Interpretasi nilai-nilai
Definisi yang disajikan di sini tidak resmi. Saya tidak tahu definisi formal atau standar yang diterima. Namun, banyak orang memiliki pendapat yang kuat tentang masalah ini. Pemahaman saya tentang setiap istilah didasarkan pada pengalaman 30 tahun di industri perangkat lunak, tetapi saya benar-benar siap untuk orang lain untuk tidak setuju dengan interpretasi saya.
Saya tidak ingin berdebat atau meyakinkan orang dengan pendapat yang berbeda. Secara umum, hampir tidak mungkin untuk berbicara tentang pendapat benar atau salah. Namun demikian, jika Anda belum membentuk posisi tentang masalah ini, saya harap panduan ini akan memberikan kejelasan.
Pendekatan tripartit
Untuk kejelasan, setiap istilah akan menerima tiga karakteristik:
1. Tingkat Penguasaan
Penjelasan tingkat keterampilan untuk istilah ini, dalam interpretasi saya.
2. Sejalan dengan jajaran seni bela diri
Sebuah analogi dengan jajaran seni bela diri. Secara khusus, kami membandingkan tingkat keterampilan teknis dengan warna sabuk seniman bela diri.
3. Kode contoh
Contoh bagaimana seseorang dari level ini harus mendekati tugas pemrograman sederhana. Definisi di sini sepele dan tidak dimaksudkan sebagai contoh yang realistis. Tujuannya adalah untuk membandingkan dan mendiskusikan level keterampilan. Dengan kesederhanaan, contoh dipilih agar sesuai dengan spesialis dari tingkat mana pun. Inilah masalah yang akan kita pertimbangkan:
Hitung jumlah bilangan bulat
Silakan bermain bersama saya dan menyajikan tugas ini sebagai perantara untuk jauh lebih sulit. Dalam dunia fiksi kita, tugas membutuhkan pemikiran serius dan memiliki banyak solusi dan pendekatan potensial. Bayangkan ini adalah modul pusat dari sistem yang ingin Anda skala.
Saya akan menggunakan Ruby untuk contoh implementasi sepele. Kode ini cukup sederhana: dapat dimengerti bahkan jika Anda tidak tahu Ruby.
3. Daftar
Kata benda yang didiskusikan:
- Pemula
- Coder
- (Peretas)
- Programmer
- Peneliti (ilmuwan komputer)
- Pengembang perangkat lunak
- Insinyur perangkat lunak
- Arsitek perangkat lunak
Jadi mari kita mulai.
Sabuk seni bela diri

Ketika saya tinggal di Italia di masa muda saya - sekitar 20 kilogram yang lalu - saya berlatih judo dan kung fu selama beberapa tahun. Kemudian saya belajar bahwa dalam banyak seni bela diri tingkat keterampilan sesuai dengan warna ikat pinggang. Biasanya warna berubah dari putih menjadi hitam, di mana tingkat pengalaman sesuai dengan kegelapan sabuk.
Seorang pemula memakai sabuk putih karena dia tidak memiliki pengalaman. Warna putih berarti "baru dan bersih." Saat Anda berlatih, ikat pinggang menjadi gelap, menunjukkan kemajuan. Warna merupakan kotoran yang terakumulasi dengan kerja keras dan keringat. Seorang seniman bela diri dengan pengalaman bertahun-tahun pada akhirnya mencapai sabuk hitam, yang berarti tingkat pengetahuan dan keterampilan yang tinggi.
Secara tradisional, ikat pinggang hanya hitam atau putih. Dalam beberapa dekade terakhir, lebih banyak bunga telah muncul. Saat ini berbagai sekolah seni bela diri menggunakan warna yang berbeda. Skema tergantung pada gaya, sekolah dan negara.
Mengapa kita berbicara tentang seni bela diri?
Warna sabuk digunakan untuk menggambar paralel antara keterampilan perangkat lunak dan keterampilan seni bela diri. Untuk melakukan ini, ambil skema warna yang umum digunakan di Eropa: putih, kuning, oranye, hijau, biru, coklat dan hitam.
Tabel berikut menunjukkan level pengembang yang saya bicarakan. Untuk masing-masing, warna ikat pinggang dan posisi, yang biasanya diberikan kepada spesialis di tingkat ini, ditampilkan:
Tingkat profesional | Level Seni Bela Diri (warna sabuk) | Contoh posting |
---|
Pemula | Putih | |
Peretas | Street Fighter (tanpa sabuk) | |
Coder | Kuning | Pengembang Junior (Jr.Dev) |
Programmer | Oranye | Pengembang perangkat lunak |
Peneliti (Ilmuwan Komputer) | Hijau | Pengembang Perangkat Lunak |
Pengembang perangkat lunak | Biru | Pengembang Perangkat Lunak Senior (Pengembang Perangkat Lunak Sr) |
Insinyur Perangkat Lunak | Coklat | Pengembang Utama (Pengembang Utama) |
Arsitek Perangkat Lunak | Hitam | Arsitek Perangkat Lunak |
Tingkat keterampilan teknik terkait dengan keterampilan teknis dan kerja tim. Judul posting adalah contoh bagaimana seseorang di level ini dipanggil dalam industri (ini sangat tergantung pada perusahaan dan wilayah).
Novice: White Belt

Anda harus mulai di suatu tempat, dan biasanya ini adalah tingkat "tidak ada pengalaman sama sekali". Seorang pemula dalam pengembangan perangkat lunak adalah seseorang yang baru saja mengenal pemrograman dan berada pada tahap awal pelatihan. Pemula masih tidak bisa dengan percaya diri memprogram dan tidak mengerti program sederhana, tanpa memeriksa buku, buku teks atau meminta saran dari teman yang berpengalaman.
Pemula dapat menulis kode kerja, tetapi seringkali tidak mengerti detail mengapa kode ini bekerja. Mereka menghabiskan banyak waktu mencari fragmen kode di StackOverflow atau situs sejenis dan menggabungkan fragmen-fragmen ini hingga sesuatu berfungsi.
Alat yang kuat bukan hanya keterampilan yang dapat diandalkan.
Untuk membuat hal-hal menjadi lebih membingungkan, banyak bahasa dan kerangka kerja βmodernβ memungkinkan siapa saja untuk menghasilkan struktur dan beberapa implementasi program yang kompleks tanpa memahami apa yang terjadi di balik layar. Misalnya, meluncurkan aplikasi Ruby on Rails sederhana dan menerima permintaan HTTP dapat diatur menggunakan beberapa perintah dari baris perintah.
Berikut cara melakukannya di * nix:
$ gem install rails
β¦
$ rails new website
β¦
$ cd website
$ bin/rails server
...
Selesai! Ini cukup bagi server untuk menanggapi permintaan HTTP dari browser. Jika Anda membandingkan dengan seni bela diri, maka ini adalah cara tampil di tatami dalam baju besi dan dengan senjata. Armor akan memungkinkan Anda untuk hidup sedikit lebih lama, dan dengan senjata Anda dapat memenangkan pertempuran. Tetapi kemenangan seperti itu tidak membuat Anda seorang seniman bela diri yang berkualitas. Alat-alat ini hanya memungkinkan Anda untuk melakukan sesuatu yang kompleks tanpa pelatihan dan upaya tradisional.
Jangan salah sangka. Alat-alat seperti Ruby on Rails memungkinkan Anda menyelesaikan sesuatu dengan cepat, dan itu sangat bagus. Bahkan, saya merasa fantastis untuk mengurangi waktu yang diperlukan untuk menulis kode standar awal. Ini adalah awal yang baik untuk proyek ini, tetapi cukup dengan sabuk putih saja.
Pertempuran sesungguhnya dimulai saat tutorial berakhir, di mana alat tidak dapat secara otomatis menghasilkan aplikasi yang Anda butuhkan. Untuk melanjutkan, Anda harus menjadi pembuat kode.
Contoh
Jika seorang pemula ingin menulis sebuah program yang merangkum serangkaian angka menggunakan Ruby, maka ia dapat mencari pertanyaan di Google dan menemukan
halaman seperti itu . Ini adalah hasil pertama Google pada saat penulisan ini. Pada halaman StackOverflow, jawaban paling produktif dengan 524 suara:
array.inject(0){|sum,x| sum + x }
Tentu saja berhasil. Berikut ini sebuah contoh:
$ irb 2.4.2 :001 > array=[1,2,3] => [1, 2, 3] 2.4.2 :002 > array.inject (0){|sum, x| sum + x } => 6
Ini mungkin berfungsi untuk pemula, tetapi ia tidak mengerti fitur-fitur kode ini. Seberapa mudah dibaca? Seberapa cepat dibandingkan dengan opsi lain? Apakah mudah dirawat? Mengapa ini berhasil? Apa yang sebenarnya terjadi ketika baris ini dieksekusi? Berapa banyak waktu CPU yang digunakan? Apakah
jumlah variabel dan
x didefinisikan setelah baris ini dieksekusi?
Pengembang Ruby pemula tidak tahu jawaban untuk sebagian besar pertanyaan ini.
Encoder: Yellow Belt

Encoder dapat, tanpa bantuan dari luar, mengumpulkan banyak baris kode komputer untuk menyelesaikan masalah sederhana. Hasilnya tidak akan sangat indah, tetapi pembuat enkode memahami mengapa program bekerja, dan berhasil menyelesaikan tugas.
Langkah pertama yang perlu
Saya menyebut blog saya CoderHood, karena semua orang yang mencari nafkah dengan memprogram di beberapa titik mencapai tingkat pembuat kode. Kata Coderhood mencerminkan kehidupan seorang pengembang di dunia teknologi, dimulai dengan sabuk kuning pertama.
Perbedaan utama antara pemula dan encoder adalah bahwa encoder dapat menulis kode dan memahaminya. Mereka mungkin tidak mengerti secara detail apa yang terjadi di balik layar, tetapi dia tahu mengapa dia menulis kode seperti itu.
Dalam industri ini, pembuat enkode biasanya diberi posisi seperti "pengembang junior" (pengembang junior) atau pekerja magang (pengembang dalam pelatihan).
Contoh
Saya pikir "Ruby encoder" akan dapat memunculkan sebagian besar metode berikut untuk menghitung jumlah array bilangan bulat dan memahami perbedaan di antara mereka:
$ irb 2.4.2 :001 > array=[1,2,3] => [1,2,3] 2.4.2 :002 > array.inject (0){|sum, x| sum + x } => 6 2.4.2 :003 > sum=0;array.each { |x| sum+= x } => 6 2.4.2 :004 > array. sum => 6 2.4.2 :005 > array.inject(0, :+) => 6 2.4.2 :006 > array.reduce(0, :+) => 6 2.4.2 :007 > eval array.join '+' => 6
Jika Anda tertarik, beberapa metode ini mengerikan, tetapi mereka berhasil.
Peretas: celana jeans tanpa sabuk

Saya memasukkan "hacker" ke dalam daftar karena saya ditanya tentangnya. Tapi itu tidak cocok untuk diskusi kita.
Bukan keterampilan utama
Saya tidak berpikir bahwa "peretasan" adalah keterampilan yang diperlukan dalam pengembangan pengembang perangkat lunak. Pengalaman semacam itu berguna untuk mempelajari cara menguji dan melindungi aplikasi dan sistem perangkat lunak, tetapi saya tidak melihat di sini deskripsi tentang "tingkat keterampilan" umum. Saya akan mengklasifikasikan ini sebagai bidang kegiatan tertentu, dan bukan tingkat keterampilan teknis. Padahal, tingkat keahlian seorang hacker bisa apa saja. Beberapa dari mereka luar biasa, sementara yang lain
tidak .
Karena peretasan bukan langkah penting dalam pengembangan pengembang, dengan analogi saya, seorang peretas tidak memiliki sabuk tradisional. Mereka lebih mirip pejuang jalanan yang mengenakan jins.
Beberapa dari mereka adalah penjahat jahat, yang lain berusaha untuk bertahan hidup, yang lain adalah orang baik yang melindungi sisanya, tetapi sebagian besar berada di antara keduanya.
Banyak jenis "peretas"
Ada banyak jenis peretas. Beberapa dapat memprogram, yang lain tidak. Arti kata tergantung pada konteks dan pada siapa yang menggunakannya. Beberapa definisi umum:
- Seorang ahli komputer yang menganut subkultur teknologi dan pemrograman.
- Seseorang yang dapat membahayakan keamanan komputer untuk tujuan jahat (topi hitam) atau penelitian (topi putih).
- Pengembang yang melakukan pekerjaan dengan cara tercepat dan paling kotor.
- Seseorang yang mempelajari, bereksperimen, atau menyelidiki sistem telekomunikasi, peralatan, dan sistem yang terhubung ke jaringan telepon. Peretas ini juga disebut phreaker.
- Seorang insinyur yang memenuhi syarat bekerja sangat dekat dengan perangkat keras untuk mendapatkan kontrol yang lebih baik dari sistem demi melakukan pekerjaan dengan baik (mis. Untuk memeras lebih banyak kinerja dari peralatan) atau untuk tujuan jahat (mis. Untuk menggunakan lubang keamanan dan mencari jalan di sekitar perlindungan ruang operasi sistem).
Beberapa contoh
Tipe 3
Peretas tipe 3 dapat memilih opsi ini untuk menjumlahkan array bilangan bulat:
$ irb
2.4.2: 001> 'echo "1 2 3" / bc'.to_i
=> 6
Metode ini berfungsi, setidaknya pada beberapa sistem, tetapi ini adalah ... "peretasan lengkap." Begitu juga peretas tidak terampil yang dapat memprogram. Mereka memecahkan masalah dengan cara yang meragukan, biasanya dengan menjalankan perintah baris perintah yang tidak dapat dibaca sampai mereka mendapatkan hasil yang diinginkan.
Tipe 5
Peretas tipe 5 bekerja pada level yang sangat rendah. Keterampilan ini tidak mudah diperoleh dan bisa sangat berharga jika Anda mencoba mengkonfigurasi perlindungan perangkat lunak atau membuat aplikasi dengan kinerja sangat tinggi. Saya tidak pernah menjadi "hacker", tetapi saya memprogram pada level rendah (C dan assembler) dan masih dalam hati saya menganggap diri saya seorang spesialis dalam pemrograman level rendah.
Peretas tipe 5 bisa menjadi pejuang jalanan yang fantastis, dengan keterampilan gila yang akan menyeka hidung banyak programmer profesional pada beberapa tugas khusus. "Peretas" semacam itu dapat menjumlahkan array bilangan bulat menggunakan assembler
seperti ini .
Programmer: sabuk oranye

Seorang programmer dapat menulis aplikasi yang berfungsi, memahami algoritma dasar dan mengetahui dasar-dasar ilmu komputer. Itu dapat membuat program bekerja, bahkan jika itu tidak terlalu skalabel dan didukung dalam jangka panjang. Sebagai aturan, seorang programmer bekerja dengan baik sendirian. Bukan fakta bahwa ia akan menjadi pemain tim yang baik.
Kebanyakan pengembang berhenti pada level ini, terutama jika mereka tidak berencana untuk mempelajari teori ilmu komputer. Pemrogram dapat menulis kode yang layak dan bekerja di industri perangkat lunak di tingkat itu sepanjang karier mereka.
Dari perspektif pekerjaan, programmer sering disebut sebagai "Pengembang Perangkat Lunak" atau "Insinyur Perangkat Lunak".
Dalam contoh sederhana dari jumlah array bilangan bulat, seorang programmer dapat menulis kode dengan cara ini:
Kode ini mengimplementasikan perintah baris perintah yang berguna untuk merangkum daftar angka. Jika Anda memanggilnya tanpa parameter, ini akan menampilkan pesan penggunaan yang bermanfaat. Jika tidak, cetak output standar. Ini adalah contoh penggunaan:
$./sum
Usage:
sum [ , ]
$ sum 1 2 3
6
Ini adalah "solusi lengkap", mendokumentasikan diri sendiri dan agak abstrak, karena program dapat dipanggil dari baris perintah.
Peneliti: Green Belt

Peneliti (ilmuwan komputer) mempelajari ilmu komputer baik di sekolah atau di tempat kerja. Dia memiliki pemahaman yang baik tentang konsep-konsep tersebut:
- Base Base-N (N = 2, 10, 16)
- Operasi biner
- Logika Boolean
- Kompleksitas algoritma dan notasi O-besar
- Struktur data (array, daftar tertaut, B-tree, pohon merah-hitam, antrian, tumpukan, tabel hash, heaps, set, grafik)
- Algoritma penyortiran dan kapan menggunakannya
- Pemahaman dasar kelengkapan NP
- Algoritme dasar multi-utas
- Manajemen memori dan pengumpulan sampah (hanya karena bahasa pemrograman Anda menangani manajemen memori itu sendiri tidak berarti Anda dapat melewati topik ini)
- Pointer (Anda harus setidaknya memahami konsep, bahkan jika Anda tidak kode dalam C) dan perbedaan antara melewati parameter dengan nilai atau referensi.
- Konsep OOP (antarmuka, warisan, konstruktor, destruktor, kelas, objek, abstraksi, enkapsulasi, polimorfisme, dll ...)
- Desain dan Template Berorientasi Objek
- Rekursi
- Beberapa konsep dasar tentang pemrograman dinamis, analisis serakah dan amortisasi, perbandingan string, dan algoritma aproksimasi
Peneliti memiliki gelar dalam Ilmu Komputer atau selama bertahun-tahun ia bekerja sebagai pengembang, mempelajari ilmu komputer terapan di tempat kerja. Seperti yang Anda ketahui,
saya tidak berpikir bahwa gelar CS diperlukan untuk karier pengembangan yang sukses .
Status belaka "ilmuwan komputer" tidak menjadikan Anda seorang programmer yang hebat. Di sini analogi dengan warna ikat pinggang tampaknya dilanggar. Tapi ini tidak benar. Pikirkan sisi ini: bahkan di dunia seni bela diri, ada spesialisasi. Beberapa sabuk hijau melakukan beberapa hal lebih baik daripada yang lain. Progresnya adalah nonlinier. Warna sabuk sering mewakili tingkat pengalaman dan jumlah tenaga yang dikeluarkan untuk menguasai seni bela diri, daripada tingkat keterampilan yang diperlukan dalam setiap aspek.
Ilmuwan mungkin akan menulis kode yang sama untuk jumlah angka sebagai programmer. Perbedaannya adalah bahwa ilmuwan dapat langsung mengatakan bahwa kompleksitas dari algoritma ini adalah O (n) waktu. Seperti yang telah disebutkan, ini adalah contoh dasar, tetapi Anda menangkap pemikiran itu.
Pengembang Perangkat Lunak: Blue Belt

Pengembang perangkat lunak dapat menangani proyek yang lebih besar dan lebih kompleks. Dibandingkan dengan seorang programmer dan peneliti, ia:
- Menulis kode yang lebih bersih, lebih terstruktur, dipelihara, didokumentasikan, dan dapat dibaca.
- Mengizinkan lebih sedikit kesalahan.
- Ini bekerja lebih cepat.
- Ia bekerja lebih baik sebagai tim dan memahami nilai proses pengembangan.
- Lebih baik menempatkan dan mengoptimalkan kemacetan dalam sistem kode dan perangkat lunak.
- Memiliki lebih banyak pengalaman.
Contoh
Dalam contoh sederhana dari jumlah bilangan bulat, pengembang perangkat lunak dapat memecahkan masalah dengan membuat layanan yang menyediakan API Web. Antarmuka mengambil satu set bilangan bulat dan mengembalikan jumlahnya.
Saya percaya bahwa aplikasi akan didokumentasikan dengan baik dan pengaturan dukungan, disertai dengan tes, memiliki struktur kode yang benar dan mudah dipelihara oleh pengembang lain.
Di Ruby, aplikasi utama menggunakan Sinatra mungkin terlihat seperti ini:
require 'sinatra' require "sinatra/config_file"
Pengembang perangkat lunak yang baik sangat menyadari banyak keterbatasan dari solusi ini dibandingkan dengan yang lain. Misalnya, terbatas pada jumlah set angka yang sesuai dengan URI; tidak ada pemeriksaan kesalahan eksplisit; garis harus dimulai dengan angka, dll.
Insinyur Perangkat Lunak: Brown Belt

Perbedaan antara pengembang perangkat lunak dan insinyur perangkat lunak sangat halus; Saya sepenuhnya mengakuinya. Istilah-istilah ini umumnya digunakan secara sinonim. Namun demikian, saya berasumsi bahwa insinyur perangkat lunak adalah spesialis dengan pengetahuan di bidang ilmu komputer dan pengalaman luas sebagai pengembang perangkat lunak. Perbedaan utama:
- Kemampuan untuk menciptakan sistem yang lebih skalabel.
- Umur panjang. Mereka bekerja lebih lama dan dengan lebih sedikit masalah.
- Lebih sedikit bug dan kualitas kode yang lebih baik.
- Kemampuan untuk bertindak sebagai manajer dan tim proyek teknis.
- Keterampilan kolaborasi dan komunikasi yang sangat baik.
- Pengetahuan arsitektur perangkat lunak yang memadai untuk melakukan pekerjaan itu.
Dalam perusahaan, pengembang tersebut dapat memiliki posisi "pengembang senior" atau "pengembang senior".
Contoh
Seorang insinyur perangkat lunak dapat menulis aplikasi sebagai pengembang dengan menciptakan layanan dan menyediakan API untuk mengambil satu set bilangan bulat. Tetapi saya percaya bahwa keputusan insinyur akan mencakup beberapa perbaikan:
- Hasil Caching.
- Abstraksi konsep dari penjumlahan ke ekspresi matematika apa pun dalam kueri.
- Logging, otentikasi, pelacakan kait, dll.
Contoh menjadi bodoh
Seperti yang Anda lihat, contoh terlalu sederhana pada tahap ini menjadi sedikit konyol. Itu datang ke diskusi tentang bagaimana meningkatkan solusi yang sudah berlebihan untuk masalah sepele.
Misalnya, mengelola cache dengan hasil operasi sederhana pada sejumlah kecil angka kemungkinan besar lebih sulit dan lebih lambat daripada perhitungan sederhana. Cache akan masuk akal jika array angka yang besar untuk diteruskan ke API, tetapi kemudian daftar tidak akan sesuai dengan permintaan URI.
Anda dapat memindahkan daftar nomor ke badan permintaan, tetapi kemudian itu tidak akan lagi menjadi RESTFUL API, dan permintaan tidak lagi akan di-cache. Pada titik ini, akan tergoda untuk mengubah permintaan ke POST, tetapi itu tidak akan pernah di-cache. Dalam kasus apa pun, diskusi dapat terus berlanjut.
Bagian kritis
Lihat apa yang sedang terjadi? Ketika keterampilan pengembang meningkat dan proyek menjadi lebih kompleks, hal yang lucu terjadi. Masalah semakin menjauh dari "kode inti." Sebaliknya, mereka semakin akan memproses konteks di mana kode utama bekerja.
Akibatnya, pengembang yang sangat memenuhi syarat menghabiskan sebagian besar waktu untuk memperbaiki aspek sistem seperti skalabilitas, kinerja, pengecekan kesalahan, keandalan, rawatan, abstraksi, portabilitas, pemrosesan kondisi batas, dll.
Selain itu, mereka akan belajar cara bekerja lebih efisien atau meningkatkan interaksi dengan pengembang lain dan cara mendekati pekerjaan untuk meminimalkan risiko, dll. Pengembangan perangkat lunak bergeser dari pengkodean ke sistem rekayasa dan penyelesaian masalah.
Arsitek Perangkat Lunak: Black Belt

Semua pengembang dan insinyur harus dapat merancang bagian-bagian sistem dan produk yang ingin mereka bangun. "Arsitek Perangkat Lunak" membawa keterampilan ini ke tingkat yang lebih tinggi dan membuat pilihan ketika merancang interaksi tingkat tinggi dari sistem perangkat lunak yang lebih besar yang dikembangkan oleh insinyur lain.
Contoh
Dalam contoh kami, antara lain, seorang arsitek dapat menggambar diagram seperti itu untuk mengarahkan pengembangan layanan untuk menjumlahkan bilangan bulat:

Untuk secara efektif menyelesaikan masalah seperti itu, seorang arsitek perangkat lunak membutuhkan pengalaman bertahun-tahun di semua tingkatan. Pengalaman praktis ini memasuki memori otot. Hal ini memungkinkan arsitek untuk membuat keputusan tingkat tinggi yang tepat tanpa berfokus pada detail.
Namun, saya tidak percaya pada arsitek murni, yaitu, insinyur yang membuat keputusan penuh waktu di tingkat tinggi. Saya pikir seorang arsitek yang andal harus turun ke tingkat rincian individu dan keluar dari sana bila perlu. Dia siap untuk secara teratur dan efektif menyelami kode.
Dalam seni bela diri, sabuk hitam adalah seorang guru dan mentor. Saya pikir pelatihan dan bimbingan juga merupakan tugas seorang arsitek perangkat lunak. Ajaran yang saya bicarakan tidak langsung (kuliah), tetapi lebih banyak dilakukan dengan contoh, menunjukkan jalan dan membimbing orang untuk membuat keputusan.
Kesimpulan
Pejuang yang serius mempelajari seni bela diri sepanjang hidup mereka; pengembang perangkat lunak yang serius melakukan hal yang sama. Saya harap diskusi ini bermanfaat. Saya harap ini memberikan konteks untuk beberapa istilah yang tidak didefinisikan dengan baik, dan idealnya membantu menjelaskan cara menggunakannya secara lebih akurat.