Guides

How to become a Developer

Intro:

Table of Contents

Technology is solving a lot of issues in the world. Thousand of workers’ efforts can be reduced in a company by just introducing software to them. These all are the reasons a lot of people want to become software engineers or developers and they love to help people by building something that can solve their problems. Software Engineering is one of the highest-paid jobs in the world but you really need a lot of patience, constant learning, and constant improvement in this field.


For newbies, it’s difficult to find out where to start and what would be the best path to become a software developer or engineer. We are going to discuss some options and a general path that will help you to enter this industry as a developer:


At Moocable, our mission is to help students get into Tech - with the help of MOOCs. Today, you have access to world-class courses, hosted freely on the internet. All the courses/tools/resources that I will mention are 100% freely accessible. In the post-content era, you should not pay for material that’s freely available on the internet.


Additional Read:
A Guide on How to Sign up for Coursera Courses for Free
A Guide on How to Sign up for edX Courses for Free


This comprehensive guide is more than sufficient to help you land your software developer job!

1. Mindset & Best Practices 🧠

Before we dive into the roadmap and discuss the courses, I want you to understand that programming is a vocation. Before you jump into your first tutorial, it’s important to learn about certain mindset, attitude shift, and best practices. Adopt these from day 0, and you will save yourself from a lot of bad days, frustration, and negative cycles.

1. Programming is hard 😩

When you start learning programming, the first few days might seem easy. But, pretty soon, the difficulty increases, and you will get stuck on a problem. It’s important to understand that - this is OK! Programming is hard. It is supposed to be hard.


Students often have misconceptions or idealistic goals when they start learning programming. And, to be honest, it’s not their fault. Course creators, edtech companies, content creators, and even your peers will constantly tell you that “programming is easy”, or “anyone can learn coding in a month!”


But, the truth is that - just like with any discipline - it takes a considerable amount of time and effort to master it. Become comfortable with being uncomfortable.

2. Overcome Imposter Syndrome 🤯

The majority of us have probably experienced Imposter Syndrome during some stage of our lives. No matter if you’re just starting out in your career, if you’re a perfectionist, or a high performer with many years experience, millions of people suffer with imposter syndrome.


Imposter syndrome is prevalent within the tech industry, with employees stating that they currently experience some form of the condition within their careers. It’s especially common in software engineers, developers, and designers. It’s usually worse in people who are new within the tech industry, are part of an underrepresented group, or have come from different professional backgrounds.


Even though the effects of Imposter Syndrome are clearly bad for mental health, confidence and sense of self, once you start to recognize the symptoms we’ve discussed above, there are ways you can begin to overcome it, and regain your self-belief.

The three steps that will help:

1. Find a mentor
2. Remember your past experiences & training
3. Keep track of your accomplishments

3. Get Past Learning Plateau 🚵

A common pattern we’ve seen at Moocable with students learning to code is:


1. Quickly learning a massive amount of information.
2. Then running into a seemingly insurmountable wall. In this phase, the student typically feels like they've reached the zenith of what they're going to be able to accomplish about development.


This is known as learning plateau. It's important to understand that everyone follows a similar pattern when it comes to learning a new skill. This means that you will experience times where it seems like every day you're soaking in a wealth of new information. But it also means that you will run into times where it feels like your mind will limit you from learning anything new.


Here’s how you can get past learning plateaus:

1. Proper Information/Resources: When a student lacks access to proper information, it makes learning a more arduous process. Imagine if you start learning a course, but the quality of instructor is poor. In this case, you will require additional resources, i.e. another course + more time.

2. Best Practices: There are many times where developers need to take a step back and focus on quality over quantity when it comes to building applications. My advice for going through this phase is to embrace it. Be patient. As soon as you have a firm understanding of how the best practices can be utilized, you'll be able to move onto learning new concepts.

3. Challenging/new tasks: In my experience, the main cause of students hitting a skill plateau is when they stop challenging themselves. If you remember back to when you were first learning development, it seemed like your knowledge was skyrocketing each day. Whenever you feel like you are getting into a rut, go and look at popular websites and start to put together a list of features that you want to learn how to build. From that point, you can put a plan together for what concepts you need to learn in order to implement them.

