跳转至

10 An Interview with Erik Hellman

Erik is a software engineer with more than 20 years of professional experience. He is currently working as a contractor through his company Hellsoft. Besides writing code for everything from smartphone apps, websites, backend and IoT systems, he is also writing about software engineering on his blog (www.hellsoft.se). Erik has written two books on Android development and can often be found at various tech conferences where he talks about some tricky topics that he has come across in the past. Besides programming, he likes to talk about coffee, gardening and books.

Erik HellmanErik Hellman

Connect with Erik

Twitter: @ErikHellman

Interview

You are one of the most senior and seasoned developers I have met. What is the most significant change you’ve noticed in the development community since you started your career?

Automation on every level. When I started writing software, there was no such thing as automated tests, IDEs with code-completion, or build tools that optimized your code. Even simple things, such as automatic code formatting, were unknown. Even experienced developers with as much or more experience than me would have trouble writing software in the “good ol’ way.” I think most of us don’t appreciate the advancement made on the tools we work on. Even compilers have gotten so smart today that there is little reason to think about the optimizations we needed to remember only 10 years ago.

We often speak about automation and AI taking over other people’s jobs, but already the roles that are highly repetitive in our field, like testers or IT-support, are disappearing because of this automation. It is naive to think that the traditional role of writing code won’t suffer the same fate, especially since a lot of the code that we do write today is very similar to the one we’ve written before.

Is there anything you miss from your beginning days as a developer?

Not really. Everything is better, just more complicated. Sometimes I might miss the times when I learned or discovered something new, as that happens less frequently these days, but that has more to do with me having less free time and also being old and learning things slower.

What do you think is one core concept that most software developers don’t pay enough attention to, when they are trying to grow their careers?

Automation. Most of the things we do as developers today will be automated to some degree. Most developers will spend less and less time writing actual code and more time thinking about composition and design of systems. The tools will get smarter. Much, much smarter.

What is the single best investment you have made to help advance yourself as a professional developer?

Starting my own company and working as a contract developer. While this is not for everyone and probably not something you should do at the beginning of your career, it has led me to interact with a very wide variety of businesses that I would probably not have been in contact with if I worked as an employee for a company.

Which other resources do you rely on heavily to keep yourself up-to-date in your industry?

I mostly stay updated through my network of professional developers. Nothing beats hearing someone talk about the latest stuff they worked on and the lessons they learned. Reading about it or hearing about it in a tech talk is great, but the personal touch beats everything.

I’m also all about books. Although I’ve tried podcasts and videos a couple of times, I’ve realized I’m better at collecting information reading than listening. I do appreciate that other people have different preferences, so I’m glad that there are skilled people doing blogs and videos.

What are the three books that have had a lasting impact on how you do your work?

The list of good books that I’ve read that relates to my work is quite long, but there are a few that stand out for different reasons.

First, Game Engine Black Book: Wolfenstein 3D by Fabien Sanglard. This is a piece of software history captured in a great way, while at the same time presenting much of the stuff we are taught in computer science classes but rarely get to work with professionally. I enjoyed it tremendously, both from a personal perspective—the amount of time I spent playing Wolfenstein 3D is quite ridiculous—as well as the details about CPU architecture and the smart software solutions that they used.

Next, Effective Java by Joshua Bloch. This is probably a popular option. For me, it serves both as a great guide for how to write efficient code, but also as a testament to the fact that we as developers shouldn’t try to solve things that are probably already solved in the platform. Understanding best practices and how to apply them, but also understanding when and why to deviate is an important part of being a developer. We still tend to deviate from best practices a lot, so books like this help us to stay on the right path.

Finally, Against the Gods: The Remarkable Story of Risk by Peter L. Bernstein. This book is not about computer science, but it is probably the book that has had the most impact on how I work. It describes the history of risk assessment and probability. While the theory of statistics and probability was something we’ve all studied, we usually don’t get equipped with the skill of how to apply it properly and how to recognize our own biases and faults when predicting risks. This book gave me better tools to deal with that.

What three tools can you absolutely not live without as a developer?

First, a solid and ergonomic office setup. Includes everything from desk and chair, to keyboard and screen. Next, a smart IDE. This goes back to automation and smarter tools. We should stop fooling ourselves that a “clean and simple” editor is the best. Code completion, real-time lint warnings, and in-line documentation make us better. Finally: coffee.

How do you start your day off with a bang? Do you have any secret morning routines that set you up for success?

I wish there was some magic I could apply to start things off with a bang. In truth, my days vary from starting with a bang to being a long drudge depending on lots of factors such as travel, meetings, or other boring tasks. I just try to stay as focused as possible, complete meetings and other non-creative tasks that cannot wait as fast as possible and hope that I have enough energy to make something amazing. Having the freedom to pick my projects myself and also leave them when I want helps.

How do you stay highly productive for long stretches of time?

I’ve learned that it is okay to abandon things that are bad for me, in whatever way that might mean, or that I no longer feel engaged with. This has made me much better at picking the right project, so my focus tends to stay fairly high for the duration of my assignments these days.

What is something you wish someone had told you back when you started software development that you had to learn the hard way?

Social skills are something you gain from experience, which are crucial in any situation. I wished I would have understood the concerns from my parents when I spent a large part of my early teenage years sitting in front of a computer instead of hanging out with friends. While I’m not anti-social, I definitely have issues dealing with more complex social situations today. I still see lots of young developers struggling with finding friends and having a healthy social life.

“We need to acknowledge the lack of discussions about the ethics in the work we do… It is easy to ignore the effects of your work if it is only software, but people are already suffering from software that has an unethical or questionable intent.”

Are there any current industry trends that you think are just plain wrong?

We need to acknowledge the lack of discussions about the ethics in the work we do as software developers. It is easy to ignore the effects of your work if it is only software, but people are already suffering from software that has an unethical or questionable intent. Social media without any regulations, gambling and betting sites, advertisement, and violent content on YouTube are just a few things we’ve helped to create.

What would you suggest is a better alternative to this trend?

While I’m not pro-censorship, there needs to be a better middle ground where free exchange of ideas can occur but where we limit the damages of the new systems we have created. This starts with us, the developers writing the software for this, to recognize our role and responsibility.

Erik’s Recommendations

  • Game Engine Black Book: Wolfenstein 3D | Fabien Sanglard
  • Against the Gods: The Remarkable Story of Risk | Peter L. Bernstein