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.

What Is a Programming Framework?

One of the reasons that learning to program might feel like an overwhelming task is the sheer number of new words, terms, and expressions you come across. Today, we’re here to make your life easier by explaining one such term: programming frameworks. Specifically, we’re going to tell you everything you need to know in response to the question “what is a programming framework?”

You can think of a programming framework as a tool—or a set of tools—you use to make your life easier when performing common programming tasks. I know that might sound a little vague, but it’s hard to offer a more complete definition without going deeper into the topic. Luckily for you, “going deep into a topic” is our thing here at Make Me a Programmer.

What Is a Programming Framework In Simple Terms?

Here’s my definition of a framework:

A programming framework is a prepackaged set of solutions that solves common development problems.

Why do people use frameworks? We’ll go into that in the next section, but I can say that the No. 1 reason for using a framework is probably saving time. But as you’ll soon see, there are several other benefits you can get by leveraging frameworks.
Continue reading “What Is a Programming Framework?”

Lessons From a Veteran: Turning a Hobby Into a Fulfilling Career

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.

Mauro ChojrinToday we’re talking to Mauro Chojrin. Mauro helps PHP developers hone their craft through his trainings, books, workshops, and other tools. He’s been in the IT industry since 1997 and has held roles such as developer, architect, and leader of technical teams. Mauro also likes to write and vlog.

Mauro is going to tell us about how he got his start in programming, and you may or may not recognize some of the throwback systems he references. While the technology may have changed, you might have had similar inspirations for getting into programming.
Continue reading “Lessons From a Veteran: Turning a Hobby Into a Fulfilling Career”

Best Programming Books for Beginners

What are the best programming books for beginners? This is a broad question. Programmers need a wide variety of skills, and the field you want to work in can have a significant impact on which ones you need. There isn’t one book, or even a list of books, that will teach you everything you need. Some skills can come from books, and some will only come from on-the-job training.

You need books that will improve your knowledge and skills regardless of what type of programming you’re interested in. I’ve put together a list of seven books that will do that for you! These books teach you basic skills that any programmer can use and, more significantly, how programmers need to think.

Let’s dive in.
Continue reading “Best Programming Books for Beginners”

Lessons From a Veteran: Back to School With Michael de Ridder’s Drunk Metaphors

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.

Everyone has a different path in life, and that’s OK! Today we’re talking to Michael de Ridder, who tells us about how getting into programming was accidental, not intentional. And that’s OK, too.

MichaelMichael De Ridder has worked in software development, data visualization, data science, research, consulting, and business analysis across health care, telecommunications, radio and finance. He enjoys the challenge of combining and utilizing the relationships between different domains and technology. A big fan of travel, Michael is a proponent for the benefits of work-life balance, believing that time away from a subject allows creativity to flourish.

Let’s learn from him how even a (perhaps drunken) accident can lead to good things and valuable lessons.

What made you want to go into programming?

That’s a more interesting question than it seems. And it’s as good a time as any to say that I wouldn’t call myself a programmer. I recently heard my résumé described—in a job interview no less—as a drunkard’s journey. When the interviewer said drunkard’s journey, he definitely didn’t mean it as a negative, and in fact I took it as a compliment.
Continue reading “Lessons From a Veteran: Back to School With Michael de Ridder’s Drunk Metaphors”

Lessons From a Veteran: Gabriel Aizcorbe on Unexpected Lessons

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. Today we cover a lot of topics, from whether you should go into programming or IT to being specific about what you set out to learn to the lessons you’ll never learn until you start working.

Gabriel AizcorbeAnd we’re learning about all of these things from Gabriel Aizcorbe. Gabriel got into IT when he received his first 8088 at 14 years old. From then on, his whole life was about computers, programming languages, and learning more. As a project manager with PMP and agile methodologies, he gained experience in all kinds of projects in the local and international markets. He has a deep passion for data and analysis and is striving to launch a startup devoted to data manipulation and analysis while he works as DBA/BI consultant.

Let’s hear about the lessons he’s learned on his journey.

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

I’m a bit of an “un-stacked” person—more a “free soul,” if you will. I prefer to mix my own tools as I need to in order to achieve a goal. But, if I had to associate myself with a stack, based on the tools I use the most I would say  Microsoft stack. Either way, I have enough flexibility to change to a MEAN stack or whatever else comes along. In the end, they are still development tools.

And since when? Well, I started self-teaching when I was 14 years old. But let’s say that, formally, my first big development job was at 25. So I’ve been working for more than 20 years.
Continue reading “Lessons From a Veteran: Gabriel Aizcorbe on Unexpected Lessons”