2. How to upskill 📚

Self-learning is different than learning in college. There are no professors (at least not in person), no hard deadlines, and no one to keep you accountable. As I mentioned - it's easy to study on your own for the first few days, but pretty soon, it becomes difficult.


As discussed practicing the mental attitude and mindset, it's important to understand and implement healthy study practices.


Recommended Reads:
How to start your MOOC journey
Here’s how I completed 70+ MOOCs
How (not) to learn


The 10 study practices:

1. Develop a Macro-Micro Plan

2. Apply Restrictions

3. Incorporate Project-Based Learning

4. Work on Projects that matter to you

5. Manage Time & Take care of yourself

6. Intensity, Frequency and Duration

7. Manage your Attention Span

8. Productive Failure

9. Join a Study group

10. Develop a Growth Mindset 

3. The Roadmap 🗺️

Now - after covering mindset & best study practices - we come to the Roadmap.

Command Line Basics, Git, and Github

CourseLinux for DevelopersLinux Tools for Developers

Use Linux/Mac: If you have a Windows Laptop, install Linux. If you have a Macbook then you are good to go. Start using the terminal.

Things to learn:

•Basics of bash: echo, read, variables.
•Interact with the filesystem: ls, cd, pwd, cat, touch, head, tail, cp, rm, mv, mkdir, find, etc.
•Input/output redirectors.
•Regular expression in bash.
•grep, sed, and awk.
•file permissions in general and how to work with them using bash.
•Programming concepts in bash: decision making, loops, arrays, strings, operators, functions, etc.


CourseIntroduction to Git and GitHub

• Learn how to keep track of the different versions of your code and configuration files using a popular version control system (VCS) called Git

• You'll also go through how to setup an account with a service called GitHub so that you can create your very own remote repositories to store your code and configuration. 

Full-Stack Web Development 🌐

When it comes to learning Full-stack web development, I'd strongly recommend The Odin Project

CourseThe Odin Project

This is a 100% free platform for learning full-stack web development. Students can choose to learn either Full-stack Ruby on Rails, or Full-stack Javascript.

We recently interviewed Aditya Menon - former Ernst and Young lawyer - who described his coding journey. As a non-CS student, he struggled with understanding the syntax and "the vernacular" of programming. However, after weeks of deep work, he can now code and develop websites.

For more information and review about The Odin Project, check out

Additional Read: The Odin Project Guide for non-CS students.

You can also watch the interview with Aditya:

 

The Odin Project (TOP) is an open-source curriculum for learning full-stack web development. The curriculum is divided into distinct courses, each covering the subject language in depth. Each course contains a listing of lessons interspersed with multiple projects. These projects give users the opportunity to practice what they are learning, thereby reinforcing and solidifying the theoretical knowledge learned in the lessons. Completed projects may then be included in the user's portfolio.


Lessons are structured through a combination of original written content and a compilation of carefully curated resources from the web. This is where the contributing happens!

4. Projects 🚀

Once you've completed all the courses, it's time to apply everything you've learned. In this section, I'll first suggest 10 possible ideas for your project. In addition, I'll suggest ways to help you make the most of the side projects.

Full-Stack Web Project Ideas 💡

1. Blog Website: A blog website is one where users can put up their thoughts about anything and everything. You can make it as creative as you want to. Here, people have to log in using their credentials and proper authentication will also be done. After that, the user can put up their blogs for the public and they should be stored in the database so that it remains there. Also, the functionality of editing a blog after posting it and deleting it from the post would be the cherry on the cake.


2. Portfolio Website: Portfolio websites are a very popular concept in today’s world. The developers build some awesome portfolio websites to showcase their skills and impress clients. Students or even professionals learning web development should make a portfolio website of their own as it is a great practice, especially front-end, and this is something where there are no limits. You can be as creative as you want to be.


