How is Software Development difficult ?
Tags: webdev, beginners, discuss, productivity
Published: 2022-07-06 14:38:26

I've learned HTML and CSS, I've built a landing page, I've gone on to learn Javascript, and now I'm building amazing things.

Oh there's a new framework in town it's React that's not an issue, I've learned that as well.
Now I've built a to-do application. I'm on fire.

I don't need to learn a new language, javascript runs on the server side too, welcome Node.js. I've learned to use the express framework. Now I've built a Url shortener.

I've gone on the learn some concepts. I'm using sockets now. I'm a genius. I've built a chat application and an e-commerce app that's running on Heroku. I should be good enough to work at Facebook and Amazon now right?

Now the interview comes and I'm hearing things like Algorithms, data structures, design patterns, system designs, performance optimization, what's the event loop, and bubbling?  have you worked on micro-services architecture? 

Wait a minute I'm lost now. But I've been building stuff. where's all this frightening stuff coming from ?. 

so maybe it's time I change the question to **_why is software development difficult?_**

Here's my take. I've not been into software development for a very long time but I can boldly say 

> that your code runs doesn't mean it's good enough.

To be honest, after writing code there's one question in my head. Is this the best approach?

one thing I have discovered in software development is that we ain't just writing codes to solve a problem but we are writing codes to solve a problem while managing available resources.

If you've worked with a low-level language like C you'll surely understand the danger of not freeing up memory right? I can barely remember anything about C (lol) let's continue.

When it has come to managing resources you and I know that it ain't always gonna be easy. Think of it as someone in marriage. You have to make a lot of decisions based on situations while paying great attention to what you can afford.

What's the best school for my kids that I can afford? , should we have another child? , Do I need to get more groceries? ,  do we need to pay bills for this service? , are my family members happy? , how do I make a decision that's suitable for all parties. sounds crazy and terrifying right?

Wait let's go back to software now lol.
As a software developer, you don't just write code. You write code efficiently to get the best out of available resources.
A bad piece of code let's say a bug here can cause an organization needless expenses. 
I've heard a lot of testimonies from cloud users lol, especially the one with auto-scaling approved. Honestly, I sometimes revert to using the traditional shared hosting option.

We are constantly asking ourselves questions, why should I make three calls to get this information? can't it happen in just one call? will it slow the response time? , should I be using this framework for this solution? , How can we get the best performance from our server while going for what we can afford? , why don't we break the application into the smaller piece so we can Identify areas to scale while leaving the rest( this way we can save cost). Should we go with a PWA rather than a mobile application?
Are there funds to hire platform-specific developers or should we go with cross platforms?

Wait a minute, how did we go from a simple landing page to all of these?
Welcome to software development the bigger picture. Is that why these guys say a software engineer is different from a developer? well, I don't know let's leave that for the experts to answer.

Do I have to learn all these things before I can say I'm a software developer? NO.
I understand all these concepts can be frightening and intimidating but that's the beauty of development, we wake up and learn new things. We'll not learn all these things in six months (do not fall for all those cheap adverts) but maybe in 10 years, we  
can say we've covered and understood some great concepts.

Don't give up, celebrate your landing page, be proud of yourself, share your progress with others, give tutorials, and write an article but always remember there's still a whole lot for you to learn. Keep challenging yourself and keep growing.

what's software development like for you?

you can connect with me on [linkedin ](https://www.linkedin.com/in/princewhyte2)
[github ](https://github.com/princewhyte2)

thanks for reading