I'm pleased to share an interview with Nadia Zhuk, self-taught web developer who became a software engineer after 9 months of learning to code. Nadia is a Ruby developer at Zendesk and nas recently written a book about her experiences of switching to web development. Enjoy!
Hey, so can you introduce yourself?
I’m Nadia, and I work as a Ruby software engineer at Zendesk.
At work, I design and build backends for payment processing and subscription management for Zendesk Sell, which is a beautiful sales automation tool built with salespeople in mind. Outside of work, I read a lot and publish a monthly newsletter about the best books I read. I am currently on book 96 of 100 books I planned to read in 2020.
I am also an aspiring writer. I’ve recently published my first full-length book “Crossing the Rubycon: How to Learn to Code and Build a Programming Career”, where I tell the story of how I went from being completely non-technical to being employed as a programmer in just 9 months. I am self-taught, and with my book I wanted to show that you can still become a successful programmer without going to college or a bootcamp.
I currently live in Kraków, Poland. I’ve previously lived in Bulgaria, Belarus, and Israel. As I like to joke, while others travel, I immigrate.
What does a typical day as a software developer look like for you?
My workday starts with a standup with my team, and most of the day is filled with typical engineering work. I am lucky not to have many meetings (we even have no-meeting Wednesdays in place). This means that I have larger chunks of uninterrupted time for deep work when I can focus on whatever needs to be done.
The exact tasks I do depend on the project and on the role I have in it. If I am the lead developer on the project, much of my time is spent on discovery work, analyzing product requirements, exploring the current state of the codebase, coming up with the technical solution, estimating the amount of work necessary, and making sure everything that needs to happen happens on time.
If I am not leading the project, then most of the time is spent writing my own code and reviewing my teammates’ code. Since I mostly work on the backend, I get to design and write APIs, work with databases, write unit tests. When it comes to the tech stack, I feel blessed to have an opportunity to code in Ruby, since its subtle beauty still hasn’t lost its hold over me. I also enjoy and appreciate the predictable and structured nature of working on the backend.
I had very high expectations for working at Zendesk, but all of them have been exceeded. From day one I plunged right into delivering code for critical company-wide projects. During the first few months at Zendesk, I learned more than I had learned in the previous year of coding professionally. So I am definitely happy I joined this company.
How did you learn coding?
I started learning Ruby with Codecademy’s Ruby tutorial, which gave me an introduction to this language. After that, I went to Michael Hartl’s Ruby On Rails Tutorial, which is the best online resource on Ruby on Rails. While it worked for me, with the benefit of hindsight, I think this tutorial might still be too advanced for someone completely new to coding.
If I could go back in time, I would devote more time to studying the general principles of web development before studying the principles specific to Ruby on Rails. Here I can recommend Michal Hartl’s series of introductory tutorials called “Learn Enough to Be Dangerous.”
I also worked through a few Ruby books: Agile Web Development with Rails 6, Programming Ruby, Rails 4 in Action, Rails 5 Test Prescriptions. After that, I started building my own projects, which allowed me to apply my theoretical knowledge to practical tasks.
The mistake I made was that I stayed in the tutorial and book phase for way too long. I should have started building my own apps at least a few months earlier than I did. It would have definitely accelerated my learning.
I talk about all of the steps I took to teach myself to code in more detail in my Crossing the Rubycon book.
How have you experienced software engineer interviews?
I’ve interviewed at numerous tech companies in Poland, yet I’ve never had to go through an interview where I needed to implement an algorithm on a whiteboard (though I was asked to design the architecture of a web app on a whiteboard once).
On a few occasions, I had to complete a take-home coding task which usually involved building a new Ruby on Rails app or adding functionality to an existing app. The second step of the interview process was usually a live pair-programming session that was done either on-site or online. During such sessions, I needed either to fix a bug or add a new feature to the app.
Once I was asked to implement an algorithm on my own computer, which was definitely much less stressful than doing it on a whiteboard would have been. There was another interview where I needed to write some SQL queries on a piece of paper which might sound scary, but in reality, the queries I needed to write were pretty straightforward and it was fairly easy for me to complete the task.
I also had a very interesting interview once where I was asked questions about Ruby as a programming language: what is a class, how are private methods different from public, what’s the difference between classes and modules, etc.
Do you have tips for people who want to learn to code without doing a degree?
- Learn to google as early as possible. New coders are often reluctant, afraid, or ashamed to turn to Google when they are stuck. However, googling is an essential part of the job of all programmers: juniors and seniors alike. Over time, the process of coming across some real-life problem, typing a search query into Google, finding a solution, and then applying it, will help you fill in the gaps in your mental grasp on abstract programming concepts.
- Work through a few high-quality coding books. A programming book author usually goes through the motions of building an app and explaining to you what is happening and why, while video tutorial authors very often skip explanations and leave you wondering what is happening. Don’t just read the books though, follow along and build the app on your computer.
- Start building your own projects as early as possible. This is one of those tips that sound very simple, yet are difficult to follow through. Building something on my own scared me, so I put this step off for as long as I could. Don’t do it. Until you build something from scratch, you will have no idea how much you really know—or don’t know—about programming. Also, please remember, that your first projects don’t have to be perfect. Focus on making them work first, improve later.
Can you tell us about your Crossing the Rubycon book?
“Crossing the Rubycon” is the book I wish I could have read three years ago when I was teaching myself to code. Plenty of resources for code newbies existed back then, but I couldn’t truly relate to most of the stories I read or watched.
I saw that most of the authors who described themselves as being “non-technical” and learning to code from zero weren’t really “non-technical” when they started learning to program: most of them had had some experience with coding in their teens or college years.
Conversely, I was a complete stranger to tech before I started learning to code: I had no CS education in school or college, and until I was 25 years old, I had no real understanding what coding was or what programmers did. I belonged to that annoying category of people who are afraid to change a setting on Windows because they might break the computer. Despite that, I taught myself to code and got a full-time engineering job in just 9 months.
This book walks the reader through the exact steps I took to achieve all that and shows them how they can break into tech as well. I packed the book with lots of insider tips and practical strategies that will help readers learn to code, find their first coding job and build a successful career in coding.
What are your career goals for the future?
First, I plan to learn more about designing complex systems and optimizing their performance. Second, as I move towards more senior roles in engineering, the scope of my work will continue to increase, so I will definitely need to learn more about managing projects and people.
Outside of my direct job responsibilities, I’d like to contribute to attracting more people of non-standard backgrounds into software engineering. I would love to see more people benefit from the exciting and well-paid jobs in tech. Hopefully, my book will help make this dream a reality.
Thanks for the interview!
If you enjoyed this article please send it to a friend
And you should totally sign up for the newsletter
If you are job hunting, head over to the job board for entry level software engineers