3. Food Delivery App: Who doesn’t like food? Everyone wants to enjoy a delicious meal after the end of a hard-working day. So, there are various websites and apps like Uber-eats and Swiggy, and Zomato in India, which have become popular and grown their businesses around this idea. So, a food application or website is another interesting full-stack project that is very popular as well as a not-so-old idea.


4. E-commerce App:
 An e-commerce website/app is a very famous project and you will find it in almost every full-stack developer’s portfolio. This project is a very vast project and involves a lot of front-end, back-end as well as database knowledge. It is considered a major project and it takes a lot of hard work and time to make it. You can either make an e-commerce site/app of your own or try to clone an existing large-scale app/website like Amazon or Flipkart, etc.


5. Project Management Tool: The toughest full-stack project and one with a lot of features is the Project Management tool. Examples are Kissflow Project, Trello, Asana, etc. This project should have the framework of a basic social media site with users being able to communicate with each other. Users should have the facility to create projects together as well as create tasks within the projects. The users should also have the functionality to assign tasks to one another and also comment on it like social media.


6. Marketplace App: A marketplace makes money by bringing buyers and sellers together and facilitating their transactions. Marketplaces can work in virtually any niche, and the main offering can be anything from rentals to services to product-selling. Airbnb, Amazon, Etsy, Uber, and Upwork are all examples of successful marketplaces.


7. Real-time Game App: Do you have a burning idea for a game that you've passionately pursued full-stack development to achieve? The time is now. To qualify as a game, your project should:

• Support user accounts and user data through a database
• Provide some interactivity or gameplay elements
• Have clear goals or provide some state of "winning" or "losing"
• Provide a profit model, either through subscription or in-app purchases
• Operate both as a desktop application and a mobile application


8. Workout Tracker: Tracking workouts or exercises puts an interesting spin on a regular scheduling app. You can do this with any type of recurring hobby. Develop an app that will:

• Support user accounts and customization with authentication
• Schedule workouts/hobbies and reschedule missed sessions
• Let users determine the frequency and preferred scheduling of their workouts
• Connect users through support groups and competitive teams
• Intelligently send users reminders and alerts


9. Image-Sharing App: You've seen Instagram and Imgur. It's time to make your own image-sharing app. Image sharing isn't just popular; there are a lot of potential niches to fill.

An image sharing app:

• Let users upload, store, and manage images
• Provide filters so users can update and edit their images
• Compress images intelligently for better performance
• Automatically prune unused images of abandoned images
• Lets users pay for more space on or other premium features



10. Video-calling App: Video is now ubiquitous. But just ten years ago, video calling was exhausting. Think about how you could make the process of video calling easier.

Create a video calling app that can:

• Let users log in to their accounts and connect with those on their contact list.
• Support multiple users within the same video conferencing room.
• Store video calls, on request, for reference later.
• Support one-on-one calls scheduled between users.
• Provide additional features such as text chats.

Make the most of side projects 💡

Some of the most popular products and companies we know, including Slack, Twitter, Craigslist, Gmail and Trello, started as a side project. Side projects come in many forms but are typically projects started outside of normal work hours.


Often, the desire to start a side project is driven by the quest to become an entrepreneur, an interest in something outside of your core area of expertise, or boredom. Looking for a new challenge, wanting to expand or grow your skillset, or pursuing an idea doesn’t mean you have to give up your full-time job to do it.


Side projects help us uncover new interests, promote divergent thinking (one of the building blocks of creativity), and can potentially take your life in an unexpected direction. However, that's also what makes them scary. They require time and money—and more importantly, you'll need enough motivation from the meaning the side project brings to keep going when it's tough.


Now, when it comes to jobs or moving up the corporate ladder you might find some people say that top-tech companies place more emphasis on problem-solving questions, rather than on side projects.


This does not mean side projects aren’t important. They are, very much so. See, we often look at side projects from the point-of-view of adding weight to our resumes. I think that is the wrong approach. Side projects need to be done for your own interest and skills, and when you do that, the benefits will automatically show up in your resume. Remember that the main goal of doing side projects is to become a better at engineering, and have fun while at it!


