Why Are Programming Concepts So Important?
IT Tips & Insights: A Softensity Software Engineer discusses the importance of mastering basic programming concepts, upon which everything else is built.
By Gabriel Cordeiro, Software Engineer
It’s been a few years since I first heard about clean architecture. I remember how I felt when I saw it in a project using Net Core. Afterward, I saw Microsoft recommend it for web applications (you can find it here: Common web application architectures | Microsoft Docs).
What an amazing idea this architecture is! I then created a few POCs. I’ve worked on different projects and different architectures and studied design patterns, microservices, cloud, and many other technologies. Last but not least, this year I started to read a famous book called “Clean Architecture” by the legendary Robert C. Martin, aka Uncle Bob.
I was so excited when I bought this book. When the Amazon package arrived at my house I started to leaf through the book. I’m now on chapter 14 and haven’t read anything about clean architecture. This article’s main idea is that you can’t use good architecture without knowing the basic concepts.
Learn the Basics
Have you ever heard about programming concepts? Solid or Design patterns? Maybe you don’t know it, or at least you don’t know what a programming concept is. You probably know what Singleton is as well as Dependency Injection, and perhaps Factory. Those Design patterns are pretty popular and I’ve seen many developers that know how to implement them, however, they don’t know what it is and why it’s so important for your career as a Software Developer/Engineer.
In his book, Robert C. Martin makes sure to talk about concepts and everything you need to know before talking about software architecture. He wrote many pages about SOLID — one chapter for each letter. Afterward, he wrote about components and how we should create them.
“If the SOLID principles tell us how to arrange the bricks into walls and rooms, then the component principles tell us how to arrange the rooms into buildings. Large software systems, like large buildings, are built out of smaller components.”
― Robert C. Martin, “Clean Architecture”
Programming Concepts are the Building Blocks
Going back to the idea of this article, all developers should learn programming concepts. I’ve seen two edge cases, both pretty common, in different projects I’ve worked on. The first one is a project where there is no knowledge of concepts, no architecture, just code to create features and deliver as soon as possible. As you might imagine, many hours are wasted fixing bugs or changing components of the project.
The other case is a project using new architecture like clean architecture, Onion, or CQRS, but the code itself is not very well written. There are many functions with more than 50 lines (sometimes 300 lines), no design patterns, and no OOP applied (or at least not very well applied).
Basically, we should do the basics first — well-written code, small functions, OOP correctly applied, abstractions applied correctly, components, design patterns, and only after all this — architecture. But why? Because, you can’t build a building without bricks, just like you can’t have good architecture without good code.
“The goal of software architecture is to minimize the human resources required to build and maintain the required system.”
― Robert C. Martin, Clean Architecture
If you spend hours trying to understand a function or a class, you did it wrong. In part 2 of this article, I’ll write about SOLID and how we can use it to prepare our code for the steps ahead.
Hey there, I’m Gabriel. I’m 25 years old and I’ve been a software engineer for almost 8 years. Currently, I’m a Senior Software Developer at Softensity. Most of my experience has been coding with C# from Microsoft, and I’ve learned a lot of cool things in this amazing language, so I thought I’d share some tips, both for C#, and programming in general.