It’s been almost 2 years since my last post. There have been good intentions of writing things but you can clearly see how that turned out. To get back on track, I’ve pulled out an interview that I did for a local computer science from … timestamp says Oct 2016. My thoughts have largely stayed the same so I’ll post it below.
Q: What is your title in your company?
A: Software Engineer 4
Q: What are your technical certifications?
A: Bachelor’s Degree in Computer Science from University of Manitoba
Q: What technical website do you follow?
A: Hackers News, Stackoverflow, reddit.com/r/netsec, reddit.com/r/ruby, troy hunt, krebs on security, schneier on security, thought works, thought works technical radar, destroy all software, and xkcd
Q: What is the biggest IT challenge you have faced and how did you handle it?
A: People. People are always going to be your biggest challenge (as much as you may not believe it now.) In your day to day you’re going to interact with 10s to 100s of people, all with varying objectives, needs, goals, beliefs, and preferences. Learn to distinguish between the important things that are worth standing up for, and the minor details that are just bike-shedding.
I think the best way to handle people situations is with empathy. If you can put yourself in someone else’s shoes, you can understand their perspective and reach a solution with them. One of my favorite sayings is
would you rather be right, or would you rather be effective.
I’ve taken this to mean that sometimes I need to compromise on what I think is right, if it can achieve the same goal that my teammates and I are working towards. By being empathetic with my teammates I can understand their perspective which makes being effective much easier.
Q: How do you solve problems as a team when developing a software?
If they’re code problems, we will discuss the pros and cons of a problem, whiteboard the various solutions, and decide. It’s usually very easy to solve problems as a team. Taking time away from a problem can usually help too. I’ve found that taking a walk, or going home for the day will often solve a problem when I’m not even thinking about it.
Now if they’re people problems and not code problems – which are generally more common – going for a coffee or beer with someone is the best way to solve those problems! wink Getting to know someone personally, and face to face breaks down barriers so quickly.
Q: As a software developer what are the tasks you do besides developing?
- Writing tests: unit, integration/functional, or feature to verify software
- Writing quick scripts to check work / validate outputs
- Making sure our software is building correctly with our Continuous Integration / Deployment servers
- Fixing bugs
- Reading and/or understanding other people’s code
- Reviewing teammates code
- Communicating with other team members around new features, existing features, bugs, schedule, etc.
Q: How do you keep current on this industry?
A: Typically through the technical websites I follow, local industry groups (like calsec, yycruby), and peers
Q: Best program languages to learn at the moment? And Why?
My primary language is Ruby, and that will keep me employed for the next 5 years at least, however I’ve heard anecdotally of it’s decline in favour of the aforementioned languages. I haven’t seen that personally, but I am also keeping that in mind and am assuming I will likely need to learn a different language within the next 5 years.
Q: What is your input when it comes to learning languages? Is it good to learn basics of multiple language or master in one?
A: Personally, my recommendation is to learn one language really well, and know how to apply that knowledge to other languages. IMO a developer that knows the fundamentals can get up and running in a language with a few weeks of study. Being able to solve problems with code > knowing a particular language.
That said, I’ve also “levelled up” my skill in languages the most when I’ve started working in another language. For example, I didn’t grok blocks in ruby until I worked with objective-c and saw how it used blocks programming on the iPhone. I’ve heard that is a common situation. So maybe my answer is do both.
I would recommend learning different platforms. Programming server code, vs UI code, vs mobile code all come with very different perspectives and cause you to learn design paradigms that are applicable to all software.
Q: What is the best way to show case your work for employers or what is the best way to create a portfolio?
A: Ship it. Get something on an app store that an employer can download to their phone, or load on a website. I am 100% more interested in a piece of working software then a theoretical piece of software that you’ve written when we sit down for an interview. At a recent career fair, I had someone offer to demonstrate their Android app that they built (it was just a weather app). It was an excellent opportunity to talk about them and their coding and see how that person thought. We talked about APIs, UI programming, and failover conditions. It was a great discussion and I now know that this person is a capable software developer. Their resume went to the top of the pile.