A blog on Practical Software Engineering
[Nov 22, 2021]
I am a Senior Software Engineer at Amazon, with around 8 years of experience. I’ve worked in several companies, and spent over half of my career at Amazon. I am very passionate about software development, unit testing, integration testing, and producing high quality maintainable software. I learned a lot from Uncle Bob (Robert C. Martin). I’ve watched his talks and read his books - Clean Code, Clean Architecture, Clean Coder to name a few. I’ve constantly applied the learnings to my job, and I have been able to see the difference. One of his quotes that I like, that many people fail to apply, is that “The only way to move fast is to move well”. I think it is not well understood because people haven’t experienced the freedom and the ease of making changes that comes, when software is done with quality – constructed and well tested with disciplines applied. It is like the heaven of software engineering, the promised land of eternal euphoria.
I am passionate about all areas of producing high quality software. I have been wanting to write a book about my learnings but whenever I start one, the finish line seems too far. I also cannot decide on a single focus topic for the book. So I've decided to make a blog about short focussed topics. The theme will be around practical and maintainable software engineering.
Having mentored junior engineers, and observed senior engineers across the industry, I noticed that knowledge about the discipline is not so common. Engineers straight out of college require a lot of guidance I have also noticed that good quality material on practical software engineering is relatively sparse. Uncle bob mentioned in one of his talks that the number of software engineers doubles every five years. This means at any given point in time, half the number of software engineers have less than five years of experience. It is important that every engineer is equipped with knowledge to produce high quality software. To name a few reasons: First, these systems impact customers and businesses, the software behind an airplane or car brakes to better be solid. Second, these systems will continue to be maintained and get new features, the business would want this process to be smooth and not regress the existing features, which is only possible if the software is built to be maintainable. Third, as software engineers get more experience, other junior engineers will lookup to them and be mentored by them, they better be disciplined professionals to look up to.