How to acquire skills needed to become a Software developer that I overlooked
Tags: writing, programming, beginners
Published: 2022-04-23 23:43:51

I'm aware that there are 3 pieces involved when trying to become a software developer and or front-end engineer. The **technical aspects**, **problem-solving**, and **teamwork/collaboration** (also known as the soft skills). My trouble came from thinking I could learn these things within a fully fleshed course. But in reality, these skills are branched out into different sections. I didn't realize that we can acquire these skills before applying for a job. It was right in front of me, but I unknowingly ignored it. But knowing now, I won't make the same mistake twice. 

Let's dive in!

## When you're joining an existing company
The first thing I realized was when joining a company is that 90% of the time, you will be working on an existing project (unless it's a startup, then your starting from scratch). You'll be contributing by either; adding features, debugging code/fixing issues, or maintaining the codebase. All 3 skills come into place at this point.

- You'll need the technical skills to code, read, and understand the codebase. 
- You'll need problem-solving skills to fix existing bugs and issues. 
- You'll need communication skills to communicate with your team regularly (developers, designers, PMs) about what you're working on, what you've tried that did or didn't work, etc. 

## So how do we acquire these skills before applying for a job?

**The technical portion:** Online courses on platforms like Udemy or learning from your favorite YouTuber. If you're trying to become a front-end or back-end developer, find a course that best suits. I suggest researching which tech stack your area uses to find the proper courses.

What courses am I taking? currently, I'm subscribed to ZTM academy ($40 a month, well worth it) by Andrei Neagoie. He has tons of courses in different subjects, the two I'll be working on are "Complete Web Developer 2022", then "Junior to Senior Developer 2022".(see image below) 
![ZTM Courses](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/toovdr5y1mfs0htjh6bs.png) 
He keeps his courses updated with current trends. Plus, I love his teaching style. 

Once you get comfortable with the technical parts, next is problem-solving. 

**The problem-solving portion:** To be honest, you will be doing this while your in the coding stage. All the googling and figuring stuff out is problem solving within itself. 

**The collaboration / teamwork portion:** This is when you're probably thinking, I have to learn this skill on the job, but nope. The answer is open-source. At this point, you're getting out of your comfort zone. It's going to feel intimidating. But, this is like the last piece of the puzzle (at least, I believe it is). If you think about it, open source projects work the same as a real-world project in a company. 
- Project will most likely be on GitHub (private most likely)
- You'll need to spend time understanding the project in order to work/contribute to it. (same applies to open-source)
- Be familiar with the tech stack in order to code and debug it(track issues). (same applies to open-source)
- Communicate with your team on the progress of the project. (same applies to open-source)

Open source literally prepares you for the real world of collaborating on a project with a team.

**To recap:** Technical skills will be gained from coding and practing building projects. The problem-solving skills comes naturally alongside the coding portion. The collaboration/teamwork skills will come from joining a open source project that interests you. You'll gain that real-world experience of working amongst other great developers solving problems, while learning and growing your knowledge. 

I hope this helps. Even though this is more of a birds eye view on the topic, let me know if I left any important pieces out. Enjoy!