What must we have as a Software Architect

Rony Setyawan
DOKU Insight
Published in
3 min readApr 1, 2024

Software Architect adalah sebuah profesi yang terbilang kurang populer.

Tapi, kebutuhan akan Software Architect ini menjadi sangat penting dalam pengembangan sebuah software/aplikasi, terlebih lagi untuk yang skala Enterprise.

Di kebanyakan perusahaan, Software Architect sendiri biasanya akan sekaligus berperan sebagai orang yang bertanggung jawab atas seluruh perencanaan dan desain dalam pengembangan sebuah software/aplikasi, termasuk juga memahami kebutuhan bisnis yang ada di dalam project tersebut.

Jadi, itu semua mengakibatkan konsekwensi bahwa menjadi Software Architect yang baik memerlukan kombinasi keahlian teknis, soft skill, dan pemahaman mendalam tentang kebutuhan bisnis dan kendala teknis suatu project.

Berikut adalah uraian detail mengenai keahlian apa saja yang harus dimiliki oleh seorang Software Architect.

➡ Technical Capability: Mampu menguasai banyak bahasa pemrograman, framework, dan teknologi yang relevan. Selalu dapat mengikuti perkembangan terkini dan praktik terbaik dalam pengembangan sebuah perangkat lunak. Memahami berbagai Architecture Styles, seperti Microservices, Monolith, Serverless, dan lain-lain. Akhirnya tentu dapat mengetahui kapan harus menerapkan masing-masing Architecture Style tersebut.

➡ Problem Solving and Analysis: Keterangan problem solving yang kuat untuk mengatasi tantangan teknis yang kompleks. Terlebih lagi memang biasanya seorang Software Architect akan dituntut sekaligus dianggap mempunyai wawasan yang luas dan dalam sehingga punya banyak teknik, strategi, atau mekanisme dalam mengatasi sebuah masalah teknis di dalam pengembangan sebuah project. Kemampuan Analisis ini akan menyeluruh untuk memastikan bahwa arsitektur memenuhi kebutuhan fungsional dan non-fungsional.

➡ Communication: Komunikasi yang efektif sangat penting bagi seorang Software Architect karena harus mampu mengartikulasikan konsep teknis kepada berbagai pemangku kepentingan, termasuk pemangku kepentingan non-teknis. Dengarkan secara aktif untuk memahami requirements, concerns, dan feedbacks dari anggota tim dan pemangku kepentingan.

➡ Leadership and Collaboration: Berperan juga secara aktif dengan memberi contoh dan menginspirasi anggota tim untuk dapat menunjukkan dan mengembangkan potensi masing-masing di level yang tertinggi. Selalu mengusung kolaborasi yang terkait dengan sebuah pengembangan, dan selalu mampu membuat culture di mana anggota tim merasa diberdayakan untuk menyumbangkan ide atau feedback. Berkolaborasi erat dengan developer, tester, project manager, dan stakeholder lainnya untuk memastikan keselarasan dan dukungan terhadap keputusan arsitektur.

➡ Business Understanding: Mampu memiliki pemahaman mendalam tentang domain bisnis dan tujuan yang mendorong project yang ingin dibuat. Menyelaraskan keputusan teknis dengan tujuan bisnis untuk memastikan bahwa arsitektur mendukung tujuan strategis organisasi / perusahaan.

➡ Risk Management: Identifikasi potensi risiko di awal proyek dan rancang strategi untuk memitigasinya. Seimbangkan trade-off antara pendekatan arsitektur yang berbeda, dengan mempertimbangkan faktor-faktor seperti performance, scalability, security, dan maintenance.

➡Continuous Learning: Arsitektur perangkat lunak atau teknologi adalah bidang yang terus berkembang, jadi seorang Software Architect harus berkomitmen untuk terus belajar dan mengikuti perkembangan yang ada. Tidak lepas juga untuk dapat melakukan evaluasi terhadap project masa lalu untuk dijadikan bahan pembelajaran dan area yang perlu ditingkatkan dalam arsitektur masa depan.

➡ Design Principle & Documentation: Mampu membuat dokumentasi terkait dengan keputusan arsitektur, design pattern, dan alasan di baliknya untuk memastikan kejelasan dan pemeliharaan. Terapkan design pattern seperti SOLID, DRY (Don’t Repeat Yourself), dan KISS (Keep It Simple, Stupid) untuk menciptakan arsitektur yang measureable dan maintainable.

➡ Flexibility & Adaptability: Bersikap fleksibel dan mudah beradaptasi terhadap perubahan persyaratan, teknologi, dan kendala project. Menerima masukan dan bersedia mengulangi arsitektur seiring pengembangan sebuah project.

➡ Ethical Consideration: Dapat melakukan keputusan dan bertanggung jawab atas seluruh implikasi keputusan arsitektur yang diambil. Sebagai contoh seperti keputusan yang terkait privacy, security, dan data integrity. Selalu menekankan standar yang tinggi dalam mendorong penggunaan teknologi dalam organisasi atau perusahaan.

#softwarearchitect #solutionsarchitect #howtobeasoftwarearchitect #solutionsguy #doku

--

--

Rony Setyawan
DOKU Insight

I am just someone who loves everything about technology, and it has become my love, my passion, and my daily job