Every google search you do on the term “Software Development”, you’ll see a trillion other results popping up and defining it. But, what does it really mean? Is it just sitting for hours and programming? Is it creating a software like Adobe Photoshop by yourself? How does it work?
Don’t worry, I’ll define it for you in an easy-to-understand format :)
Well before we proceed further, let’s see a formal definition of “Software Development”. For this example, let’s pull it from Wikipedia:
“Software development is a process of writing and maintaining the source code, but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process.”
That is a very well defined description but could we simplify and add more to this? YES TOTALLY!
The way I think of Software Development is thinking of a software as a “baby” and how developers develop and “take care” of it. Let’s be more specific.
Think of it as being the lifecycle of a product from birth (code, planning) to being mature or finalized (finished product). For example, let’s take…Software A. First the development team plans the product, then analyzes (user interviews etc.), then designs, and then finally implements (programming) Software A. After implementation and testing the team finally deploys or establishes the software to the users. Like we said earlier we have to take care of the baby! So developers continue to maintain the code and always work around to simplify it (e.g. make it shorter). This is what we call as Software Development Life Cycle or SDLC.
As this article is not specific to SDLC, we won’t go into that here but hopefully that cleared some doubts in your mind!
Now that I’ve explained the gist, you might be thinking that it’s all about writing programs and a LOT of cool but hard to understand terminology. Fear no more as here comes the cool part.
“Software Development is the process of developing a product, working with a dynamic team, understanding the users and developing a product to solve or reduce the threat of a problem.”
What I’m trying to say is that IT IS MORE THAN JUST WRITING CODE!
It is communication. It is planning. It is interacting. It is visualizing a solution.
Although it can be done individually, it is crucial to note that it is a TEAM EFFORT. Systems design, source control, testing, analysis are all VERY important tasks that requires a strong team. In fact, practical implementation of code with a group of supportive and enthusiastic individuals can teach you more than maybe an online course or even school!
I think this is a great time to shed light on my time as a Software Developer Intern.
Before my internship, I simply thought Software Development was writing one Java or Python program that ran all the important parts of a given software. For example, one program that had a password detection engine, facial recognition software etc.
Well, let’s just say that I was VERY wrong.
The internship introduced me to all the technical elements such as Python, geospatial libraries, source control, GPS signal handling, REST APIs, Django and more cool concepts/technologies, BUT that wasn’t the best part of the internship at all!
The best part was the ability to cooperate as a team, bounce ideas, see what fits and what doesn't, think of how we could aim to improve our current methods and ultimately solving the PAIN of our users.
What I’m coming at is that Software Development is more than just writing code. It’s critical thinking, teamwork, collaboration, analysis, design, support and LOADS of communication.
Hopefully I was able to shine some light on the other side to the world of Software Development with this article. If my work was helpful, please follow me for more articles and feel free to comment your thoughts on this one!
I want to finally end off by providing some useful links for current and aspiring Software Developers. Please use this to give you a head-start and DO NOT simply rely on these links.