Developing Early Hatred of Programming
My parents made a HUGE mistake when I was 15 years old.
They got me my first computer (This was not a mistake), but then they put me in a beginners course to learning computers. Turns out, it was a programming course. Yup, it was a bad idea for a kid like me, who didn’t know how to use a computer yet.
Well, they didn’t know any better. They trusted the lady who recommended the course.
I went through the agony “Trying” to learning programming when I actually didn’t even know the basics of computers. It was brutal
- The instructions went over my head,
- I could not understand the assignments,
- My code was buggy,
- It was a hit or miss to make even the simplest things to work
- I would stare at the screen for hours, and would be glad when the session was over.
Thank God, the tests were multiple-choice questions! With some guessing and sneaking over other students answers, I barely passed the class.
From that point on, I hated programming and thought I would never do it in my life.
Subconsciously, I developed this belief “Coding is not for me”.
Exactly 10 years later, I found myself wanting to learn coding.
Remember, I didn’t have to learn to code, no one asked me to, somehow I badly wanted to learn to coder. I chose to become a coder.
I went from someone who literally hated programming, to someone who loves programming and landed a six-figure job as a first-time developer.
Self-fulfilling prophecy “Coding is not for me”
In early 2011, I was building a tech company. As a single-founder of the company and on a shoe-string budget. I had a single developer working for me. Funds were running out, and I didn’t have a stable developer working for the company.
I knew HTML and CSS (Due to my Photoshop and Web Design Background), but coding is different, very different.
I was in a vulnerable state! I was running a tech startup and I didn’t understand its tech. pretty bad. I didn’t have a co-founder to complement me in my skills, a technical co-founder would have been nice. This meant that I was totally not in control of how the technology ran.
My different developers could:
- lie to me on how long a certain assignment took
- take down the website and hold me hostage
- be unavailable due to any emergency
- simply produce low-quality buggy application and justify how hard that bug is to fix due (hiding their poor skill-set)
With that, I had a low budget to sustain even a single developer on a full-time basis. This forced me to learn Ruby On Rails. The framework we used for our startup at that time. Yes, at that time I was forced to learn.
I bought a Rails course from Udemy, I read the Rails Tutorials on the official site, I read a popular book on rails twice and followed its instructions at least 6 times. No exaggerations. This helped me at least understand what was going on. 3-4 months into this and I still could not develop event the smallest enhancements to my web app. I didn’t have the confidence, resourcefulness or the understanding to code. I was at the mercy of my developers.
I could definitely conduct a conversation about coding, that would have sounded very intelligent on the surface, but honestly I didn’t have anything to show for it.
I gave up on Rails in late 2013.
My self-imposed belief “Coding is not for me” became a self-fulfilling prophecy.
There is a beautiful stopwatch app, I installed from the Chrome App Store. I really like it since it helps me stay productive. This app was missing a feature. What if I could record my tasks while I time myself. The task feature was missing from this stopwatch app.
I thought to myself, what if I created my own app with this feature that I want. On second thought I said, “forget it Aziz! you can design websites, but coding an app is not for you.“ Self-imposed belief talked me out of it once again.
Listen: This is not a small thing, its a breakthrough.
The tables turned, I wanted to Learn to Code Now
Now I wanted to learn coding, I wanted to build that StopWatch Task app, I wanted to be fully express my ideas because now I saw I could be that person who can actually realize my ideas into reality without relying on other people and without going through the agony of hiring.
I was the master of my journey and destiny again.
I began to learn and implement my code in a structured manner, and soon got the confidence to update my resume, and start interviewing.
At that point, I also came up with the Idea of iLoveCoding. A website that would teach in a way the got me to love coding, in a way that speeds up learning, in a way that makes a developer great.
Jumping Into the Water, and then learn to Swim
I had a ton of experience designing websites, but designing and developing are two totally different skill. In fact, you will notice that most developers are not designers and most designers are not developers. I decided to jump into the job market and test the waters. I updated my resume and there were a few key things I got right
Focus on your Website Design and Development experience
Now I had done, E-Marketing, Project Management, Web Designing and had run multiple startups as well. In all of my experiences, I had touched the web. I updated my resume and focused my experience to highlight all the ways I had worked on Websites.
- Using a Content Management System, like Drupal, WordPress, Joomla, Adobe CQ etc.
- Designing Websites, in Photoshop, HTML and CSS
- Some jQuery copy pasting I did to make some Web features work
- Strategizing Website Design
- Managing Agencies in Web Development and Website Migration Projects.
- Managing Teams to build Web Applications and enhancing its features.
- Search Engine Optimization
Now the above is good, because, it highlights I am in the Web Business, but It doesn’t highlight my development skills.
List your Development Skills in the Skills section
I updated my resume ethically, didn’t exaggerate, nor lied. If I didn’t know EmberJS, it was not in my resume. If I started learning it, it made its way into my resume. There is absolutely no point in lying, Truth always comes to the surface without exception. If I was asked in detail about my experience with that particular technology, I would tell them.
Attracting Recruiter Calls with my Secret Weapon
These recruiters are given a job description from the big companies, and they scan for keywords within the job description. Next, they go to Dice.com and find any and all resume’s they can find which has the keywords in them. Yes, they are humans, so they try their best with their limited knowledge to find a good match. Next, they start making the calls to potential job candidates (like me).
Although there are many robotic recruiters, the successful ones are aware about the technology and market they are recruiting for. They are not professional technologists, but they know enough to intelligently screen people.
Giving 3-4 Interview per week
I failed half the interviews I did in the beginning. They asked me technical questions, gave me code tests etc. and with every subsequent interview, I would get better. Listen, highly paid professionals were spending an hour at a time with me and that cost me nothing. They were helping me get better and practice interviews for free. The interviews I failed, I categorize them as practice interviews.
With time, I got better with coding and my interviews started to get a little better. Now I was passing more interviews and I was going to the offer stage. Finally, I got 2 offers at the same time, both offering me 6-figure compensation per year, and I had the liberty to choose. I accepted one of the offers, and I was officially a Sr. Developer for a Fortune 1000 company.
I did approximately 12 interviews, and in my busiest week, I did 4 interviews. The market wanted a person with my skill-set so badly that I never had to apply to a single job.
The plethora of jobs in the market allowed me the luxury that I could do an interview, fail at it and still not be worried about missing an opportunity. I knew the next opportunity was going to come to me the next day.
Here is why being a fresh Developer, with little to no experience, I still managed to command a 6-figure income.
- I negotiated my income with the recruiting agency before my resume was submitted to the Company. Recruiting agencies are given a budget by the company. So they are really upfront about the numbers from the first conversation. If they don’t bring it up, I brought it up early before I gave any interviews.
- I gauged the market, by letting the recruiting agency give me their number first. I kept my mouth shut when I was asked for my expected income. When they told me their number, I was happy to learn it was already high. There were many lower income jobs as well. I screened them out from my initial conversation. I knew from so many calls, what the market rate was.
- I was open to Full-time, contract and contract-to-hire positions, which typically pay more. Yes, contact jobs do not offer Employee benefits, but the rate of a contractor is high enough to justify the benefits not being included. (I did my math, let me know if you’d like to learn about that more.)
Contact positions have a finite term. You could have a 3 month, 6 month or 1 year contract. Personally, these contracts ALWAYS renew, because they need people, and the work is there. I felt no difference working as a contractor vs a full-time employee in the 3 companies I contracted at.
Your path could be faster. What I learned from my journey to learn to code, is all in iLoveCoding Tutorials and Screencasts. Join iLoveCoding Pro today, and accelerate your path to becoming a Great Developer.
Author: Aziz Ali