Aaron Ackerman is a Freelance Software Engineer in Minnesota.
What initially sparked your interest in technology?
When I was young we had many game consoles: NES, SNES, several GameBoys, N64, Dreamcast, PS1, PS2, XBox, and on. My parents bought the family nearly all the systems except for a GameCube and Sega Saturn, I guess we didn’t ask for those ones. Needless to say, we were not outdoor kids. Along with the consoles, we had a Commodore 64 that we would play games on. Eventually the Commodore was upgraded into Windows95, Windows98, WindowsME, and Vista.
I was always fascinated with playing games and by what you could do with computers and that led me into wanting to build software and taking programming classes in high school.
What was the first programming language you learned?
What do you do now?
I’m working on the platform team at YA, building and maintaining the services that support YA’s internal platform for delivering incentivized marketing solutions. Recently I’ve been spending a lot of time on improving metrics, alarms and general observability of our services to know when things aren’t working correctly.
How did you develop the skillsets to get to where you are today?
I try to find work within my team that will help me learn something new and try to avoid types of work that I’ve done several times before, leaving those to my other teammates. In my current position we needed someone on our team to be an expert in all of the ever-expanding parts of AWS that the team was utilizing. I decided to fill the gap that I saw there. At that time I knew very little about operating services on cloud infrastructure, but I was able to get a baseline understanding from a few co-workers and the rest was a cycle of reading documentation, doing the work, and learning from my mistakes to where I am now.
Aside from seeking out learning opportunities I would say that one of my greatest skills is the ability to switch contexts very quickly and switch back with very little loss. This is something a lot of people have trouble with, thinking deeply about a problem and another co-worker comes over with one little question and then all of what you were thinking about is completely lost. I try to optimize my thinking for not losing that context when I get those kinds of drive-by questions.
The most important part in getting to where I am now continues to be a drive to improve.
What tools do you use on a daily basis?
What is your favorite part of your job?
I really enjoy learning new things and being a goto person when co-workers have questions. I also enjoy doing the type of work that makes the jobs of my co-workers easier. I’m always excited to be working on a new thing that I haven’t worked on before because I know that I can learn something.
What is your biggest programming pet peeve?
Code reviews with lots of files changed. These large changesets are hard to review, commonly have disparate unrelated changes, and are often expected to get done in the same timeframe as a review with a few files changed. I will dig deep to offer as much feedback as I can and ensure the changes have test coverage and are working properly. But it is very easy to get overwhelmed in this type of situation, let it sit for a day or two, or give up entirely and give them a thumbs up without really doing any review.
Any advice for people considering a career in programming?
- Find a position at a place that cares about the well-being of its employees
- Always seek out learning opportunities and harder problems
- Learn the basics of several different programming languages and push for mastery of 2 to 3
- Read books and learn how to work well with others, “Crucial Conversations” is an invaluable book
Where do you think technology will be as it relates to you in five years?
I think that we’ll see strong advancement in using machine learning to solve a variety of problems and it will become more and more common for companies to have teams devoted to solving problems using machine learning. Machine learning is the next step in automation, training a neural network to generate classifications or decisions that historically could only be made manually by a person. I hope to be par of a team that has exposure to machine learning projects in the next five years.
What was the coolest, but most useless bit of programming you’ve seen lately?
Will Leinweber created a command line tool called git vain, that he demoed at Keep Ruby Weird 2015. The tool will ammend git commits until it finds a commit with a specific prefix like “cafe” and he would ammend all of his commit hashes to have this special prefix. https://youtu.be/Jcto0Bs1hIA?t=1m25s. There’s no real point for this type of programming other than to be cool and fun.
What are some things you’re into outside of tech?
I spend time with my partner watching streaming media. I play videos games, I’m into playing Factorio and Rocksmith lately. I like to put on headphones and go running outside or take my dogs for a walk. It’s important for me to keep strong separation between my home and work so I really try to avoid taking work home or even working remotely.