When built efficiently and followed with passion, your side project can also lead you to create a valuable commercial product/service. In fact, some of the world's most successful companies started as side projects.

What makes a good side project? 💡

• A project that is full stack, covers multiple different areas of technologies from hardware to software and client-side apps to backend cloud services. This not only gives you a breath of experience but also helps you learn the art of integrating different pieces of technologies together to form a cohesive unit.


• A project that uses current platforms, frameworks, and programming languages. This makes sure that your skills are transferrable. Don’t always choose a stack that you are comfortable with, try to pick one that is best for the project.


• Something that you are passionate about. This could be a cause that you are close to, may something that has personal meaning, or one that has a cool story behind it. When you are excited and passionate about something, you will automatically put your best effort towards it.


• A project that has a tangible and meaningful impact. This could be something that helps underdeveloped parts of the world, or something related to the current context of the global pandemic.


• And finally, something that is unique and fun. Stop building the typical TODO lists, calculators, interpreters, and sudoku solvers. They have been done too much. Put a fun twist. Come up with something unique. Software projects don't have to be boring!


Side projects thrive on passion and fun. Sure, it would be great if your side project resulted in a second source of income or an amazing piece for your portfolio, but that’s a nice side effect and not the primary goal. In the upcoming post (for this series), I'll talk about why most of us (probably you too, sorry) fail to finish the side project: some of the reasons are psychological, some cultural.

5. Soft Skills 🤝🏻

I'm a strong advocate for soft skills. Coding is so harsh and cold. Everything is so easily measured in the hard world of code. How many lines of code can you write? How productive can you be? Did those tests pass? It’s easy to get caught up in the measurement of it all and lose sight of the human aspect of technology.


Are you liked? Are you appreciated? Are you kind and welcoming? Do you inspire with your positivity and supportive demeanor, or just with your ruthless competence? Are you taking care of yourself, your back, your buns, and your brain? We've mentored hundreds of students on Moocable and, let me tell you, things break down if you don’t take care of them.


When we talk to employers, managers, and CEOs, the biggest pain point in new hires is the lack of soft skills. Soft skills are essential for a person's success in both their personal and professional lives. Soft skills are in high demand in today's work market and are regarded as a valued asset by employers. Soft talents that are widely sought after in the job market include the ability to communicate effectively, work well in a team, lead people, and regulate emotions.


You can easily find lots of courses that will teach you how to write better code, learn a new technology, or do things like work on a team or run a software project. You might even find some courses that talk about your career and how to improve it, or simply how to pass interview questions. But, it's equally important to learn about how to become a better version of the software developer you already are.

6. Getting your first job 👩‍💻

Whether you are a first-time job seeker or a career switcher hoping to pivot to a new field, the job search can be equal measures exciting and nerve-racking. A new career is in sight, but how do you get it, especially when you lack relevant experience or have no experience at all?


A lack of experience doesn’t mean you can’t land a job. It just means you have to go about the job search strategically. The following tips have been crafted to help you do just that.

The biggest risk for companies hiring a candidate 😟

Let’s start off by talking about the biggest risk factor for most companies when it comes to hiring a candidate - and that’s hiring someone who doesn’t actually know how to code/design/analyze/build.


A software developer who doesn’t know how to code—or is really bad at it— actually adds negative value and can cost the company even more money than merely paying their salary would entail.


In such a case, it’s better to never hire this person at all.


We are all aware that India is facing an acute shortage of skilled workforce. Graduates right out of college do not possess on-the-job skills, which makes the recruiters apprehensive about hiring them. Any company that you would want to work for is going to guard as much as possible against hiring developers who don’t know how to write code.


This is one of the reasons why—even though so many software developers complain about it—so many companies do whiteboard coding interviews. (It’s really difficult to cheat in them)

Overcoming that risk 💪

If you have no experience, your primary strategy for getting a job as a software developer/designer/analyst is to prove that you are competent - that you can code/design/analyze/build.


