TLDR;
Got two medior developer offers. Opted for the inhouse job over consultancy (matter of preference)
Spent a year learning to code fulltime, FCC was a great help. I finished Front-end, Data-vis and first part of back-end
Lessons learned & other takeaways at the end
± 2000 words = 15-20 min read
Hi all,
You’ve probably seen plenty of these posts around and I wanted to add to the success stories by sharing my own! I got inspired by the success stories quite often and hope I can pass the inspiration onwards!
The history
Like many of you, my educational background is completely different. I have a degree in European Public Administration, however after finishing my study I decided that I wanted something less dull.
I found a job at a communications\public affairs agency as Product Owner for a web app for 9 months and got a job Project Manager at a small digital agency based on my achievements as Product Owner. However, the stress that I endured as a Project Manager was not my cup of tea and I quit after 4 months.
I took a break and asked myself, what now? I obviously liked computers, new technologies, however I always managed to find an excuse not to start programming. I tried Codecademy before but found it too superficial. Then I read about FCC in a blog…
FCC
I started FCC on december 26th, 2015. I was immediately impressed by the amount of messages and activity in the Gitter chatroom. Wow, so many people, so many messages and nobody is being a d*ck about noob questions…
I raced through the first challenges, motivated by the gamification and made my first portfolio website. Looking at it today brings a smile to my face how far I’ve come . I continued to the algorithms feeling that moment of euphoria every time I found the solution. This feeling still motivates my today.
I continued steadily with the rest of the front end curriculum and also started on the backend.
My freelance projects
February 2016, someone in my family wanted a mobile app and so I decided to take it at a horrible hourly wage, knowing that the experience and the project on my resume would be very valuable.
I made a very badly structured, spaghetti coded Ionic app, which miraculously worked. I’ve been refactoring this app in the last two weeks and although I’ve broken pretty much all coding standards and best practices, for the client it all remains the same (lesson 1: functionality > structure > performance).
The experience with Angular proved to be a major asset during my job interviews later on…
I also created two WordPress and one Drupal websites. Even though these paid some bills, I found working with WP (and to a much less extent Drupal) really awkward. A reluctance to learn PHP, frustration with templates and knowing that many people can now create their own websites using editors made me shift focus back to JS web apps (lesson 2: doing what you love is more valuable than short term monetary gains).
My own project
In the meantime I’ve done a few FCC challenges here and there and got my front end cert (March '16). But I always knew why I wanted to learn to program to create my own awesome, niche web app: Poldocs. It retrieves and searches through political documents from European, National and Local levels. With the learnings from FCC and experience from my other projects I felt super confident that I could pull it off. So in April '16 I started on my own app, full time.
I’ve never been so motivated in my life as I was when I started this project. I’d spend well over 50 hours a week coding away on this project. Then it bit me in the ass. I originally planned for it to be done at the end of August. I’ve made a planning, set up my scrum board etc.
Do to the async nature of the import scripts I quickly found myself in callback hell with highly unreadable code. Hurdle 1: Taming the async beast. It took me well over 2 weeks of reading and screwing around before I found the best solution. I played around with promises, function generators and async\await and having to learn ES6 in the mean time. I’m so glad I -reluctantly- moved over to ES6 and async\await, now I wouldnt want anything else (lesson 3: learn ES6\ESnext as quickly as you can!).
Hurdle 2 was just around the corner. Having tamed the async beast I had to model a back end. As I have various import sources with all different structures and formats I tried a one size fits all approach. It turned out to be a disaster, I tried to model all kinds of unnecessary metadata from different sources and got frustrated when other sources did not have that piece of information (Lesson 4: keep the scope small, stick to the essentials).
Furthermore, at this point I only did the challenges and 1 project of the back end curriculum and thought I was good enough. I wasn’t. I ended up making many rookie mistakes which I had to correct later on. For example, when you know a field\attribute of an object can contain multiple strings, always use an array. Even if it’s empty or only contains one string (Lesson 5: back-end and data modelling is hard. Ask help!).
I even opted for a multimodel database 'cause I though I needed graph functionality, I didn’t, which made the whole thing even harder. It is however a really cool database and you should check it out: Arangodb.
We’re talking October '16 now. By this time I’m demotivated by missing my own deadline various times, encountering my own newbie errors and having to fix them, money running out and GF starting to get irritated by lack of results. I hardly code more than 20 hours a week now and starting to get depressed and doubting myself.
I realize I’ve bitten off more than I can chew. I start to decrease the scope of my project and sticking to the essentials. It helps and slowly I start to regain my confidence, I get most the essentials working within a month, but I won’t bring it online till every essential is done. I still need to do full text searching and realize that my chosen DB is not adequate for this solution… F**k, I need to add Elasticsearch…
The job hunt
Money is running dangerously low now, tension with my GF rising. I need a job. ASAP. I wanted to finish my own project as the center piece of my coding portfolio, winged by my paid projects and built on a solid FCC foundation. I doubted that any company would accept a repo of a project that’s not even online as legit…
Early november, I see an interesting job ad: JS\Angular\React\Mongo, socially engaged. But it’s for a medior level… I decide to call the recruitment agency nonetheless (I did see this vid after all). I tell my story how I got into coding, what I’ve done and what I’m working on. I’ve read dozens of posts like these with tips so I know my most important asset at this moment is my enthousiasm. It works! The recruiter -let’s call him recruiter A- indicates that he’ll contact the company to see if they’d consider an entry level applicant with potential .
I feel so happy and proud. The next day I get a call from the recruiter that they’re open to my job application, but I shouldn’t get my hopes up as they’re already taking with several other candidates. That doesn’t hold me back! I start on creating my coding portfolio, showing off some of my FCC projects, paid projects and my own -to be finished- projects and send it to the recruiter.
I review what I’ve learned in the process, HTML5, CSS\SASS, JS\React\Angular, MongoDB, ArangoDB, Docker, Webpack, Ionic, Git, command line, linux, unit testing. Damn, I’ve come a long way… (Lesson 6: keep track of what you’ve learned and take a moment to enjoy that occasionally)
3 days later I get a call, they’ve opted for more experienced applicants. Bummer. But I knew it was a long shot, I’m a junior after all. So I keep searching for jobs, but nearly all require >2 years experience. I thought there was a lack of programmers?!
The next week another I see another interesting job ad, this time for a paid traineeship with a large sized IT company, focussed on Oracle databases, but now expanding into web apps. Includes paid training at their company… I might actually have a shot here… I call the recruiter -let’s call this one recruiter B- and tell my story again, the guy is super excited by my story and invites me to send my resume and coding portfolio. Next day, I get invited for an interview! Super Hyped
Next week I arrive at the interview, we start talking. I prepared for a technical interview, but all I get is questions about my personality and how I rate my own programming skills Hell, I don’t know, shouldn’t you guys determine my level?!. So due to a lack of technical questions I decide to profile myself more as a consultant. I leave the interview with a bad feeling, why the hell did I profile myself as a consultant when I’m applying for a programming job? (Lesson 7: Make sure you ask what the interview process will be like beforehand)
2 days of uncertainty follow. Then I get a call. I expected to be invited for a second interview, but it’s not the recruiter I expected. It’s the previous recruiter, recuiter A! As it turns out one of the guys they’ve offered a job backed out and now they want me to invite me to a job interview. Hell yeah, two companies baby! So I indicate that I’m willing to talk, but I also let the recruiter know that I’m in talks with another company (after all, I’ve read this amazing article on negotations). Unfortunately the interview will not be scheduled for another week and a half, wonder how this will play out…
The next day recruiter B calls and invites me for a second job interview and indicates that this one will be much more technical. The second interview with company B will be scheduled several days before the interview with company A…
Game day. Second interview with company B. I’m super nervous, barely slept, but I did my homework, saw they use a lot of angular, so I read up on that and also on testing as that is a part of development I’ve not done much with. I expected a whiteboard interview, but it was just some questions: what does Webpack do, can you explain the difference between an Angular service and Angular controller, what’s a REST API, how does lexical scoping in ES6 work… I know all that stuff! Feeling confident I start to fire back some questions which -according to feedback later on- also made an impression (Lesson 8: if you know more than the interviewer is asking, make sure you ask the recruiter about how they handle those subjects). I leave the interview knowing I’ll get an offer. Aced it!
Two days later I get a call. Company B is offering me a job! However, they said my level is not exactly right for a traineeship, they think I might get bored soon. Allright, so no trainee, I’ll take junior! The recruiter continues: “But junior is also not on your level, we’ve assessed your code quality with several programmers and although you still have a lot to learn we think a medior position suits your current knowledge”. OMG! They offer a very decent salary + lease car. Hell yeah! I let recruiter B know I’m super excited, but I already promised to go to the interview with Company A, so I’ll wait how that goes before committing.
After a few days I have the first interview with Company A. I’m super relaxed for this interview, I already have a job offer which exceeded my expectations so I don’t feel any pressure. However, I did my homework and I’m giving them a fair chance so I’m approaching it open minded. We talk about their product and they ask me a few really noobie questions, some of them: if I open a computer case what components do I find? Do you know ES6 at all? Do you know webpack?
I feel a bit insulted. Company B offered me a medior position and these guys from Company A are asking me these kind of questions, WTF!? So I counter: “Have you checked out my repos?”. The interviewer replies: “Yes briefly, but only some of them and they weren’t really that large.” So I think to myself, this guy didnt even read my code portfolio and just click a random repo for an FCC Backend Microservice. I keep my cool and respond that I will send him the link of the app I made (which I started to refactor a few days earlier and looks good now) and my Poldocs project.
And he checked it out. The end of the day I get a call from recruiter A that they also want to offer me a job based on the interview and my repos I sent. Furthermore, they also offer me a medior position, a higher base salary but no lease car. The recruiter indicates that they must be really impressed as they want me so much that they decided to skip the second interview.
Hell yeah 2 out of 2!
Now I have a decision to make. I havent told you about the backgrounds of these companies yet, but it’s rather fundamental to my decision. Both companies know I don’t do it for the money but rather what I can learn (however when you have two or more companies fight over you, it doesnt hurt to see if you can get more. Did you open this article yet? You should!).
Both companies have given me a detailed description of how they see my growth potential, Company A with a mentor for the first year, Company B in a small team of 4 devs based on equality, no manager, no hierarchy just the team picking up all issues together and discussing best way forward.
I valued both growth paths equal. But Company A is a consulting firm, meaning I’d be working on multiple projects each year being outsourced to different companies around the country (hence the car). Company B on the other hand is in-house, developing their 2 applications from front to back and even managing hosting in house and I’d be expected to contribute to all of that.
Both have their pros and cons. I think consulting is fun: interacting with clients, giving advice, meeting new people constantly. But consulting is also dealing with pressure, deadlines, commuting + traffic jams. You can fill in the opposite for in-house.
In the end I chose for going in house: at this moment in my career I want to work on 2 projects max, know those inside out and I did not feel like I was ready to deal with consulting pressure again. Furthermore there were also some other benefits like working 1 day a week from home, full time is only 38 hours there and a “13th month”. (Lesson 9: Figure out for yourself what kind of company you want to work in, maybe you feel like you should take whatever comes your way, but so did I and I think I’ll be happier this way in the end).
I’ll be starting January 2nd!
- Lesson 1: functionality > structure > performance
- Lesson 2: doing what you love is more valuable than short term monetary gains
- Lesson 3: learn ES6\ESnext as quickly as you can!
- Lesson 4: keep the scope small, stick to the essentials
- Lesson 5: back-end and data modelling is hard. Ask help!
- Lesson 6: keep track of what you’ve learned and take a moment to enjoy that occasionally
- Lesson 7: Make sure you ask what the interview process will be like beforehand
- Lesson 8: if you know more than the interviewer is asking, make sure you ask the recruiter about how they handle those subjects
- Lesson 9: Figure out for yourself what kind of company you want to work in, maybe you feel like you should take whatever comes your way, but so did I and I think I’ll be happier this way in the end
- Angular is used more than React in the Netherlands
- Don’t underestimate yourself: I though I was trainee\junior level, but both offered me medior in the end
- Try to find people (campers or other IRL) who can assess your level
- Try to find salary estimates based on your experience and location (if you’re from NL I’d gladly share what I’ll be getting)