Skip to main content

One step at a time

ยท 4 min read
Zsolt Zabolai
Software Engineer | Co-Founder @ BuggyDevs

Welcome to the BuggyDevs blog! Let's start with a short fictional story about software engineering! ๐Ÿ˜€

Nobody can write softwareโ€‹

This may sound unusual coming from a software engineer, but hear me out.

Imagine this: You start your first job as a programmer in a company. One day a client comes your way and asks you "Can you build a website for me? It should do just what Instagram does. But a bit different."
You're young and ambitions at this point. And then you tell them "Of course. It can be done!"

At first, everything goes well... but in time things slow down, maybe even come to a standstill... The project is not finished on time and quickly burns through all of its initial budget.
At that point, the client is not happy with the progress. They are losing money, and after a while, they stop the project...

Your first project ends as a complete failure. It's not really your fault, but not the client's either. So, where did it go wrong?

Welcome to Software Engineeringโ€‹

When learning programming, to practice, you usually get a series of tasks. These are relatively small and can be solved in a measurable amount of time.
Then at your first job, that is exactly how you approach problem-solving in the beginning.

But there's a big difference. The project mentioned is very complex. The complexity isn't even clear at first.
It seems to be a site with posts, pictures, and comments. Doesn't sound like a big deal. Then you realize that each post can have reactions. Each comment, too. The site has to be responsive. It has to load even on a mobile phone with a slow and flaky connection. Ah, and there's also messaging built in, user accounts, authentication, ads, etc. There's a lot of complexity involved.

All of this complexity slows you down and creates additional work. The more code you create, the more bugs are introduced, which increases the time spent on testing and bug fixing.
Additional developers are added to the project to finish it on time, but instead of going faster, everything slows down even more! With more people involved, communication becomes harder, and you find yourself in a loop of endless meetings, wondering when you will actually write the code!?

The example above might seem a bit unrealistic, but it's exactly how software projects work! Welcome to Software Engineering! ๐Ÿ™‚

One step at a timeโ€‹

The truth is that nobody can write a big software project like that. Not alone. Not at once.

The only way to write software is: One step at a time.

We split the project into multiple smaller parts. Then we split these smaller parts into even smaller parts. Repeat until we have small tasks that can be done easily.
Divide and conquer!

You usually work on a small portion of the software. It could be a small button or just a function. Something small, manageable, and understandable.
On bigger projects, multiple teams can get their own parts assigned. Each team splits their part into small tasks.
The results of these small tasks add up and make the complex software you wanted to build in the first place.

Essentially, developing software is the same as eating an elephant. And we know how to do that!

How do you eat an elephant?
One bite at a time!

BuggyDevs Blogโ€‹

Learning to develop software is similar to actually developing software. You can't learn to write an Instagram clone at first. Your first program will most likely just print out a message like "Hello World!".
Maybe your second program will actually read some input from a keyboard... and your 100th program might even display an image.

Learning is a process. Done one small step at a time.

After 12 years of experience in software development, we decided to open the BuggyDevs blog!
The purpose of the blog is to share our experiences, to talk about different issues and different solutions in software engineering.
The content might include step-by-step tutorials, random ramblings, or specific issues and potential solutions.

Hopefully, by sharing our experiences, we can help others avoid mistakes that we have made in the past.
The focus will be on technical aspects, such as code and software architecture, but some content might talk about other aspects too, such as project management, or even about the people involved... because devs can be buggy too!

BuggyDevs is a big project for us, so we're going to take the same approach as with software development:
One step at a time!