What we really want to do here is make it pretty clear to any company considering you for a position that, even though you don’t have direct work experience, you are an experienced programmer/designer/analyst, and you have some external proof that you know how to code/design/analyze.


That is what is going to help you get your foot in the door.

1. Have an online presence 👀

Most of us have an online presence on some level or another, but have you ever thought about how the content you choose to post online could affect your career?


It can be really useful to start a professional blog where you have a bunch of articles about the specific software development technologies you are specializing in, and it looks like you keep it up-to-date.


It doesn’t matter if you are an experienced developer or if you are just starting out. You should share what you are learning and write about your chosen specialty in the software development field.


Aside from a blog, it also helps to have other good things come up when your name is Googled.


A Twitter account, perhaps a Facebook page, or something else that shows you are active and involved in the software development community is going to go a long way in helping you establish credibility, despite lacking experience.

2. Have a Portfolio 🖌️

Having an online presence is great, but without experience, you are probably going to want to have a bit more substance as well.


It’s a really good idea to have a portfolio of some of the work you’ve done that shows you know how to code and provides an example of your code.


This is going to go a long way to alleviate that risk a potential employer would have in hiring someone who lacks experience.


If a potential employer can see code that you’ve written and projects you’ve created, they can be more sure that you at least have some idea of what you are doing and can probably write code for them.


Now, there isn’t any way to prove that you wrote the code yourself or that it is even your code, but if you have a decent portfolio of projects you created, it’s more and more believable.


You can build your portfolio using these platforms:

Software - Github

Website - Host your website (ideal), Github, Notion

Design - Behance, Dribbble

Analytics - Kaggle, Rpubs


You can even explain, talk about your projects on YouTube or on our own Website.

3. Offer to work for no charge 🔨

One really good way to eliminate risk for a company that is considering hiring you when you don’t have any experience is to basically offer to work for free or—even better—offer a money-back guarantee on your work.


You are probably not going to take this approach when you go through the normal resume / interview process, but if you are working through your network or reaching out directly through an informal interview process, you might really want to consider this tactic.


You do have to have a lot of confidence to pull this off, though. You have to project the idea that you are so sure that you can succeed that it is well worth taking a chance on you and that you are even willing to work for free or with a money-back guarantee to prove it.


If you pull this off confidently enough, you may even get hired without having to work for free or offer a guarantee. Just making this kind of offer can give a prospective employer enough confidence in your abilities that they are willing to take a chance on you and hire you straight up.

4. But remember - “No charge” doesn’t mean “Free” ⚠️

This is an add-on to my previous point - when I say work for “no charge”, I’m not recommending that you let companies exploit you. No.


If you are starting out, especially in fields like graphic design, or photography, you may do a lot of work for “no charge,” but that does not mean it is “free.” You give away your time and energy at “no charge” in hopeful expectation of some reward from your clients, such as an improved relationship, future favors, referrals, and additional projects, to name just a few.


In order to make sure your client is aware of your generous gifts of time, you must document all of the work you complete for the client whether you charge them for it or not. This strategy can be accomplished easily in your proposals and invoices.

5. Get Certifications 📚

This is quite subjective, but I do think they become much more valuable when you lack real job experience. In the post-COVID-19 world, employers recognize the value of online courses and certifications.


Getting certifications won’t prove that you are an expert, and it won’t guarantee you a job, but it is another way to alleviate some of the uncertainty a prospective employer may have with hiring someone who lacks experience.

6. Be persistent 🏋️‍♂️

When you don’t have experience, you should make up for it with persistence.


Be the kind of go-getter who doesn’t take “no” for an answer and people will be likely to eventually give you a shot—experience or not.


Many people are afraid of following up for fear that they’ll blow their chances or be annoying. Be annoying. It’s better than being forgotten.


Besides, if you are persistent enough and you do it in a way that is as least annoying as possible, you’ll come across as someone who is eager and hungry.

Junaid Khan

Junaid Khan

Junaid Khan is the founder of Moocable - the platform to help learner find their next MOOC, and study partners. A passionate learner, he struggled with self-learning.