In this post, I will share my experience of working as a consulting solutions architect and a mentor on Go programming language and distributed systems architectures, in India, and I will also share some of my recommendations based on my experience, when you adopt Go in your organisations.

I am an early adopter of Go, and authored two books on it, in 2015 and in 2016. Before Go, I worked extensively on Microsoft .net stack for more than a decade, and since 2008, I have been working as an Architect. When I left from .net technologies and moved to Go, I was a Microsoft MVP and an Azure insider. Since 2015, I have been working as a consulting solutions architect and a trainer to mentor companies to adopt Go in their organisations and to projects and products. During this period, I have mentored more than 50 companies, which includes start-up companies on product engineering, mid-sized companies and larger organisations. …


I have been working as a consultant and trainer on Go programming language and distributed systems architectures, in India, and guided a lot of software development teams to adopt Go for building their systems. I have worked with product engineering start-ups, mid-size organisations and larger enterprises. Except working with some larger enterprises (not with everyone, but majority of times), the adoption path to Go has been very pleasant experience. …


A lot of younger software engineers have been approaching me for taking my advice to become good software developers. My recommendations are very simple: The problems with many of the younger generations of software engineers are that they emphasize more into learning programming languages and frameworks, and excited to learning new technologies, but not focusing on basic programming fundamentals for writing good, maintainable code. Learning a new language doesn’t make you a great programmer.

Programming languages are just providing a mechanism to write code by using its grammar and semantics. Even by using a good programming language, you can write very bad code if you don’t have knowledge. I’ve seen that people use modern programming languages and finally writing bad code with it. So a language doesn’t make you a better programmer, but it does make sense when you incorporate good software engineering principles with your choice of programming language. I highly recommend starting with learning SOLID principles to become a good developer. You can start applying SOLID principles from functions to class level, then move to module/package level, component level, and finally at architecture level to design highly cohesive components for building distributed systems at scale. SOLID principles are basics for building great software systems based on clean architecture. When you start to write code by using good software engineering principles, you will become great developers regardless of which programming language you’re using. Once you’re good on core fundamentals, then explore various programming paradigms such as functional programming, concurrent programming, etc. Once you become a good developer, then you can learn anything independently. When you learn a new programming language or something else, you may feel that this language/technology is an an evolution of something which you have learned in the past. But if you don’t have basics, and then learning a new programming language, you may simply learn some syntax of that language, which will never transform you as a good developer. …

About

Shiju Varghese

Consulting Solutions Architect and Trainer on Go and Distributed Systems, with focus on Microservices and Event-Driven Architectures. Author of two books on Go.

Get the Medium app