November 07, 2020
After sharing with you in my previous post how my learning part of the journey went, in this one I’ll talk about my experience with the interviews, how I landed my first job, and how I’m liking it so far. As in the first part, where I shared the resources I believe could help you in your learning part, here I’ll share some advice regarding the interviews. I hope they’ll be of use to you.
So, without further ado, let’s pick up where we left off.
One year after I started learning through FCC, I decided to start applying for jobs. Even if nothing came out of it, at least I’ll get some feedback on where I currently stand. The results were mixed, but overall good. Some responded and scheduled the interview, some rejected me right away, and some never responded at all. The response time ranged from the same day to one month, with the average being a couple of days, maybe up to one week. In general, I’d say the response rate was quite good.
The first interview was for a relatively small company with maybe 10-15 employees at the time, and it consisted of three steps. The first was an on-site interview, to get to know each other. They introduced themselves, talked about what they do, asked me to tell them about myself, and asked if I had any questions. All the usual stuff. An hour after the interview, they contacted me and said they’d like to proceed to the next step, which was the frontend task. We scheduled a time when they would send me the task, and since I had no prior working experience, I had unlimited time to solve it (usually, it was 3 hours). The mandatory part of the task was pretty simple — use create-react-app to set up basic React project and on the default page swap the
p tag with a rectangle that, on click, changes between black and two random colors fetched from some provided API (
color_1_or_2 → etc.). That part took me an hour. Bonus part was testing, which I never did before and couldn’t manage to make it work. They thought I did well enough, and we scheduled the last step, which was a backend task. I said I never did any backend, but they reassured me it didn’t matter, and that I’d be helped along the way. The step was structured remotely, where they hooked me up to their machine and gave me instructions through video call. They checked in on me every 15 minutes or so to see how I was doing and helped me if I needed. The task was some routing and authorization with Node.js and Express. I had 3 hours to do it and, with a lot of their help, I managed to finish it all (albeit in 3 hours and 20 minutes), which made me really proud of myself, considering I never did any backend before. However, a couple of days later, they emailed me saying they picked someone who already had a bit of experience, even though they were really pleased with how I did.
A short follow up from the future: about a year after this, they contacted me and said they’re hiring again, and to feel free to apply if I want to, since they liked me the first time. I said that I currently have a job and I’m not looking for anything new, and wished them luck in finding a new employee, to which they replied they’re glad when good developers find jobs they’re happy with. All in all, a nice interaction which shows that there are companies that care, which is always nice.
The third interview was my favorite and I really hoped it would lead to something. It was an established company, and the opportunity to learn would be immense. When they replied to my email, they said that the first step is usually an informal meet up where we just get to know each other, but since they were really busy, they immediately sent me the task and asked me when they can expect the solution. The task wasn’t simple (their approximation was 14 hours to solve it completely), but they said that they didn’t expect of me to fully solve it (or of any candidate for that matter) and that I can contact them any time I need some kind of help. The task was really well put. It was a frontend challenge where they provided all the necessary assets through InVision (layouts for all the different screens, all the images, logos, everything), and it was broken down into 5 or 6 levels of difficulty. They said to choose one level I find appropriate for myself and solve it, including all the levels leading up to it. I took a week to do it (maybe 25-30 hours total, but that’s what you do if you want to get your foot in, I guess) and, after seeing my solution, they asked me to come in for an on-site interview. The guy conducting the interview (frontend lead developer) said he was extremely pleased with my solution, considering my (in)experience, and we talked about what I could expect working there, what they were offering, etc. The next step was talking to HR, where they asked me the usual HR questions, and after that, they said they’ll contact me with their decision. A couple of days later, they called me and informed me that, unfortunately, they won’t be hiring me. They said they put on paper all of their current projects and deadlines, and realized they wouldn’t have the time to train someone new. If they were to hire someone, that someone would have to already be at some mid-level at least. In their defense, the job ad was kind of a frontend developer open application, where anyone can apply, and they hire you if you show knowledge or potential, either is fine. After they rejected me, they took the ad down, so I feel they where honest about their reasons.
The next interview was my least favorite. They replied to me one month after I emailed them, which I found a bit off-putting, since it’s not hard to make some automated response that your mail was received and that you can expect a reply in some time frame. Anyway, we scheduled an on-site interview and I went there at an appointed time. I entered the office and I still remember how dark it was inside, even though it was day outside. There were about 6 or 7 people, but no one said a word. Nothing. No hi. No hello. Nothing. And I was sure at least two of those people saw that I was someone new, and they were sitting maybe one meter away from where I was standing. I decided to break the ice after 5 or 10 seconds (it was probably less, but it sure as hell seemed longer) and said I came for the interview and asked where could I find Mr. so-and-so. The interview was nice, but after such an off first impression, I was only focusing on the bad parts, like low salary, amount of work, and using Angular (nothing against Angular, I just had zero knowledge). They said they’ll contact me with their task, but before they did, I emailed them saying that I don’t believe we’d be a good fit, and we should both continue to look further.
At this time, I decided to put applying for jobs regularly on hold and focus on learning again. I completed Jonas Schmedtmann’s JS course which was really dense and took maybe a month or a bit more to finish, but it was definitely worth it. I was still checking up on new job ads and when I’d find something I liked, I applied.
After a couple of no responses, one company (web development agency) said they found my CV interesting and thought I’d be a good fit, so they sent me their task. It was a simple web-shop app, for which they provided a list of five products and desired coupons and discounts functionalities. There was no payment functionality required. The solution I sent them wasn’t something I was fully pleased with since some things came up and I wasn’t able to fully commit to the task, but they liked it enough and asked me to come in for an on-site interview. There, we discussed my solution (they said I was the only one that added pictures of the products, that was something they really liked), talked about work conditions, and what they were offering. At the end, I did some personality tests. About an hour after the interview ended, my first job offer was on the table. Actually, it was in my email inbox, but you get the gist. Since I had a good time at the interview and felt I’d fit right in, I decided I’ll accept the offer if they bump the salary a bit. We negotiated that with zero issues and agreed on my starting date.
My first day working as a developer was usual, I guess. I got my equipment (MacBook Pro), they helped me set it up, and gave me all the needed credentials and access. The first project I was working on was their new website. The technology they used was Vue.js with Nuxt.js and, since I never used Vue.js before, they gave me access to a short Udemy course they bought and a few days to get familiar with the technology. I also started to use Git on a more serious level, and I’d say that’s the technology I learned the most in the beginning.
After two months, they moved me to another project, which I’ve worked on for the remainder of my time there. It was a backend project that used Elixir, Postgres and GraphQL. I knew nothing about any of those technologies, but with time and effort, I learned them and ended up really enjoying them.
After working at my first developer job for over a year, I realized what I want for myself and my career. One thing I didn’t like about an agency job is that you can end up working on many projects (not necessarily at the same time), each of which has its own stack. That way you can end up as a jack of all trades and master of none. I’m not saying that’s a bad thing, it’s purely a preference, but it’s a preference I don’t really have. I liked it the most when I worked with the same stack for a year. That way, I had the opportunity to dive deep into it and learn about it quite a lot. All of that resulted in me finding a new job with the company which is developing its own software. That way, I’m sure the stack will stay the same and I’ll have plenty of opportunity to become as good at it as I can.
Anyway, here we are. At the end of my journey to become a developer. All in all, I’m really glad I changed careers, even though I loved my previous one. And even though my journey to become a developer is over, a journey of being one is only starting. And I can’t wait to see what the future holds.
Before finishing off this long post, I’d like to share with you some things I’ve learned along the way regarding job interviews.
There are a bunch of articles, posts on Reddit, and whatnot, with advice about what to wear, how to behave, what to say, what not to say, what to ask, etc. on a job interview, so I’ll try to keep my advice short.
The first advice I’d give to you would be to just be yourself. I know it’s a cliché, but it’s true. More than once, I’ve been told that, above all, people conducting the interview are looking for someone they can see themselves working with. Everything else can be taught, to an extent. So if you like to crack jokes, crack jokes, if they ask you what you do in your spare time, tell them honestly. For example, I like to do origami, and I said so. It was something unusual and they found it interesting. It also gave us something to talk about, and an opportunity to break the ice and to relax. If you wouldn’t be a good fit, it’s best to find out right away, because you yourself shouldn’t want to work at some place where you wouldn’t feel comfortable.
The second important thing would be to prepare yourself. I searched on the internet for a list of most common interview questions, wrote the answers to them in a document, printed it, and learned it by heart. It was my way of tackling nervousness. Plus, you come off more interested and serious. This method is not something I’d say is a must, but it did help me a lot.
One of the questions you’ll surely get asked is if you have any questions for them. Always have them. My go-to are:
One simple advice would be to have a reason for everything you do in the task or for the answers you give. I noticed on one of the interviews that the interviewer was pleased that I was able to explain why I did something the way I did, even though it was wrong. It shows that your thinking about the problem at hand, and not just mindlessly copy/pasting something from the internet (even though you’ll be doing that every day once you start working :D). Also, if you don’t know something, just say that you don’t know it, it’s a perfectly valid answer. You wouldn’t want to work at a place where not knowing something and asking for help is an issue.
And as a final note, it’s ok to be a wreck going in for the first time. I know I was. But with every interview you’ll be more and more relaxed, and that will surely help with them taking you into consideration. So just keep at it and try not to feel too discouraged if you get rejected. A nice piece of advice I saw recently is that you can get rejected a bunch of time, but you only need to be accepted once.
So there you have it, my complete journey to becoming a developer, together with some side notes, thoughts and advice. I’d like to thank you for staying with me through these two posts, and I hope you got something useful out of all of this. As always, if you have any questions, comments, advice, or anything of that sort, feel free to ask, post, critique, etc. I’ll give my best to reply to or read all of them.
One final thought I’d like to leave you with is this — don’t quit! I did so myself three times, but I always came back to it and kept going (or started again), which paid off in the end.
I wish you all the best of luck on your journey and I’m looking forward to reading your journey posts one day!
Have a nice day and see you soon! :)