Developing a Software Engineer

10 May 2024

Dear Younger Self,

Over the past 4 months, we’ve been working a lot on our skills as software engineers, and we can finally say that we have just established the fundamentals! I know, it may not seem like a grand leap in our software engineering journey, but developing a solid foundation is what will support us throughout our career. There’s much more that goes into being a software engineer than we initially thought, like following professional coding standards, utilizing design patterns to be more efficient, and understanding project management to ensure things get done properly within teams.

Skills such as these, while they may not seem like they would spur us into the industry, could carry us into a thriving and reliable career. They act as a mold to shape us into not only software engineers, but also excellent professional within the industry.

Storytelling is Key

Picture

As a software engineer, we want to create all kinds of cool things that would make our lives easier. Need a program or algorithm that helps automates tasks? What about a game to keep us entertained throughout those boring stretches throughout our day? How about an application or website that gives the public access to convenient tools or information? Software engineers work to turn these concepts and ideas into reality (or virtual reality) so that everyone else can live easier and less stressed.

However, writing the code to fulfill such dreams are not as easy or stressless as the final product that users get to experience. It can be grueling and frustrating, leaving us software engineers to deal with the nitty gritty aspects. That’s why there are coding standards amongst professionals. Coding is akin to a story: characters and variables can help lead the way through the plot and code, allowing us to identify the who, what, where, why, and how. Writing within the lines of a coding standard helps us to not only write readable code for future software engineers, but it also makes us better programmers.

You got a Problem? We got the Patterns!

Many software engineers have come before us, and it would be a shame to let their experiences go to waste. Design patterns are a way of passing down the experiences and solutions that other developers have encountered. We can use those design patterns as a guiding light to help us navigate through the vast sea of uncharted code. They act as blueprints from the past that we can use to guide us in building our grand design.

Picture

Several such design patterns are the “Singleton”, the “Observer”, the “Module”, and the “Facade”. We’ve unkowingly used several of these in projects already, and learning more about them in full gives us more insight into their applications and how they turn our code from a run down town to a thriving cityscape.

Rome Wasn’t Built in A Day

If Rome wasn’t built in a day, why should we expect our code to be built in a day? Obviously, building Rome is a much grander project than anything we’ve done so far (may not be the case for future projects, I mean look at Facebook), but the idea remains similar. I know we like to think we can tackle projects quickly, no matter how large the scope is, but is that the best approach? Probably not. Towards the end of the last 4 months, we’ve actually used a style of Agile Project Management called Issue Driven Project Management (IDPM). Basically, we took a giant project and broke it down into very small issues for us to tackle. Who would have thought that taking small steps to achieve a bigger goal would work so well!

Best of Luck in Your Future

The skills mentioned above are just a few that we learned over the past months, there are so much more that we have in our repertoire now that we didn’t have at the beginning of the year, all of them collectively making us better software engineers. Like I said in the beginning, these can carry us throughout the ever changing field of computer and software engineering. While they may seem rooted in software engineering, we can take these skills anywhere since the concepts themselves can be utilized universally. Coding standards are just like guidelines that we follow to make our products better as well as helping others understand what we are trying to achieve. The concept of design patterns are rooted in learning from the past and seeking the assistance of those before us, which can help us as we grow into whatever professional position we end up in. As for project management, we can use this almost everywhere we go. Whether it’s personal projects or working in a professional team, being able to break down the goal into smaller subgoals will almost always help in boosting efficiency and morale.

Overall, we are growing into a software engineer who has the fundamentals to start a junior career. As long as we don’t forget the skills and tools that we have gathered throughout our time within this course, we can be confident in the future. Best of luck to ourselves, and remember that throughout computers and AI, I alone can code my future.