DEV Community

Princewhyte Dabotubo
Princewhyte Dabotubo

Posted on

How is Software Development difficult ?

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
github

thanks for reading

Top comments (12)

Collapse
 
nstvnsn profile image
Nathan Stevenson

I've heard a lot of testimonies from cloud users lol, especially the one with auto-scaling approved.

I don't know much about cloud services. Just some limited experience with GCloud and AWS.

Auto-scaling screams bankruptcy, to me. Know what you are doing and have deep pockets. Racked up 15$ in a couple days on a basic, bottom tier server I didnt event use for those 2 or 3 days. I had...I think it was called high-availability, enabled.

Can only imagine the cost of a service for +10,000 monthly users. Better have that seed money coming in 😂

Collapse
 
princewhyte2 profile image
Princewhyte Dabotubo

😆 🤣 that seed money

Collapse
 
phlash profile image
Phil Ashby

Well put, and a great practical approach to creating software things that are useful to others 👏.

Having come right through a career from ASM/C on MS-DOS in the 80s to system architect of a global corporate hybrid on-premise/multi-cloud infrastructure, I can assure you that your pragmatic approach is the right one 😄

I would caution against an emphasis on efficiency too soon in any development. First make it effective, then if the popularity grows, work on more efficient use of resources, when the funds are available to do so!

Final note on complexity and software engineering being 'hard' - in my experience this comes from two places:

  • The real world challenge is also hard (eg: medical diagnosis, global scale - Netflix)
  • People. Change. Their. Minds. Business plans change, mergers happen, CEO's come & go..

Keep at it my friend :)

Collapse
 
princewhyte2 profile image
Princewhyte Dabotubo

I wish I could sit next to you as a tell me more. Thanks

Collapse
 
tracygjg profile image
Tracy Gilmore

Much in the same vein as comments from Adam and Sadeedpv, you are only just at the start of your career. From Software Developer it is time to up your game and become a full Software Engineer. Yes you can write code and produce working software but that is far from the complete Software Development Life Cycle (SDLC). There is a lot more to learn including the fact, in software development, you never stop learning. There is always new skill to acquire and even some old techniques/technologies (like Functional Programming) to learn or learn from.
I wish you the very best in your journey and every success in your career.

Collapse
 
princewhyte2 profile image
Princewhyte Dabotubo

Thanks a lot for this

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

If you want to become a better developer, give up development and become a consultant for a while. I see what other companies developers do.. you would be surprised how your standards here are not being upheld by many let's put it that way. I will become a developer again one day, in the mean time I just do it on my own projects

Collapse
 
joelbonetr profile image
JoelBonetR 🥇 • Edited

I feel this topic very interesting and you got some good comments in here so I just want to release you from some burden, regarding this sentence:

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

It does not need to be the best approach most of the time, but any decision you take needs to be justified.

In the community we have hype and trends but those are not always mirrored to the business world. i.e. You can make a post talking about what you like most, praising a framework, lib, service or whatever. Claiming to use ALWAYS this tech, but your likenesses are not a valid reason in the business world and when they show up usually someone will loose money.

The exercise that needs to be done is as follows:
Do you plan to use thatSpecificTech? Ok, explain me, technically the reasons taking the nuances of it into account and the context we're in.

If you can't justify your choice over alternatives then your choice is probably wrong. This of course, needs a big picture understanding on the "state of the art" on a given platform/environment.

I write an overview about choosing the right technologies on a web development project that covers the flip side if you want to check it out to pick extra info 😄

Best regards

Collapse
 
sadeedpv profile image
Sadeedpv🥇

"That your code runs don't mean it's good enough"

That's a valuable lesson right there 👏. Software development involves solving problems efficiently until you reach an optimal solution.

Collapse
 
princewhyte2 profile image
Princewhyte Dabotubo

You are a wise fellow

Collapse
 
nstvnsn profile image
Nathan Stevenson

Hello, other Nathan. That sounds about right.

Collapse
 
siddharthsinghtanwar profile image
SiddharthSinghTanwar

A great article. I experience a lot of the similar emotions just with different technologies. These discussions help. Thanks.