What Languages Should Every Programmer Know?

It’s easy to get lost in the sea of programming languages. On top of that, there are some languages (I’m looking at you, JavaScript) that have a vast ecosystem of frameworks. Wikipedia has an exhaustive list of programming languages with several for each letter of the alphabet. I won’t count them, but there are at least 260 at a glance. There’s no way you can learn all of them. So, what languages should every programmer know?

Where to Start?

If you want to know where to start, you can take a few approaches. Of course, this depends on what you want to do in your programming career.

What languages should every programmer know?
Credit: Pixabay.com

If you want to build games, you should learn some common gaming languages (and platforms, too). For mobile app development, you would focus more on the languages used for iOS and Android development. Is data analytics your thing? It’s pretty hot right now! And if it is, you’ll want to learn data-centric languages, plus some languages that specialize in data analysis like R.

See what I mean when I say it depends on what you want to do? But if you don’t quite know where to begin, you might look at the markets. Are you interested in learning to code because it has a good job market? If that’s your game, then you might consider using the markets as your guide.

Two points to consider:

  1. The markets are always changing.
  2. Some languages are in demand because knowledge of those languages is uncommon.

Also, you can ask around. Of course, if you ask five different people, you’ll get five different answers. But, you can always take the ones that are mentioned more frequently and start there. I’ll share my own list and see what others have to say on the topic, too!
Continue reading “What Languages Should Every Programmer Know?”

What Non-Programming Skills Do Programmers Need?

As programmers or aspiring programmers, we often focus on the technical skills we need to build software. We work on improving our programming skills, picking up new frameworks, or reading technical books to improve our knowledge of computer science.

However, those technical skills will only get us so far. As with most careers, we need to expand our learning and also focus on professional skills. And actually, these skills will make the technical side easier, as we’ll have more clarity on what we need to do to solve problems.

In this post, we’ll go over what non-programming skills programmers need to use in our jobs.

1. Communication

First and foremost, we need to be able to communicate with our fellow programmers, analysts, product managers, and customers. Without clear communication skills, requirements get lost or misunderstood. Technical skills will only get us so far. We need to expand our learning and focus on professional skills. And actually, these skills will make the technical side easier, as we'll have more clarity on what we need to do to solve problems.As a result of poor communication, programmers might build the wrong solution to the problem. Or their solution might make things difficult or clunky for the user because the programmer didn’t understand the problem correctly.

A lot can go wrong with communication. And since communication is the most important skill that we’ll cover, let’s break it down further.
Continue reading “What Non-Programming Skills Do Programmers Need?”

Should Developers Write Documentation? Yes, and Here’s Why

Should developers write documentation?

Yes. Yes, they should.

That’s it. Everything you need to know! Come back next week for more helpful career advice for aspiring programmers.

Oh. You want to know why developers should write documentation? Fine.

Why Developers Should Write Documentation

Developers should write documentation because it makes it easier for both you and your coworkers to use your code. Well-written code is easy to read and understand. Documented code, on the other hand, is a gift to everyone—even to the coder that created it.

Writing documentation makes you a more valuable developer and will help your career. Documenting your code makes you a better developer and helps you design better systems. Continue reading “Should Developers Write Documentation? Yes, and Here’s Why”

How Many Hours Do Software Engineers Work?

The world of software development has a strange reputation, both for insiders and outsiders. One thing many people have wrong ideas about is how many hours software engineers work, or should work. I’d like to dive a little deeper into this subject: What is the reality and what should you do?

What Many People Think

Many people think that software engineers work almost all the time. When you ask about average work hours per week, numbers between 60 and 80 hours per week are not an uncommon response. This idea lives among both developers and non-developers. Among some developers, there is also a strong feeling that you can only be a great developer if you work this much.

How many hours do software engineers work?
Photo credit: Pixabay.com

I’m not sure where the idea comes from. Maybe it originated from the image of the asocial nerds that spend all their time sitting behind a computer. Or maybe the immense pressure that Silicon Valley startups have put on young developers created this idea. In some cases, developers like to cultivate this image out of some peculiar macho reasoning of what it takes to be a “real” developer.

Apparently, things have improved over time. A CNET article talks about how companies and individuals have evolved to more realistic work weeks and room for a personal life. Companies have also realized that overtime doesn’t necessarily mean developers will be more productive. And with the advent of working from home, developers can increase their productivity without crunching extra hours.

The Reality

The reality is complicated. Continue reading “How Many Hours Do Software Engineers Work?”