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’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.
Basic logistics: Stack? How long have you been doing it?
I started with PHP back in 2003 almost by chance. I had the opportunity to take on a freelance project for a friend of mine and they had already decided on the tech stack (PHP 3, I believe).
I had a little background on ASP (not ASP.NET—remember, it was 2003!) and Microsoft Access. I had heard about PHP, so I took the opportunity to add a new language to my tool set.
At first it felt really awkward—it took a while to adjust to the dollar signs being all over the place and stuff—but eventually I liked it.
Later on, I found myself using PHP for personal projects, and eventually I was asked to use it in a professional environment (meaning an actual job).
Back then, I was part of a dev team for a large local consulting company and my tech lead introduced me to Symfony (1.2 at the time).
Bam! Love at first sight.
Since then, I drifted a few times over to Python and Node.js but eventually bounced back to PHP (and Symfony when I got to select the tech stack myself).
So, in summary, I’ve been really involved with PHP since 2008.
What made you want to go into programming?
In my case, I think my parents made a not-too-subtle effort to get me interested in it from a young age.
I got my first computer when I was 8 (a good old Commodore 64 that I still carry around in my heart).
Almost at the same time, they signed me up for a Logo course…which I have to say was not very successful at.
A few years later, I had a friend who knew a few things about BASIC. He had a book called BASIC for Kids featuring a character similar to Mr. Potato Head.
I borrowed it from him, and that was my real start in programming.
For a long time, programming was a form of entertainment for me.
I used to love video games, so I started trying to code my own games. While they weren’t much fun to play, they certainly were fun to program!
What surprised you most at your first programming job?
I think what surprised me the most at my first programming job was the conservative spirit my boss had.
In retrospect, I think she was 100 percent right to be like that—I mean, there were real people depending on the software we were building. It’s just that, by driving the project in this way, there was not much room for doing fun stuff like trying new tools or approaches.
In a way, I found that working as a programmer was very different from simply writing code…there was responsibility, as in any other job.
Did you ever think that you’d made a huge mistake getting into this field?
There were a couple of times in my life when I fell out of love with programming and thought about going for something more within humanities (history or philosophy).
There was one particular time when I seriously considered leaving it all behind and go full time as a standup comedian.
Luckily, I didn’t do either of those, and I rediscovered the joy of programming.
I guess those times had more to do with personal frustration over things that I was finding hard rather than me not liking what I was doing.
What’s something that no training/bootcamp/degree could have prepared you for?
Dealing with humans 🙂
In most of the formal trainings I took, everything was aimed at solving technical issues, some more complex than others, but in general terms, the problems were very well defined.
When I first started facing actual users of the software I was supposed to produce, I realized that the gap was huge between their desires and my ability to translate them into working code.
And that doesn’t mean I didn’t know how to write the code that would solve their problems.
The problem was I didn’t know what that code should be…and they were not able to tell me that.
For instance, when I had a coding problem to solve in an academic environment, the request would look something like this:
“A chocolate factory asked you to sort their array of brands in descending order.”
My job then was easy: Create a program that would read such an array from some file and print it in descending alphabetic order.
But in real life, someone from the chocolate factory would call me up and say: “Hi, I need a website similar to eBay but for selling chocolate. How much would you charge me for that?”
Clearly there’s a difference between them, huh?
I’m not sure that there isn’t some training out there that could have prepared me for the things I would find out in the real world, but I certainly think this type of real life experience is missing from most regular courses.
What mistakes did you make that you think others following in your footsteps could learn from?
I think my biggest mistake throughout my programming career has been being too optimistic.
If you think something will take an hour of coding, it will take at least three. Budget for it.
Another issue I faced several times is dealing with assumptions.
In today’s programming landscape, it’s not uncommon to deal with four or five different software pieces that need to be in coordination for things to work OK.
For instance, in a regular web app you’re dealing with
- A web server
- The database server
- A programming or scripting language
And on top of that, there are frameworks and other third-party components your app relies on.
It’s very common to add things while you’re coding in a controlled environment (like your own laptop) and find out when deploying to production that there was a mismatch between the software versions you have locally installed and those in the server…and that can cause problems.
So, my advice here is twofold:
- Pay close attention to the dependencies you bring in or update.
- Learn how to automate tests early on.
What advice would you offer to people considering a career change to programming?
If you’re considering a career change, my advice is this: The sooner you do it, the better.
Since I started so young and never really worked at anything unrelated to programming, it’s hard for me to give advice on a career change, but I’d say there are plenty of opportunities in the programming field.
There are so many languages and specialties to choose from that you’ll hardly ever get bored.
What you need in order to make your way into programming is a will to always learn new ways of working and to challenge yourself on a daily basis.
It’s going to be hard at first (what isn’t, right?) but the more you practice, the easier it will get, and the better you’ll be at it and, if you make the right moves, the more money you’ll make.
One last thing I want to say is this: Keep in mind that we live in a big world and technology is the same all over it. Don’t limit yourself to working locally.
Programming is a key to your freedom. Use it.