My journey from ‘Being paid to work’ to ‘Being paid to learn’.
Compared to my Journey this Road feels like Paradise.
freeCodeCamp
Intro to me & how I came acrossBeing a creative guy since childhood I have always been interested in learning and understanding how things work behind the scenes but on the other hand I have always had hated computers till the age of sixteen because the system of education in my beloved country Pakistan is not up to the par and it made computer education too complicated and boring for me that I ended up deciding that I will complete my secondary education in Biology. But this all changed when a relative gifted us a Computer, This was the Game changer. At the start I only used it to play games but soon after my creativity kicked in I started to Bug around with files to see what happens inside the games. Doing so helped me find & learn about little hacks and cracks in some games, For Example I.G.I and Need for Speed Six: Hot Pursuit 2. At that time I didn’t have Internet access so bugging around with games became my Hobby because of which my friends & family started thinking of me as a computer geek.
Talking about my life as a student, Education system in Pakistan promotes cramming (forces memorization rather then learning) and doesn’t allow creativity at any cost. The ones who try to be creative get left behind and sadly I was one of those students who couldn’t perform well until they fully understand the concepts. This made me start to hate the education system and to believe that I was dumb because of my poor performance. I have always been on the look out for a system where I could self teach my self and learn on my own pace but so far I was unsuccessful in finding such a field or institute that allows this kind of stuff. When Internet came to my life I was very excited and did lots of research on this topic and found out that I could become a self taught Graphics designer but someone in my Family suggested my Parents that I should do a course on Computer Networking. Although I did this course with complete interest but this course wasted much of my precious time as a student and till now has been of no use for me.
Soon due to my Family circumstances I had to take on a Job in 2013 as a Technical Store keeper at Airblue (A Private Airline) through my Beloved Father’s help. This job kept me quite busy for almost 3 years and I couldn’t learn anything new, I also got married along the way. Two Months after Marriage in Jan 2016 I realized that I was getting bored with the repetitive type of work and wanted to do something to change mine & lives of those around me, So I started to do some research online about what and how can I learn something that has a market value and can allow me to study on my own pace and found out that Web development was the current hot topic and had a very promising future, I already knew about Codecademy and will recommend it to anyone who wants to learn the basics of web development or a specific programming language that is being offered, But I was looking for something more organized and totally free. I came across two options “The Odin Project” & “freeCodeCamp”, I did lots of research around the two and found out that FreeCodeCamp had much stronger and helpful community and was also focused on the MEAN stack which according to my research had better future then the Ruby stack.
Journey from ‘Being paid to work’ to ‘Being paid to learn’
Before you start please make sure you have free time as this is quite a long read. Also pardon my English and story telling skills if you find mistakes.
1. Ups & Downs
What I thought it would be like in the start.
After deciding what path I wanted to follow the first thing I had to do was to convince my Wife to help me in this Journey and to my surprise she was much more helpful then I thought. I set my goal of completing the whole curriculum by the end of 2016, My journey in the beginning felt like a straight path but soon Life started to happen and that same path became so rough and winding, The first month passed very smoothly and I was switching between Codecademy & FreeCodeCamp so that I could keep a smooth pace but after some time due to some Family issues I lost this pace and was away from coding for almost two months and this kept happening throughout my entire journey till now, I have exactly spent one and a half year with FreeCodeCamp but technically I only could spend 5–6 months on coding.
What my Journey Actually was like
So now the question arises that how I coped up with the gaps in between? Well on this I would say that everyone should have these gaps in order to establish what they have learned. I usually kept my self in touch with web development by reading some articles and watching some podcasts on Youtube which helped me to motivate myself so that I could get back to coding as soon as possible. I also found out that I was getting better each time I came back from a long hiatus. So according to my experience I would definitely encourage new learners to take rests instead of coding daily and do some article reading and listen to podcasts this will definitely help you get more result out of your hard work and will also help you get more motivation till you don’t get a Job. Web development or Programming in general is not all about coding but it’s also about keeping yourself up to date and constantly keep learning new things.
2. Approach I used to get the Job
After making the Local Weather App Project I started looking for Jobs and soon the Monster we developer know as Imposter Syndrome started haunting me, But I kept going on and registered on many job boards from which I would recommend linkedIn and Angel.co the most. Aside from just applying to Jobs I used to identify key people in the organization I am applying to and would politely ask them to review my Portfolio and CV which almost always leaded to a very positive reply from someone with in the company, These replies helped me to fight that Imposter Syndrome and boosted my confidence. After some time I revamped my Portfolio to make myself look more professional , Updated my LinkedIn, Updated my Twitter and Also Re-did my CV and made it more attractive so that I could approach potential recruiters with more confidence.
The Credit for my Approach goes to Dain Miller for his Awesome channel named StartHereFM on Youtube. More specifically you must see this video if you want more details on the approach I used. This guy really helped me to keep going through all this.
3. How I Got the Job
Following the above approach initially I got two companies from Malaysia to invite me for Technical Tests, Below I am sharing details on how it went with the two and what happened after I got rejected. The third company that interviewed me decided to hire me and belongs to my Homeland Pakistan.
First Company: This company was an online Info graphics company, I don’t remember where I found out about it but I applied for a Junior Javascript developer position their and got invited for a technical test online, their test asked me to build a Single Page App with the following requirements.
- Allows to upload images to a list.
- Images needed to be draggable.
- There should be a div based canvas on which these images will get dropped.
- Multiple images were to be dropped to canvas.
- All images should be moveable inside the canvas.
- All images should be able to get removed from the canvas.
- Had to be done with in 24 hours.
- Should use a Module bundler (Specifically WebPack).
Note: Scaffolded setup with express server was already provided to me along with images.
I did all the first seven points but was not familiar with WebPack (although I tried but didn’t know how to declare functions globally which lead to serious issues with my app) so I decided to send the project in it’s working state and after a week or so got an E-mail saying that I had failed the test. I don’t know why but I was still happy and enjoyed the experience I had gathered from this test.
After failing I focused more on Pure JavaScript and decided to build a Desktop App using NW.Js for Airblue this App taught me a lot about pure JavaScript and DOM Manipulations. This application is currently in use by the company. I am not really proud of it as there were lots of bad practices I used in it but the app works as it was intended to. The Repository for the App can be found below.
I also started being an active Member on FreeCodeCamp’s local study group in Karachi my Home City. Soon a guy named Abdul Moiz (A great Friend now) made a post asking for a meetup, I replied positively and the very next week we met up in a coffee shop which we call the first ever FCC Meetup in Karachi. Some weeks passed and we planned for our second meetup and posted an event on Facebook this time two more people showed up of which one (Muhammad Hasan) is now a meetup organizer with us as well. After almost two months we planned for another meetup and this time we did lots of hard work and brainstorming for the event. Our hard work paid off and 11 more people showed up in our event. Aside from our own events we also started attending other meetups as well, The most prominent of which is the Angular Pakistan Meetup. Attending other meetups gave us experience and ideas along side new connections that have really helped us reach our goals.
A picture from FCC KHI Meetup # 1 (Technically it’s third but is the first properly organized one)
Second Company: This was an Exchange Company from Malaysia and was a multinational company, I found this company using Angel.co and soon after following the company some one matched me and asked me if I was interested for an Online Hackathon which could lead to a potential job offer. I quickly agreed and one week after I got an invite on C9.io, This test asked me to build an app using there API based on WebSockets and returned JSON array. Requirements were as follows.
- There should be three dropdowns and only first should be populated with some data returned from API, Other two should be disabled.
- After selecting an option from First Dropdown second should get populated with Data based on the first selection.
- Third should follow the same suite.
- Should be done with in 4 hours.
This was quite easy for me Thanks to freeCodeCamp for the API projects, I was able to do it on time and submitted the test. At the end they told me that I am free to improve the App if I want, Just needed to inform them as I improve something. I took this opportunity and did some code refactorization and made the App visually appealing. After almost two weeks I got an Email saying that I Had passed the Test and was sent an Assessment form which I filled and then got Two interview calls after it. Interviews went well but I didn’t get any reply after the second interview. So I waited two weeks and then followed up only to face that rejection Email again. This Time I was told that they were interviewing more experienced candidates then me and would like me to apply again in the future. A bit disappointed I still kept on pushing myself.
Third Company: This company focuses on Web Application Development using MEAN Stack, I came to know about this company in Angular Pakistan’s Meetup # 1. The Technical Lead at Recurship Mr. Mashhood was one of the speakers in the event and is a very friendly guy. I spent a little time with him at the end of Meetup and talked to him about my interests and what I was doing, Then months passed by I got rejected by the Second company and then somehow found Mr. Mashhood on LinkedIn and added him to my connections, the same day he referred me to HR person in his company and I was invited for an in house Technical test in the coming weekend.
There were a total of eight questions in this test on topics listed below.
- Code refactorization.
- Finding out Mistakes in code.
- Doing code optimizations.
- Making class diagrams.
- Writing a complete mental model on a web scraping app and what tutorials I would follow.
After a week I received an Email saying that I had successfully passed the test and got invited for another test next week. In this second test I was given the task to develop an Employee Payroll Management SPA using any library of my choice along with Handlebars Templating Engine (Before this point I had never used one). Working on this app was quite fun I decided to go pure JavaScript this was very similar to the app I built for Airblue mentioned above so the App was quite easy for me to build but in eight hours time it was hard to complete all the features so I did my best and submitted the test on time.
Two weeks passed by and I received another email saying that I had passed the second test and was invited for an in person interview, The interview went very well as the interview finished the guy told me that I will most probably get a positive result and I should not worry much, He also asked me if I wanted to sit and have some Tea I took this opportunity and asked more questions about organization and shared more about myself and my journey.
Then within two Weeks I finally received that one Email because of which you are going through the pain of reading such a long story. This Email confirmed me for the position of Junior Web App Developer, I was also invited in house to discuss more about the Job offer and to my surprise I was given the opportunity to decide if I wanted to start as a Junior or Senior developer, Both these positions had their benefits and drawbacks but I settled for the Junior position keeping in mind that I didn’t want to disappoint my mentor by setting his expectations too high. Now two weeks have passed and I am enjoying my training period a lot, It’s fun when you are being paid to learn, I would also like to mention that I got this Job offer even before I completed my Front End Certificate, I still haven’t finished the Tic Tac Toe. A Huge credit goes to Quincy Larson for making a site I have been searching out for so long, Keep up the great work Quincy you are changing life’s and have changed so many already.
Talking about the company I would say it’s like Google or Facebook in it’s initial stages the culture this company follows feels alien to me if I compare it with other companies in Pakistan. Perks like Flexible timings, Monthly Evaluations, Monthly Performance bonuses, Once a week company pays for the meal and the best of all people can get promoted with in months if they are consistent performers are not very common in Pakistan. This company also has a tradition of supporting open source community and asks each employee to do open source contributions at least once a month. Actually this post is also a result of this Tradition at Recurship, I started writing this post while sitting in office on our mutually decided open source day.
The journey has just begin.
About FreeCodeCamp and my Future Goals
What is FreeCodeCamp
For those of you in my circle who don’t know what freeCodeCamp is, I would simply say that it’s a kind of university where you get to teach yourself and you get to select who teaches you. This University provides an open source curriculum you need to follow in order to be a successful Web Developer and that too on your own pace. FCC has a very huge and helpful community spread all over the globe and anybody can get benefit from it. Many people have been able to get their First Developer Jobs because of this Platform and the ones who already had a Dev job have gotten even better opportunities.
Read More about FCC by the founder himself
My future Goals
Being a FCC contributor and Meetup organizer I have set my goal to promote FCC in Pakistan and grow this community here so that more people could get better jobs like me. Alongside I will also continue and finish the curriculum so that I could contribute to the Non-profits FCC is working with.
Conclusion
In the end it’s all about Dedication, Hardwork & Consistency. Just set your goals and don’t give up no matter what.
Credits
Thanks Again Quincy Larson & freeCodeCamp for the life changing work you guys are doing there. It would have never been possible without you guys.
Links
Profiles
Portfolio & CV
- Portfolio v1
- Portfolio v2 (Current)
- Portfolio v3(Under Development)
- CV v1
- CV v2 (Current)