How did you get into software engineering?
My background is in mechanical engineering where I worked as a process and product engineer in a couple of different industries. I started automating engineering related tasks, aggregating data for analysis, and ultimately building several applications that brought value to my companies. I found a natural affinity for building applications and the problem solving associated with the development process. After a while I was doing it full time and decided to get a masters degree in it to help with some of the fundamental aspects of software engineering.
What were the first technologies that you worked with when you got into the technology industry?
SQL was my gateway technology. Like many companies, my first employer was working with some dated tech where it was hard to gather data and metrics from our machinery. I started writing SQL to aggregate and analyze data from the various areas of our manufacturing process. Then I started building a .Net application around it for other engineers to take advantage of the information. Eventually I designed and developed a manufacturing PLM system managing millions possible configurations of fiber optic cables for one of the world’s fiber optic manufacturers.
Which technologies are your favorite to work with? Which ones are your least?
My love is in back end development, design, and architecture. .Net and C# is my poison of choice. The move to open source and rewrite of .Net in .Net Core has been an amazing shift in the right direction for this ecosystem. Web development is a first class citizen in the ecosystem that is geared towards development for large, enterprise apps. I’ve been exploring more functional programming languages and have fallen in love with FP the more I dive into it and each new release of C# has come with more FP features.
Can you walk us through a typical day on your current project?
I’ll wake up and grab a cup of coffee, review my emails, start doing code reviews, and get caught up on anything that has taken place that morning. My client is located on the east coast so they have a solid 3 hours of work in once I hop on. I usually have a few meetings I need to attend around story refinement, planning, From there, I’ll review my open stories, pick back up on the development work, and collaborate with other developers on their user stories.
Which traits do you think are the most important for success in software engineering? What about consulting?
You have to be hungry! In software engineering the industry is constantly evolving. For individuals who love to learn and be challenged, it is a fantastic industry. It’s my favorite aspect of working in such a dynamic environment. You have to constantly strive to improve your skill set and be a better developer.
The expectation for a consultant is that you are the expert. You must not only have a large breadth of tech knowledge, but a deep understanding of your ecosystem. Sometimes referred to as the “T” shaped skill set. Anyone can sling code together that works on the happy path. By treating your technology as a craft and striving to understand the inner workings of your chosen tech, you will be better equipped to make the right decisions and understand the tradeoffs that come with those decisions.
What is the most challenging aspect of your job? What is the most rewarding?
One of the challenging aspects of my job is putting new processes and technologies in place. Humans can be fickle creatures and change can come with inertia. There is a culture and mindset shift that can be difficult for people to overcome. If you have sound, researched reasons to implement your changes then it can be just a matter of educating others to get the ball rolling.
To me the most rewarding parts of my job are teaching others new skills and giving valuable feedback. Ever since I was an engineering tutor in undergrad, I’ve always enjoyed teaching others and watching them have that “aha” moment. I also just love developing and building applications. Solving fun problems and writing interesting code bring me a ton of joy. There is a great feeling of accomplishment that comes with watching those unit tests turn green and seeing your application come alive!
What advice can you give to somebody looking to get started in software engineering?
Right out of the gate, you should start by building something. Write some code, make an application out of it, and iterate on the process. I believe being hands on is the best method to learn. I love to read and educate myself on new tech, but I don’t feel as though I truly have an understanding of something until I try it out myself (and break it a couple of times). Do some research and look into what other people have done and continuously educate yourself. Last but not least, find someone who has experience in that area. Try it yourself and then get feedback from more experienced individuals. See how their approach would differ from yours and learn from it. Be humble.
How has your experience been onboarding to a virtual team?
It has been a good experience but it certainly has been different compared to onboarding in person. Overall, I found that keeping the lines of communication open, turning your camera on during meetings, and keeping interactions more personal helps build a connection with your colleagues and clients.