Hey! I’m a self-taught software developer and in this article I’m going to fill you in on what is I do as a software developer. The reason I want to do this is because there’s a lot of people getting into the field who have some misconceptions about what software developers do.
Some people think that we’re riding unicorns around typing on computers, creating applications from scratch. Or we’re at a ping-pong table playing ping pong and occasionally writing code and just having beer at work.
That has not been my experience. So I just want to give a clarification about what it actually is from my perspective and hopefully you can get a better sense of what it actually entails.
In this blog I help people start a career in software development. So if are looking to get started in a career that you love, that you’re passionate about and one you could be doing creative and fulfilling work, then I high recommend you check in from time to time.
Without further ado let’s get into what it is exactly I do. Basically it boils down to five most consistent things I sort of do on a daily, weekly and monthly basis. Let’s go through each one of them.
Building a Feature
So number one is I’m building a new feature. This is like the best part of software development. For example, let’s say am building a new feature for Twitter to enable users to poke each other. In my experience as a software developer, building features in some of the applications that I have worked on is pretty intensive process.
Because I’m a full-stack developer it means I have to build a new feature I’m tasked with, figuring out all the way from the database side. I have to figure out what new tables I have to write, what relationship those tables have to other tables, server side code, how the site code need to change.
I also need to figure out if there’s any existing code that I need to understand for the new feature to be added to that code.
I have to also add API endpoints to retrieve that data or create data and then I have to go into the user interface or client-side or front-end and I have to figure out how to write the code to make the nice pretty notification pop up when the poke happens. Or a button to poke someone else.
As you can see the process of building a new feature is very intensive. It’s also a lot of fun at smaller companies like I’ve worked at because I’m doing everything.
I don’t just focus on front-end or back-end. I have to do everything. This is so much fun because you get to understand how the current code base works, you get to potentially refactor code to make sure that it works. That way you can implement the new code you have.
It’s a lot of fun but it’s not the only thing you’re going to be doing because applications aren’t constantly changing. A lot of applications out there are pretty static, meaning they’re not really adding a lot of new features.
Any application of any size is going to have bugs of some sort. Even while tested, code is going to have a certain amount of bugs. There’s always a list of bugs and there’s certain priorities on those bugs.
So as a developer you’re going to have to go through the list of bugs at times or you’re going to be assigned certain bugs that you have to fix. Bugs are not straightforward, a bug is a bug. A bug could be as simple as one line of code that need to be changed.
It could be another bug that you can’t even figure out if it is an actual bug. At times you have to figure out how to reliably reproduce that bug. In that case you have to do a lot of research including setting up the system in your local environment or even in production mode to try and figure out how this bug if it actually exists and in what condition it is.
It’s a lot of freaking work just trying to figure out even one simple bug. I’ll be totally honest with you but it is part of life. I think the upside of working with bugs or fixing bugs is that it can be impetus to refactor code.
If I find a bug I know for sure the code is poorly written. So I take the time out to refactor the code. By refactoring I basically restructure or reorganize or rewriting it from scratch to make it more maintainable and more readable.
That way somebody later on can make the system a little more efficient. Fixing bugs is a significant part of your life as a software developer.
The next thing is continued research, continued development and generally learning as a software developer. In this field you’ve to constantly learn new things coming out and frameworks. At times you have to even revisit old principles you learned in computer science that you already knew before but you have sort of forgotten.
So part of my job is either doing research because I’m building a new feature or fixing a bug. Other times I have to learn a new framework or learn some new technology that I’ve heard a lot about. It could also be because I got nothing else to do so I take on some new cool stuff.
Continued research and learning is a big part of what I do. It plays a significant amount of time to spend doing it.
Generally I’ll be in some sort of communication, meaning I’ll either be in a meeting. Maybe there’s a developer meeting or maybe different departments are meeting. So being part of it is important to realize if there are new requirements to be met or some sort of changes to be made.
However, in any big company, meetings are not always productive so you’re going to be stuck in some meeting, sometimes where it’s like do I really need to be here while I could be writing some code!
Other times I could be communicating with the project manager or business analyst trying to figure out some issues. I could be asking another developer questions whenever am doubting whether the code I wrote if it’s efficient.
You could also be helping out a junior developer. A lot of your job will be in some form of communication. You’ll not just be coding the entire time.
Fixing Production Issues
A production issue is not a bug. A bug is something that can be fixed in a few days or a few weeks. A production issue is something that’s affecting the system causing major problems either the system-wide or causing outage of some sort.
These issues need to be fixed asap as they could be damaging user experience. Since I work at a small company when something goes wrong I have to figure out what the problem is, fix it, and redeploy the application.
The ease of deploying an application depends on how the system is made. More complicated applications are more clunky and may require the entire system to go out. So just know it’s not this easy process where you just deploy.
So fixing production issues is a major role of a software developer.
I really hope this gives you a better sense of what life is been like for me as a software developer and what to expect in your career. It’s not just about building new features, there’s definitely some non exciting parts but overall it’s great to be a software developer.
And I highly recommend it if you’re trying to get into the field.