
Keyboard First Reflex
In this blog, I want to share the importance of software design and how to avoid the Keyboard First Reflex!
Recently I started learning about Blockchain and cryptocurrencies. After absorbing some of that information, I decided to go ahead and start creating my cryptocurrency. Without any kind of plan or any kind of design, I quickly used the keyboard to try and code something!
Now, this is not the right way to approach a problem. Why not?
Software Design Importance
You see, after working for many years as a Software developer, I have realized that the best way to approach a problem is to design. So, the moment I started writing out the contract code, I started to think “Wait a minute, what am I doing here? Where’s my design?” So, I’m still learning and practicing that. So I’m not trying to build an industrial-grade application. I’m not trying to build a cryptocurrency.
But it’s just something that reminded me of when I went through a little bit of a struggle. And I’m like “Wait a minute, this is not how you’re supposed to design software”. You’re supposed to go to the piece of paper, first. To begin solving the problem, you need to take a step back and learn about the software’s overall design, understand the problem’s complexity, and finally devise a solution.
Let’s say you’re coming up with an idea for an app that you want to build. If you’re a junior-level developer, I advise you that don’t just go directly to the keyboard. I see so many people who fall into this trap and become a victim. Especially newcomers in software development often get into this trouble when they don’t try to implement a design that they have in their minds for the particular software. They will react to a problem like “All right, let’s create the first class.” and “Now how shall I create these objects?” The result is a terrible solution with the least efficient design, which you end up figuring out and churning your way through.
Now, the issue is that they can’t figure out where to even get started. So, here’s what you need to do. Step back, analyze your problem then try to visualize the big picture. Now, grab a piece of paper and pen, then draw out the result which will be the design of the software. So, design the path for yourself on how to get to that result.
Now, let me walk you through the process of thinking about creating a design properly. To help you understand this I will take a real-world analogy that everyone, even people that don’t have software development experience can relate to. And this is the approach senior software developers use in building software as well.
Puzzle Game analogy
The analogy is to consider the software as a puzzle game. You know, the type of game where you put together pieces to form an image given in the puzzle game. So, in the beginning, you start with this image of the puzzle that you are trying to build. As you can see over here, you have to draw out the user interfaces, components, and how they should work together on a piece of paper. And this image is the idea of the software design.
Once you have an image of a puzzle, what you do is finish the boundaries of the puzzle first, right? Now, these boundaries are the templates of the software, where you create the boilerplate code for the front-end, back-end, and databases and then keep them connected. So, when you create these templates for the software you are covering the edge cases of the software.
So, when you have an image of the puzzle and completed the boundaries, you are mind will think “Okay there are a bunch of trees in this part of the image” or “There are boats and buildings in this part of the image”. You will now start to think about the small images inside the big puzzle, right? Now, this is how you narrow down a problem while building software. You are using the divide and conquer strategy where you are breaking down the big puzzle into smaller digestible chunks.
These small images are nothing but the software components which is responsible for a particular service. It can be a user interface, a middleware component, or a microservice of the software you are trying to build. Hence, you take care of these software components one by one by implementing them inside your boundaries, the boilerplate templates, and finally, you finish the software build.
Now, to achieve this, you can make use of common Design patterns and UML diagrams. These are ways to implement a design, design good constructs and good software objects, and so on. Using a piece of paper and a pencil is a good way to start writing good software, isn’t it?
While you are building such software architecture make sure you follow this principle: “the simplest explanation is usually the best one”. I like to keep things simple. In my opinion, simplicity is the ultimate sophistication. It is the ultimate beauty.
So, when you start to build software, especially, for those of you that are newcomers, don’t jump to the keyboard! That’s a default reflex of most programmers. You may just want to get to code quickly but stay away from that. Most of the designing and most of the coding are done up in the mind first. So give it that time. Let your ideas grow in the garden of your mind on their own. Then continue to plan it out using a piece of paper and a pen.
YouTube Video
Resources
- Join Job Ready Programmer Courses and gain mastery in Data Analytics & Software Development.
- Access our free Programming Guide (PDF) to explore our comprehensive Job Ready Curriculum today!

Can you become a Software Developer? To answer this question, let me bust some myths you might have about a career in Software Development. Need for a college degree To begin with, do you need a college degree? Absolutely. It doesn’t have to be in computer science or information technology. It could also be anything […]

So are you too old to get into software development? I can’t tell you the number of times I get asked this question. People are asking all the time. I’m 30 years old is it too late for me to get into software development? I mean come on! Age is not a limit If you’re […]

In this blog, I will talk about what’s the fastest way to get a salary boost. Let’s say you’re a software developer or anyone in tech and you want to boost to 200 to 250%, it’s possible to achieve. How do you do that? Newbie Noob technique I have a technique that I’ve coined and […]