My First Year Of Learning To Code

Photo by Max Duzij on Unsplash

It has been little more than a year that I started programming. Even though I was part of the Indian tech community (worked for tech companies like Flipkart, MuSigma), I mostly worked as an analyst with very minimal programming being done on a daily basis.

So, last year March, I officially(and finally) decided that I want to learn coding full time and make a career out of it. Below is my experience of the first year into learning to code and a few learnings during the journey.

Journey

First 3 months — (Coding is hard!!!)

I started learning to code on my own from March of last year. I was still working fulltime as an analyst. I spent around 2–3 hours every day into coding. Mainly I started with HTML, CSS & JS from freecodecamp.com.

Even though the learning was good in the first 2–3 weeks, the moment I had to get into little complex topics, I used to quickly get demotivated. HTML/CSS/Bootstrap was good but the moment Javascript started and I had to wrap my head around basic programming concepts like loops, function, etc, it became difficult.

As I used to work mostly during the evening after my work for only 2–3 hours, one bad session of coding used to make me feel like I am not born to do this and maybe I should stick to being an analyst and pursue non-technical/semi-technical roles.

This stopped me from making continuous progress and the next 3–4 weeks were very unproductive.

I decided that working fulltime and learning on my own is not a very good option for me(This can differ from person to person. I have seen people who learn on their own while working full-time). So, I started researching alternatives. I browsed about all the online courses which had good reviews, read about bootcamps & online mentor based teaching platforms. I also found out some local meetups(in Bangalore) that were related to coding.

After all the options listed down. I felt a full-time bootcamp made sense for my case.

I applied to 3 bootcamps — Jaaga, Geekskool & AltCampus. All 3 were full stack bootcamp programs based out of India. After a simple screening process, I got selected for the AltCampus bootcamp program. The best part of AltCampus was that it was based out of Dharamshala(A remote rural place near the Himalayan belt). Perfect distraction-free setup with a small tech community.

I quit my job. Relocated to Dharamshala & started the 6-month program.

Middle 6 months-(Learning to code)

As most of the bootcamps, AltCampus was a mentor-driven 6-month program covering MERN(MongoDB, Express.js, React.js & Node.js) stack. The first 4 months went into learning the tech stack and last 2 months into working on full-scale projects and applying to companies.

From day one, I felt comfortable with the setup. A mentor to teach the basic concepts and batchmates to discuss concepts and clarify doubts, I started to systematically learn concepts one by one.

In the first 4 months, I learned HTML, CSS, Javascript, Version controlling, a frontend framework, a backend framework. As I was not immediately looking to apply for a job, I mostly spent my last 2 months into working on a couple of projects.

It was not just the curriculum of the bootcamp, I referred to some of the Udemy courses, FrontendMasters courses and a lot of online content from different sources on the Internet. This helped me in learning to learn on my own.

By the end of the bootcamp, my dilemma of “coding is very hard and only smart people can learn coding” had become a myth.

Last 3 months-(Web developer to Software engineer)

When I quit my last job, I had made sure to save up enough money to take a break of 1–1.5 years to spend time on learning to code. So, I was not in a hurry to get a job.

Along with that, by now I understood the different tech roles that are out there and what kind of skillset are required to get a specific job.

The bootcamp made me a person who can be a good web developer but nothing was taught that made me close to a software engineer. If you are confused about what the difference is, according to my limited knowledge, it is,

Web developer: Knows web frameworks, basics of the browser, the server, tools ( version controllers, bundlers, IDEs, etc). Has experience in building applications.

Software engineer: Knows computer science concepts like algorithm, data structures, networking, database, programming paradigms, design patterns. Has experience in coding but not necessarily building complete web applications.

I decided that I wanted to get into a software engineer role than a web developer role. So, I listed down the concepts that need to be covered to clear a software engineer interview and get a job.

The concepts that I had to prepare were,

  • Problem-solving
  • Algorithm & Data structures
  • OOPS & Design patterns (Basics)

So I started my self-study plan. I kept a cut-off of 3 months maximum to cover the concepts.

I started a Udemy course “Data Structures and Algorithms in JavaScript”. Along with it, I started to solve problems on Codewars & HackerRank.

I finished the course in a month. Solved 100+ problems on both Codewars & HackerRank.

I have recently started to solve the problems given in the book “Cracking the coding interview”. Also, I have started to study OOPs concepts.

Next steps — (Time to work!)

Work as a software developer

I have started applying to companies for the role of a software engineer. The plan is to get into a good company and work as a software developer for at least 2 years. Parallelly continue to learn computer science concepts. Then see which specialty seems good for me and work towards that.

Learnings

To anyone planning to start learning to code. Here are a few suggestions according to my experience.

1. There is no perfect path

Don’t look for the best programming language to learn, the best way to learn, most important concepts to learn. Just start off with one specific thing and finish it.

I have seen people start multiple online courses & read a lot of books parallelly but not finish any of them. In my opinion, this will lead you nowhere. Instead, start 1–2 courses and finish them. This will help in keeping yourself accountable and learn better.

Also, the more you learn, you start to get clarity on what interests you and which specific path you want to take. Don’t waste time on trying to figure this out during the first phase of the learning.

2. If coding alone is not working, find a community.

I have seen some people who are very good at learning things on their own but if you are like me, who is not a very good self-learner, look for a community of like-minded people. It can be an internship, a bootcamp, an active online forum or a local tech community.

Use communities like Coding coach & Devcord to reach out to other developers of different experience level & learn from them.

Just being around the fellow learners and talking to developers helps in holistic learning. Small things like IDE shortcuts, small hacks in the code, better practices, pitfalls to avoid are learned mostly while talking to people.

3. It’s not a sprint, it’s a marathon.

The more you learn in coding, the more you realize the vast things that are yet to be learned. So keep in mind that this will not be a quick 6 month or 1 year of effort. Be ready for a career of continuous learning.

Also, pace yourself. Do not push yourself to the limit and burnout in a short period of time. Create a lifestyle which enables you to learn continuously.

4. You don’t have to be a genius, you have to be persistent.

It is not the smartest people who become better coders, it is the persistent ones. So, never feel that this career is only for smart people. I have seen a lot of persistent people who are 10 times better coders than smart people who have put fewer hours in learning.

All these points might sound very cliché but I felt that these are things that I wish I had known while learning to code.

The first year of learning to code now feels like just the starting point for the long upcoming journey of learning. Hopefully, I will be writing an article next year on year-2 experience : )

Coding/Data science/Analytics