Hi there, I am Isaac, a Junior Software Engineer in 2359 Media! I started out as an intern six months ago and recently converted to a full-time position within the organisation. Currently, I am working on developing an in-house application which helps to monitor and manage access to one of 2359 Media’s internal services. Through this article, I will be showcasing my learnings and hopefully these sharings may benefit you in some way!
Plan, Solve, Then Code
Before officially working on any code, it is essential to garner a good understanding of the issued task and structure a plan to achieve the key objectives.
In the context of software engineering, there are typically two main challenges when it comes to problem-solving. Firstly, the challenge of sourcing for solutions and secondly, the challenge of implementing the solution using code. It is important to be distinctive with both challenges as any mix-ups could lead to inefficiency.
To resolve this, I developed a four-step approach that would help to tackle this issue.
- When presented with a task, list out all the action items that are required to accomplish the goal
- Draw out high-level diagrams to have a better understanding and visualisation of the problem at hand and solve the logical problem
- Write comments in the code to outline and structure the code’s functionality
- Implement the code
Through this systematic approach, I was able to focus my attention and efforts on each individual step.
Doing Things Perfectly Isn’t Everything
We as software engineers enjoy creating things, and it is easy to grow attached to what we have created. Constantly putting in effort and time into a project to perfect it comes naturally due to this attachment and it can be difficult to refrain from doing so at times. However, with most projects in the world, there are usually time constraints and trying to continuously improve on a project with such constraints may result in diving down a rabbit hole. In addition, attempting to write the most perfect solution to a problem also has its setbacks, such as sacrificing maintainability and reliability. Thus, ensuring that there is a balance is essential, especially when trying to fulfil requirements within time constraints.
*No One Knows Everything *
Resourcefulness comes in handy in situations when the team is unsure of how to resolve a particular issue and this can be in the form of research, brainstorming with the team and/or even seeking the right person for help. Moreover, it is important to reach out and ask questions that can help to improve the project situation and directly benefit your personal learning as well. As a junior software engineer, it is easy to think that asking too many questions may give people the wrong impressions and put you in a bad light. However, asking questions actually benefits you more as it would help you learn and move forward in any project. To ensure that you get the most out of your questions, it’s always good to think them over first before asking and ensuring that the scope of the questions would help you to understand all the initial queries that you have.
One example was when I was working on a particular feature in the company’s in-house project that I was unfamiliar with and I had hit a roadblock at one point. In previous tasks, I was able to complete them smoothly without any disruptions and was beginning to pick up confidence in completing my work. When I encountered this roadblock, I felt that I could keep persevering on and try to figure it out on my own as I had with previous tasks. After a couple of days I was still unable to make much progress. I started to contemplate on whether I should seek help instead of figuring it out on my own but I didn’t want to come off as being unable to complete my own work. However, I decided I didn’t want to continue dragging on and continuing to work on it without being able to make any progress.
After speaking to my supervisor about my situation, instead of the condescending lectures that I pictured, he took the time to explain how to progress forward. At the same time, he did not reveal too much to allow me to contemplate and challenge myself. With the guidance he had, I was able to complete it not much longer from there. That was when I learned that being determined and perseverance is definitely a good trait to have, but we should not be afraid to seek help from others when we encounter obstacles.
Be Creative and Innovative
Solving a large number of logical issues is the essence of software engineering. If you aren’t an engineer, it may not appear so, yet it necessitates a great deal of innovative thinking. However, software engineering allows me to express myself in more ways than one. In the world of programming, there is no one right way to perform a task. This has provided me with the opportunity to use my creativity in my problem solving as well as being innovative in the way I write my code. For example, merging different functions and APIs to create something new altogether, and solve the issue at hand. The satisfaction that comes out of it is immeasurable!
Overall, my time in 2359 Media so far has been fruitful and the experience offered me a range of learning opportunities. I was exposed to new technologies, hands-on experience in an in-house project and even had the chance to touch up on my coding practices. Additionally, I was able to grow in the software engineering field through both the guidance from my team and the project challenges that I faced. Starting out as a junior software engineer might be challenging, but with the right support and mindset, you can definitely overcome these challenges and continue on your journey on becoming a better practitioner.
If you enjoyed this article, check out Growth with Diversity in 2359 Media.
Looking for bespoke digital solutions for your business, or have a great innovative product that you need help building? Connect with us at 2359!