What it’s like to be a Software Engineer
A short story exposing the nature of software engineering
I have been working as a professional software engineer for just around 4 years as I write this article. I love it. There are always new challenges and technologies which really keep me on my toes. Going through university I had this grand idea of what being a software engineer would be like. My vision involved sitting at a whiteboard solving difficult algorithm problems while sipping coffee with my peers. While that may be the case sometimes, here is a story to show what software engineering is really like.
3 Months to Add Nickname
For the last three months I have been working on a project for our business. I was asked to add a nickname feature to our software. Makes enough sense. Much of what we do involves interacting with our customers and many people use nicknames instead of their real names. For example, someone named Robert may go by Bob. We want to make sure we call him Bob but if we charge his card we need to keep Robert on file because that is his legal name.
Here is the break out of how something as little as adding a nickname turned into a three month project.
Phase 1 — Database updates
The first step was to ensure our databases had the field required in order to be able to store a nickname. I had to do a bit of research here to find the places that first name was being held as we would likely need to add nickname there. Turns out there were several databases and tables with first name. After narrowing down which databases and tables had the first name field I then had to ask which really needed nickname?
One of the tables used for data imports had the first name field. I then had to reach out to those responsible for providing that data and asked if it even makes sense for them to add nick name field on their forms. After a little back and forth we decided that it didn’t make sense to do so.
After, talking to all the people who might write to the field I submitted the RFC (request for change) ticket to our database admins. Within a day they turned around and asked me if I had talked with the data analytics team about how this would effect their workflow and if I had looked to see if adding any this would effect any stored procedures they had in place. Needless to say, I had not.
I worked with the DBA’s (database admins) and analytics team for another week to ensure the field work was safe for their workflow and then we moved the new fields into production.
Phase 2 — Back End Application Updates
Next step was updating several of the applications that we have. One of our programs is used to match imports to existing accounts. Here I had to add a check to see if the first name field from the import matched any accounts first name or nickname. If the match is strong enough no further work needed to be done.
Next, there is a deciding service. If the import had a loose match to some of the fields we look for it would get sent there and a user would manually look over the data and see if it seems to be a match. If it is and the update was that they used a nickname we didn’t have on file they needed to be able to set the nickname field.
The problem with updating the record adjustment and deciding applications was that no one had touched them in over 2 years and they were written in asp.net which I wasn’t familiar with. So the whole release pipeline was out of date, the packages had to be updated, and then any deprecated features from the updated packages had to be fixed.
Phase 3 — UI Updates
Finally, after the database had the correct fields and the back end supported it I was ready to make changes to the UI. This involved adding fields to various forms. JavaScript was needed to load the data into several different locations. ASPX files were updated to reflect the changes. Even some manual HTML was needed.
In Conclusion
What no one told me is just how much red tape there could be to developing. Just because something sounds simple doesn't necessarily mean that is the case. Honestly, I love what I do. Sure, there are parts that are unexpectedly complex or dull but they are outweighed by the challenges that I get to solve. Software engineering is a constantly evolving field as well. I love to learn so it is nice to constantly have new things to know.
If you enjoyed this article here are a few more you may be interested in: