Guide to Becoming a Self-taught Software Engineer: Best tools and practices
Published: 2022-08-30 01:23:08

---
title: Guide to Becoming a Self-taught Software Engineer: Best tools and practices
published: true
date: 2022-08-29 20:45:12 UTC
tags: 
canonical_url: https://emmadonery.hashnode.dev/guide-to-becoming-a-self-taught-software-engineer-best-tools-and-practices
---

![Grey and Black Professional LinkedIn Article Cover Image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661797568714/F1s3PwFW4.png)

The truth is, you do not need to be a genius to be a software engineer. Surprisingly, in 2022 most people still think that to become a software engineer, they need a degree or at least a diploma. It's helpful, of course. But the truth is, most of outstanding and amazing SEs out there have no degree. 💪

Becoming a self-taught software engineer wont happen overnight. Before you land your first software engineer job, it can take months to years to learn all of the necessary skills (i.e., programming languages, tools, API design). If you're willing to put in the effort, you can become a software engineer whether you're reentering the workforce or are stuck in a job you detest.

💡 The **good news** is that its totally possible to learn how to become a software Engineer from scratch. Tis article is going to raise the curtain and demonstrate to you how to. Read on then!

## **Who Is a Software Engineer?** 👨💻

A **software engineer** is someone who writes the code behind software products such as video games, operating systems, mobile applications, software features, robots, etc.

Software engineering is a rewarding, convenient for working from home, and in-demand computer science career

## **Why Software Engineering?** 

**Software developer work perks**

- **High salary** 🤑

According to indeed.com, the average base salary for a software engineer salary in United States is approximately **$93,858** per year.

- **Remote-friendly / WFH responsibilities** 🌴 / 🏠 

Globalization is a chance. You don't have to live in Silicon Valley to get a solid paycheck. You don't have to spend a few hours commuting to the office and home. You can live on the banks of a clean river, breathe fresh air and work in the rhythm that suits you.

- **Amazing Work benefits** 🎉

Most common benefits for Software Engineers include: 401(k), Dental, diability and life insurance, Gym membership, health insurance, Employee assistance program, paid time off, paid sick-leave, Professional development assistance, unlimited paid time off, relocation assistance, retirement plan, stock option plan and so much more

- **Casual work environment** 👖👒💞 

Software engineering professions frequently include comfortable, relaxed work conditions in addition to flexible schedules.

> **Disclosure** : Im a proud beneficiary of some of the resources mentioned in this article.

## **👣How To Become a Software Engineer Without a Degree**

### **1. Start Right**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661805238957/rjCPwqZvw.png)

**🔷 Gather inspiration 💫/📝**

Reading about other peoples success stories, who started out like you will get you inspired and keep you motivated 🎙 [The Learn to Code With Me Podcast](https://learntocodewith.me/podcast/) has a lot of inspiring stories of people who made it through this journey.

Also, you can readthis article about the [15 self taught software engineers](https://softwaredevelopmentinsights.com/15-successful-self-taught-software-engineers/) by Dennis

**🔷 Learn a Programming Language 🖥**

There are several programming languages to choose from when youre learning Software Engineering. Common entry-level programming languages for software engineers include:

- **Javascript** - If youre brand-new to coding, a good rule of thumb is to start with _HTML/CSS_ and _JavaScript_ since these languages provide a good intro to programming and web development.

**Useful resources** :

1. _HTML/CSS_: [Build Responsive Real-World Websites with HTML and CSS](https://www.udemy.com/course/design-and-develop-a-killer-website-with-html5-and-css3/) by Jonas Schmedtmann
2. _JavaScript_: [The Complete JavaScript Course 2022: From Zero to Expert!](https://www.udemy.com/course/javascript-course-2022-from-zero-to-expert/) by Waleed Morgan

- **Python** - If you arent really sure what you want to specialize in, you may want to explore Python.

> For beginners, I would suggest Python (or similar scripting languages) to start with, said Dr. S.M. Yiu. It is an easy language to pick up, highly productive, and also is useful in many practical situations such as data analysis.

- **Java** - This could be a good option if you plan on doing back-end development.

With so many languages out there, it can be hard to know which one to pick. I recommend taking some time to learn about the different languages. This podcast episode on 🎙 [picking a programming language](https://learntocodewith.me/podcast/what-programming-language/) is a great place to start.

Ultimately, the language you pick should be relevant to your career goals. For example, if you want to be a front-end web developer, youll want to make sure that you understand javascript

**🔷 Learn Data Structures and Algorithms 📚**

Once youve mastered one or two programming languages, the next step is to familiarize yourself with data structures and algorithms.

**Useful resources** :

- [Intro to Data Structures and Algorithms](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)
- [Data Structures Crash Course](https://www.algoexpert.io/data-structures)
- [Data Structures and Algorithms Specialization](https://www.coursera.org/specializations/data-structures-algorithms)
- [Algorithm Visualizer](https://algorithm-visualizer.org/)
- [GeeksforGeeks](https://www.geeksforgeeks.org/data-structures/)

### **2. Learn Smart**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661805048972/UD13uBi5Z.png)

**🔷 Pick a good platform or course** 

There are so many platforms and course out there tio choose from. However, i am goint to list the most essential platforms that helped me out in my journey.

- [Coursera](https://www.coursera.org/)
- [Udemy](https://www.udemy.com/)
- [LinkedIn Learning](https://www.linkedin.com/learning/)
- [Udacity](https://www.udacity.com/)
- [Pluralsight](https://www.pluralsight.com/)
- [Codecademy](https://www.codecademy.com/)
- [Freecodecamp](https://www.freecodecamp.org/)
- [Skillshare](https://www.skillshare.com/)

**🔷 Practice, Practice...More Practice** 

Don't just follow coding tutorials. Build real projects. This will show potential employers that you can hack it 🎉

> _Learning by doing_ - this is the only way or perfecting skills.

You must set aside a significant amount of time every day, every week, to learning and practicing skills

To motivate you to practice, try doing the [#100DaysOfCode](https://www.100daysofcode.com/) challenge. In this challenge, you code a minimum of an hour every day for 100 days and tweet your progress every day with the [#100DaysOfCode](https://www.100daysofcode.com/) hashtag to stay accountable

**🔷 Familiriaze and use tools that Software engineers use**

So, what you want to do from the beginning is to build how real software engineers build as to get yourself accustomed to coding and solidifying the concepts in a real-world environment These tools include

- Git or GitHub - Check out [The Ultimate Git Mastery Course](https://learntocodewith.me/go/code-with-mosh-ultimate-git-mastery/) by Code With Mosh, that teaches Git mastery
- The command-line interface
- Bitbucket

**🔷 Stay Informed 👀** 

This will help you to stay on top of new developments and figure out the best things to learn next.

**Useful Podcasts to keep you updated** :

- [Techmeme Ride Home](https://podcasts.apple.com/us/podcast/techmeme-ride-home/id1355212895)
- [Tech News Briefing](https://www.wsj.com/podcasts/tech-news-briefing?mod=rsswn)

**Useful tech newsletters to keep you Up-to-date** :

- [StrictlyVC](https://www.strictlyvc.com/)
- [TLDR](https://tldr.tech/)
- [Built In NYC](https://accounts.builtin.com/Signup?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3D0fbc5326-c7c0-410d-9509-38c4d06bd29d%26redirect_uri%3Dhttps%253A%252F%252Fwww.builtinnyc.com%252Fauth%252Fcallback.html%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520api-external%2520roles%2520identity-mgmt%2520offline_access%26state%3Db578add73b5d405c9ae81d400f69acb3%26code_challenge%3DUYKV8BodlSN6xSCp4QlT7bhEm_OkWXbtuPAcf6AHGdg%26code_challenge_method%3DS256%26response_mode%3Dquery%26locationId%3D5)
- [The Information Newsletters](https://www.theinformation.com/newsletters)

### **3. Build a Portfolio on Github 🎨**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661804968245/S2EgITJxH.png)

Learn to code, practice code, build projects and push them to Github. Github is the ideal place to outline your vision/skillset, show examples of your work and resume, and make your contact information available. Also, adding projects or code to your GitHub provides evidence that you know what youre doing

Check out these courses to start learning Git and using it in your projects:

- [Version Control with Git on Udacity](https://www.udacity.com/course/version-control-with-git--ud123)
- [The Ultimate Git Mastery Course by Code With Mosh](https://codewithmosh.com/p/the-ultimate-git-course)
- [Git Complete: The definitive, step-by-step guide to Git on Udemy](https://www.udemy.com/course/git-complete/)
- [Learn Enough Git to Be Dangerous](https://www.learnenough.com/git-tutorial#:~:text=Learn%20Enough%20Git%20to%20Be%20Dangerous%20is%20the%20final%20installment,those%20who%20work%20with%20them.)
- [Mastering Git on Pluralsight](https://www.pluralsight.com/courses/mastering-git?exp=2)
- [Introduction to Git on Datacamp](https://www.datacamp.com/courses/introduction-to-git)

### **4. Get support 🤜**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661804810609/auCAevgOv.png)

**🔷 Find a community 🫂**

Having a community to engage with is critical to your success as a software engineer, particularly when you're first starting out. You have an automatic support systema network of individuals you can turn to if you get jammed or feel discouraged you are encircled by a people who share your values.

**🔷 Cultivate your professional network 🤝**

> Get involved, and contribute to the tech communities, and almost inevitably, opportunities will come your way.

- **Go to local events and meetups**

Yoy can attend in person meetups around you or find online communities to join. Do not just join a community, engage and interact with others to learn more.

Check [Meetup](https://www.meetup.com/), a social media platform for hosting and organizing in-person and virtual activities, gatherings, and events for people and communities of similar interests, hobbies, and professions.

Also [Eventbrite](https://www.eventbrite.com/), An event management and ticketing website that allows users to browse, create, and promote local events.

- **Maintain a blog** 

Blogs will give you exposure. Focus on creating quality content that is valuable to others; this will help your blog (and thereby you) develop a following

**Most appropriate Blogging Platforms for Software Engineers**

🔹 [Hashnode](https://hashnode.com/)

🔹 [Dev To](https://dev.to/)

🔹 [Medium](https://medium.com/)

🔹 [Hacker Noon](https://hackernoon.com/)

- **🙋 Volunteer**

You can volunteer at events, help organize and host events etc.

- **🗣 Speak at events**

If you find an opportunity to speak at a tech event, kindly do so.

- **👀 Create a Professional Online Presence**

It is very essential to build a digital presence as a software engineer. Build your online presence on:

LinkedIn

GitHub

Twitter

Personal website (or portfolio site)

### **5. Ace the Coding Interview 💼**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661804897725/B2oVsrwzP.png)

After building your software engineering skills and made connections in the industry. Now, how do you get a that job without a degree?

A coding interview allows potential employers and recruiters to evaluate your technical skills and problem-solving ability. The best way to prepare for a technical interview is to practice solving technical questions using resources like [LeetCode](https://leetcode.com/), [Hackerank](https://www.hackerrank.com/).

Another helpful resource to consult is the book [Cracking the Coding Interview](https://www.amazon.com/gp/product/098478280X/ref=as_li_tl?ie=UTF8&camp=1789&creative=390957&creativeASIN=098478280X&linkCode=as2&tag=laurebradf-20&linkId=NJUCJLWBNZPNM5RE).

Fortunately, you dont have to prep on your own.These platforms will help you in acing the tech interview

- [Interview Cake](https://www.interviewcake.com/)

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661778802407/1KhJ59579.png)

- [AlgoExpert](https://learntocodewith.me/go/algoexpert/)

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661778827852/IB_g-b_pB.png)

- [Byte by Byte](https://www.byte-by-byte.com/)

![byte by byte.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661778981698/_UVGQbQRq.png)

- [Skilled.dev](https://learntocodewith.me/go/skilled-dev-course/)

![skilled dev.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661779112711/yoxA9v7vm.png)

### **6. Expand Your Knowledge**

📖 KEEP LEARNING!

The thing about tech is that its constantly changing and youll need to keep learning constantly to keep up.

> _The only constant in technology is change_

Utilize industry publications, podcasts, and social media to remain up to date on the latest technological developments.

## **Best practices to keep relevant**

Start by setting goals. There must be several of them, and they must all be achievable

**🔷 Set a schedule**

Set aside at least an hour a day for study. It's not much, but this is the minimum that you must fulfill

**🔷 Eliminate all distractions**

What you spend your time on is what you get.

> "If you don't separate yourself from your distractions, Your distractions will separate you from your goals and the life you want"

As you get to learn via the internet, it is so easy to get carried away by trends and activities going through it. It requires self-discipline to remain focused and consistent on your goals. Avoid getting distracted by the internet

> Zig Ziglar once said, " i dont care how much power, brilliance or energy you have, if you dont harness it and focus it on a specific target, and hold it there youre never going to accomplish as much as your ability warrants.

**🔷 Track your progress**

Start documenting what you learn. Write a few sentences each day about how it went. What have you learned? What questions do you have? You can also decide to write down articles on the concepts you have learnt and share with other techies around the world.

I suggest a fantastic communities like [dev.to](https://dev.to/), [hashnode](https://hashnode.com/) or [medium](https://medium.com/).

**🔷 Practice, practice, and even more practice**

Starting with your first **_Hello, world!_** program, you'll progress in a few months to creating backends, responsive layouts, web apps, and even a mobile apps and games. Make it a habit to run every code as you learn. Also build projects along the way. Practice every concept by doing.

**🔷 You don't need to know everything** It is close to impossible to know everything about around software engineering. Master the fundamentals, learn enough, build projects and keep on learning while practicing. You will always find a new thing to learn.

\*\*🔷 Make good habits early It will be easier to write clean code in the future if you get into the habit early. No code is perfect, but getting into the behavior of using good guidelines for cleaning up your code ensures that you get to write code that can be more easily reused, read by other developers, and is extensible.

- See the [SOLID Principles](https://en.wikipedia.org/wiki/SOLID)
- Also Read, [Clean Code: A Handbook of Agile Software Craftsmanship](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) by Robert C. Martin

**🔷 Depth over Breadth** Learning one thing in depth is better than learning a tiny bit about a lot of things. Pick one stack and become a mastery

**NB:** It is so easy to fall out, get exhausted and give up during this journey. Being consistent is the key to becoming a software engineer - ensure you keep you motivated and focused on your journey

**🔷 Celebrate your wins** Celebrate every milestone or accomplishiment no matter how small it is. I keep track of my wins in [Google Keep](https://keep.google.com/) so that i keep reminding myself of how far i have grown when i feel like giving up.

## **Final thoughts**

There are many software engineers in the world who have not had a formal education in software engineering. In fact, many of them are self-taught. Name them: Ada Lovelace, Elon Musk, Bill gates, Mark Zuckerberg, Alan Turing, Charles Baggage, Fran Allen, Me 🤓 and so many others. So, if they did it, you can too. Plenty of people have achieved it all on their own, through self-teaching and networking. (Coding bootcamps are also a good option if you have the time and budget

**Here are the best I can recommend:**

[**Flatiron School**](http://hubs.ly/H03G4Jk0)

💰 - _Price_: $15,000 (financing available)

- _Duration_: Self-paced (but most students finish in 4-12 months)

[**Fullstack Academy Remote**](https://www.fullstackacademy.com/remote-immersive)

💰 Price: $17,910 (scholarships and financing available)

_Duration_: 17 weeks

[**The Tech Academy**](https://www.learncodinganywhere.com/)

💰 _Price_: $18,640-$26,640

_Duration_: 22 weeks (40 weeks part-time)

What are you waiting for? Grab yourself a cup of coffee, sit back and kickstart your Software Engineering learning journey **TODAY!**

Let's connect: [Twitter](https://twitter.com/Emma_Donery) | [Linkedin](https://www.linkedin.com/in/emma-donery/) | [Github](https://github.com/EmmahCodes254) | [Instagram](https://www.instagram.com/emma_donery/)

🤩 Happy Learning 🤩

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1661799110422/9OAQokgPy.png)