Meet Andrew Snelling: a high school teacher now full-stack developer
How do you become a full-stack developer in 6 months? TL;DR: code your face off, keep asking questions and never stop learning!
It all started from being a high school teacher
Let’s start at the very beginning: A year ago, my only coding experience consisted of a few lines of HTML on my MySpace profile (yes, I am that old ;-)). We were just celebrating the birth of our son amidst what we thought was the end (oops) of the pandemic. I was cruising into my summer vacation after a ridiculous but overall successful school year. It was the end of my 4th year teaching Business and Philosophy at high school level and I had been in education for over a decade (outdoor education, freelance English language teacher, teacher trainer, and finally high school).
The summer was like most others, lacking only international travel. I got to spend a lot of time with my wife and baby, and I was expecting the next school year to start in September with things basically back to normal.
I really liked teaching. Sharing my knowledge was very rewarding, and working with high-school aged students was very interesting. However, at least in the school I was working for, there was a very hard ceiling regarding career growth, and realistically, even in terms of personal and professional development. If the work culture at many tech companies is “no bullshit”, I was stuck in an “all bullshit” culture. It was downright toxic, and most of that toxicity was a direct reflection of the management, their lack of managing the more difficult employees and appropriately catering to students’ needs. I realized this on my first day, but I turned a blind eye for most of the time as it did not directly affect me.
This brings us to the first day of school in 2020. After the regulations and restrictions in the Czech Republic had disappeared, there was, unsurprisingly, a huge surge in Covid-19 cases just as students were heading back to school. The school director was determined to keep students and teachers in the building for as long as she possibly could and made her wishes known from day one. I could elaborate on the details, but at this point, it doesn’t matter. It was clear that the lockdown in the spring had pushed her past the point of caring about staff and students’ physical and mental health and safety. And this made me start looking for a new job.
At first, it was a very unfocused search. What could I do? No one was hiring teachers after the start of the school year. Could I transfer my theoretical knowledge of Business to another field? HR? Marketing? After a few interviews and lackluster offers, I realized I was looking in the wrong place. I truly enjoyed understanding how businesses operate and realized this is an essential part of many people’s work lives. However, it became apparent that I could not find a suitable job because I was not passionate about these things. So, where did my true passion lie?
Technology! I’ve always tried to keep up to date with trends in consumer electronics, software and apps that I use. But going to university to study computer science didn’t seem like a viable option. However, I had heard more and more about coding Bootcamps. So after some shopping around, I chose one (shout out to Coding Bootcamp Praha), paid the tuition fee and started with the pre-course materials.
It’s called ‘Bootcamp’ for a reason
Am I allowed to swear? Holy shit. First day, mind blown. And this was only the pre-course material. I couldn’t help but feel I was in over my head. I spent my fair share of days staring at freecodecamp’s screen for hours, my eyes glazed over, thinking how easy it would’ve been if I had just stuck out this school year. I could be sitting on my couch doing the occasional video lesson. What had I gotten myself into?
The Bootcamp started in January, and the Covid situation was bad. Curfews, lockdowns, the whole shebang. So we started on Zoom. “Maybe in February, things will open up…”
First topic, HTML — no problem. Then CSS (not great, not bad), a touch of Git (okay, confusing but makes sense). Then two weeks of Javascript. I had made it through the pre-course material, but this was next level. Followed by two weeks of PHP, which set my head spinning.
February, things were not improving. “Maybe in March we can move to the classroom …” At this point, we started working with frameworks (React and Laravel), and things started to come together. We were working on bigger projects, and the connections between front and back end became clearer.
It’s March. The pandemic continues to get worse. There were no more maybes. There wasn’t even a conversation. We were the Zoom batch. And then they more or less set us free to work on our final projects.
I teamed up with other students. We had our planning meeting, set up a Kanban board and about 20 minutes into planning the database model, we realized there was no way we could do what we wanted to do in the time we had. So without even knowing what grooming was, we went back over our board and started narrowing down the scope. Having outlined a couple of epics and decided who would work on what, we got cracking. It was a constant battle: battles with the code, battles with converting files, battles with libraries, and, to be completely honest, some small battles between us. That said, the wins were big because they were ours. And as the project progressed, we were feeling pretty good about it.
So after three months of Bootcamp, in lessons or coding for 10+ hours a day (including most weekends), we released our project, HikeCzech (you really don’t have to click on that. No, really, don’t!). We had our online graduation, got our certificates (humble brag, I finished in the top 20% out of 12), I slept for about two days and woke up unemployed.
This was the first time in my life that I was actually unemployed. As in “No idea what comes next.” Luckily I still had a couple of months of unemployment benefits, but I was not used to not having a job, and it did not feel particularly great; especially with a new baby and a wife still on parental leave. In the job guidance sessions offered at the Bootcamp, they said some companies’ interview processes might take a couple of weeks. That was understandable. I used to tell my students to “hire slow, fire fast.” We were by no means going to be out on the street, but I was hoping to start working in about a month. Ideally at the beginning of May, June would still be fine. I could definitely hear a tiny clock ticking.
$%^&, I landed the job!
So it was back to coding and applying for jobs. I created a profile website to send out with my shiny new CV. Completing hiring tasks and working on side projects made for another month of long days in front of the screen. I spent additional hours on Zoom with cultural and technical interviews. I talked to every friend of a friend who works in development or at a tech company (a surprisingly high number). I sent out about 30 applications and heard back from about half. I completed four projects, each a few full days of work (one with a 24-hour time limit, just to add to the stress). I turned down one offer (the money was fine, but the work didn’t seem that great).
I applied at Pipedrive, but the very next day, I accepted an offer for a position as Front End Developer at a different company. Turning them down a week or so later saying, “Thanks for the offer, but I got swept away by a unicorn!” sure made for an awkward conversation.
I found the Pipedrive ad late in the process. One of my classmates in the Bootcamp had also applied and didn’t pass the technical interview. So I did my research, asked around a bit and was very impressed. As happened with a number of the companies I’d applied to, I was expecting never to hear back. Spoiler: I did. After the culture interview, I was sold. But then there was the technical interview. Luckily, I knew how to do FizzBuzz, but I was sure I had blown it. Spoiler: I didn’t. And with that, I was in. Living the dream of being a full-stack developer at Pipedrive.
We all had the same first week doing product onboarding, so I’ll skip that and talk about my first week in engineering. May I swear again? Holy shit. You have how many repositories? And they’re all microservices? Kubernetes, great! Here we go again: I’m in way over my head.
On to my supportive yet intimidating onboarding days
Let’s slow down for a minute. The onboarding process is outlined very clearly. Each tribe is unique, but all of them provide many resources and lots of support by teammates who have been at Pipedrive for a while. That said, the code base is massive and abstracted. There are in-house tools, third-party tools, open-source tools… To be honest, it’s downright intimidating. Even today, at times, it still is.
Sometime during those first few weeks, I had my 1:1 with the engineering manager. He suggested taking part in a mission sooner rather than later. A couple of missions were being pitched, so I went to the Missions tool, clicked “interested” in one and went on doing my Launchpad tasks. Upon joining, I told the team I was much stronger in front-end development than back-end. However, the Launchpad backlog was full of back-end tasks. But, hey, I’m a full-stack developer, so let’s do this!
After a couple of shorter onboarding tasks, I took on bigger ones like making changes to the Leads API. Now, you’ve got to know this: To that date, my API experience was in PHP only. Pipedrive’s API is used by developers inside and outside of Pipedrive and therefore publicly documented very well. I would not only have to implement the logic but also document it.
It took longer than it should have. There were struggles with the development environment, struggles with the code, lots of reviews and check-ins with my buddy, and days that I finished with only a few new lines of code. But, ultimately we made it work with new information about Leads being sent out on multiple endpoints. The information was documented.
It was a real rollercoaster: Frustration, small victories, tasks added, code reviews returned with lots of comments and change requests, bigger victories. But the ride ended with a fair amount of pride. Pride because I did it; because I had figured out a fair amount of it myself, wrote the tests, passed the deployment checks. Finally, pride because changes to the API are announced to the whole company with the dev who worked on them tagged. It was this kind of recognition that I had never experienced when working as a teacher. It is a thankless profession, and people who teach know that. That said, it is fantastic to have your work and your achievements acknowledged and appreciated. I have experienced this over and over again at Pipedrive. Your colleagues see and appreciate what you do, and no one is stingy with praise.
Remember that mission I was interested in? At one point during all that API work, the Mission Lead pinged me, asking if he could officially add me to the mission. I said “yes,” and before I knew it, I was getting mentioned in Confluence pages, getting invited to pre-mission groomings and tech talks. I found myself in over my head again. But this time, I have a little more confidence in my abilities and am looking forward to this new challenge.
I̶n̶ ̶c̶o̶n̶c̶l̶u̶s̶i̶o̶n̶ My journey has only just begun…
Having read a few too many academic papers, I dislike when people start their conclusion with “In conclusion, …” So now that I’ve sidestepped doing that: I cannot say enough good things about my first few months at Pipedrive. I (probably) have a case of imposter syndrome, but the supportive environment here has genuinely got me through the more challenging days.
There is probably a learning curve for every developer when they start at Pipedrive. However, that curve is even steeper for a junior, especially one who only started coding a few months ago. Everyone who works here wants everyone else who works here to grow, succeed, and enjoy their work. My journey has only just begun, but there is no question that this is the place that I was supposed to take my first steps.
Interested in working in Pipedrive?
We’re currently hiring for several different positions in several different countries/cities.
Take a look and see if something suits you
Positions include:
- Junior Software Engineer in DevOps Tooling
- Junior iOS Developer
- Junior Data Platform Developer
- Quality Engineer
- Software Developer
- And several more