Lessons From a Veteran: Dawid Ziolkowski on Trusting and Taking the Plunge

This post is part of a series interviewing veteran developers, asking them questions about their journey to tech mastery and sharing the advice they have for those getting started.

Dawid ZiolkowskiToday we’re talking to Dawid Ziolkowski. Dawid has 10 years of experience. At the beginning, he worked as a network/system engineer, did DevOps in between, and recently became a cloud-native engineer. He’s worked for an IT outsourcing company, a research institute, telco, a hosting company, and a consultancy company, so he’s gathered a lot of knowledge from different perspectives. Nowadays, he’s helping companies move to cloud and/or redesign their infrastructure for a more cloud-native approach.

If you’re considering a career switch to programming or questioning whether you’re in the right field, Dawid has some great insights for you based on his own experience. Let’s hear what he has to say.

Basic logistics: Stack? How long have you been doing it?

So, the answer to what stack I use is not straightforward. For most of my career, I was a system engineer involved with DevOps. My first programming experience was with Python. As a DevOps engineer, from time to time I had to write smaller or bigger scripts. And the more experience and different jobs I got, the more programming I did.

For a long time, I was able to more or less understand and write small programs/scripts in Python. After a few years, I decided to finally properly learn at least one language. I decided to go for JavaScript. I made that decision partially because I wasn’t really a fan of Python and partially because I wanted to learn a bit of front-end development.

After learning the solid basics of JavaScript, I learned Angular.js and Vue.js. I enjoyed building front ends, so later on decided to learn the back end, too. Now I know Node.js and Ruby. So, for a little bit more than two years now, I think I can call myself a full stack developer.

What made you want to go into programming?

I partially answered that question in the previous answer, but there’s more to that story. As a system engineer, you only install and configure software (in order to create some solution, deploy some clusters, etc.).

Whenever there is a bug in the specific software you use, you either have to create some workarounds or, most likely, you just have to wait until the maintainer of that software fixes the bug. This can be frustrating. I wanted to be able to fix at least the smaller bugs in the software I needed myself.

Programming is a bit like art—you create something from scratch. You can do pretty much anything. You can create completely new software, fix bugs in open-source projects, or extend existing tools with a new functionality.

I had the impression that, whenever something doesn’t work properly, as a developer you can just find a problem and rewrite the code, while as a system engineer you always need to rely on others. That was the biggest reason behind my decision to go into programming.

The second reason was that this feeling that programming is a bit like art—you create something from scratch. You can do pretty much anything. You can create completely new software, fix bugs in open-source projects, or extend existing tools with a new functionality.

What were you most worried about when you made the decision to pursue a programming career?

I was most worried about the time it would take and making the wrong choice of which language to learn. I was scared that it would take me years to learn programming on a useful level and that if I will pick the wrong language to learn (meaning one I won’t really use or like), I would have to start all over again with another language. Also, since I already had some not-so-great experiences with Python, I was afraid that I would just be wasting my time trying to learn JavaScript. None of these were valid concerns. As for the time, yes, of course, it will take a few years to become senior developer, but even after a few months, you can learn enough to build your portfolio.

What advice would you offer to people considering a career change to programming?

Don’t be afraid! I can tell from my own experience—if you’re comfortable and experienced in what you’re doing currently, starting from scratch can be scary. But it’s totally worth it!

First of all, there will always be a need for developers (and I even think the demand is only growing), so it’s a very safe choice.

Second, don’t be discouraged by the beginnings. All the new, crazy and weird things you have to learn at the beginning of your programming journey can put you off, but trust me. As soon as you get the basics, learning will become much more pleasant.

Third, you can learn programming pretty much anytime—on the weekends, in the evenings, while commuting to work. This means you don’t need to “risk your life” and you can learn at your own pace in your spare time and only make a career switch when you feel comfortable.

As an extra tip, build as much stuff as possible and keep it somewhere so you can show it off—for example on GitHub or your personal website. The point is that if you’re worried it will be hard to get a job with no experience, a portfolio will be your tender card. That also means you shouldn’t just follow the book/course. Try to stop after each section to expand on what you learned in the course and build different stuff.

Did you ever think that you’d made a huge mistake getting into this field?

Definitely not. Programming is one of those skills that can sometimes be frustrating (yes, debugging!), but there is some art in it. There’s a feeling that you can create whatever you think of. It’s very rewarding, especially if you decide to do some open-source work, too. Moreover, it’s a skill that will still be useful—even if you don’t end up working as a developer. For all sorts of IT management jobs, it’s an asset to know how to program. Once you learn programming, you’ll better understand how computers “think.”

What mistakes did you make that you think others following in your footsteps could learn from?

I spent too much time trying to learn a language that I didn’t really like. As I mentioned earlier, I started with Python and, for a few years, I was stuck. I was only able to create simple scripts because learning Python was going very slowly for me. I tried different courses and different books, but I wasn’t really seeing progress, nor was I enjoying the process. That made me think that maybe I’m just not good enough to be a programmer.

Don't be discouraged by the beginnings. If it seems like learning programming is not for you, before you abandon the idea, try a different language first.

Nevertheless, I decided to try something different and started learning JavaScript. This was the best decision I made. I just didn’t like Python enough to learn it. So, here’s the hint for you: If it seems like learning programming is not for you, before you abandon the idea, try a different language first.

What’s something that no training/bootcamp/degree could have prepared you for?

In your programming career, you’ll probably often face a situation where, for a given task, you’ll have a few different ways to program it. In other words, to achieve the same result, you’ll have more than one way to write your code. And choosing which way is the most efficient one can sometimes be more difficult than the actual coding. Is this solution secure? Is it efficient performance-wise? Is it following best practices standards? You’ll need answers for all these questions, and you won’t find them in any learning materials since there are no general answers. It all depends on the use case. So, you need proper mentoring and experimenting.