I recently had the opportunity to speak with a Computer Science student who needed to complete a short interview for one of her classes with someone in the software development industry. The questions for her assignment really made me think about aspects of my job that I don’t think about on a day to day basis, mainly because I have been a working professional for about ten years now. I’m sharing this with the hope that this information is helpful to other Computer Science students, new grads, and even potential career changers.
Some quick background on me, I have a B.S. and M.S. in Biology and I have seven years of experience as an Environmental Consultant and three years of experience as a Software Engineer.
Please state your role/title.
Software Engineer
Can you walk me through a typical work day for you?
I start my day by choosing a ticket to work on that was assigned to me and starting on that work, or I continue working on a task from the previous day. At 10am we have standup, where the Product Manager goes over the priorities for different clients, the developers give an update on what they are working on and how it’s going, and they let the team know if they have any issues or blockers that are preventing them from finishing a task. After standup I continue working on my tasks and communicating with my team as needed.
How important has collaboration and networking been in your experience and do you have any tips for someone looking to build these skills?
Collaboration and networking are incredibly important skills, I have relied heavily on both throughout my career. Collaboration is an important skill for your daily work, you will be collaborating with other engineers, product, design, etc for many different projects, and it is very common for engineers to pair together on tickets (either for learning or help solving complex problems). Depending on the size of the company you may also need to communicate with clients directly or other engineering teams, so it's very important to have good communication and collaboration skills.
For networking, the best tip I can give is that you never know who will be an important connection in your future. Be friendly with colleagues that you have a good relationship with and keep in contact with them through the years.
If you could talk to your college self, were there any misconceptions you had about your career or post-graduation life in general that you would want to correct? Additionally, based on your experiences, what advice would you give to recent graduates or individuals entering your field?
I wouldn’t necessarily say I had misconceptions about my first choice in career path, I just eventually realized that it wasn't what I wanted to do with my life anymore. I actually did have misconceptions about computer science at the time, which stemmed from my belief that I wasn't smart enough to do it. I would probably go back to my college self to tell her that it’s difficult, but not as difficult as it sounds.
I think the advice I would give to new graduates/early career software engineers is that this industry is hard as a beginner. It takes a while to ramp up, so don’t be too hard on yourself as you’re starting out. And it's good to remember that in this industry you will always be learning, the things you learn just change as you become more experienced.
What are the most difficult parts of your job? What are your favorite parts? And what type of projects do you work on at your job?
The most difficult part of the job is dealing with the tooling (IDEs, virtual environments, package versions, servers, database issues, etc), which doesn’t break too often but when it does it usually takes a while to get back to its working state. My favorite part of the job is working on something new or learning a new technology. I work on all types of projects since we create and maintain different websites for our clients, but most often I'm adding testing to a project. This means I'm usually adding a test framework to a repo and making it part of the deployment process, or adding to an already existing testing suite.
When faced with a challenging project, can you walk through your problem-solving approach? How do you break down complex issues, and what resources or strategies do you use to find optimal solutions?
When I’m working on a challenging project, I try to break down the problem by starting with the most basic outline of what I need to do and building on it from there. My problem-solving strategy as I work on something is to break things back down into basics. For example, double checking that the variable names are correct, there aren’t any typos, the correct methods are being used, etc. For resources, the first thing I usually refer to is documentation from the original source (Python docs, Django docs, etc). After that I use google. And if all else fails I go to another developer and pair with them until we can figure out an optimal solution.