I’ve been coding for the better part of the last 9 years, 8 of them professionally. I’ve seen a lot of posts here about people who have started coding, but are confused on how to get started with actual paid projects, and I thought I’d share some insight into my process.
Make sure you have strong programming basics. Language/framework doesn’t matter. Whatever follows this particular point doesn’t matter unless you’re at a stage where you’re relatively language agnostic i.e. you can look at a new language and understand most of its syntax without difficulty. Of course there are exceptions to this rule with specialized languages like Elixir and such, but most of the time, all programming languages share the same paradigms.
Data structures and algorithms are VERY important for landing those 5/6 figure jobs, but not necessary to start with small projects - paid or otherwise. I would suggest that you continue your learning with DSA alongside doing small projects. 1-2 hours of consistent practice everyday will get you where you want to be. Do not underestimate the power of compounding your knowledge with consistency.
Assuming you have strong basics, and some knowledge of DSA, start doing projects! With all the information out there on the Internet, it is VERY easy to get stuck in something called “tutorial purgatory”. Yes, it is important to have an in-depth knowledge of the field you’re working in, but tutorials will only get you so far. The experience that you get from working on actual projects will exponentially increase your capabilities as a programmer. Personally, I spend an hour a day on project tutorials, an hour a day on DSA, and the rest of my day on actual work.
Building on the above point, let’s say you’re tasked with working on something you’ve never done before. Your first approach may be to spend some time on lengthy courses, and ignore an opportunity you see before you. I don’t blame you - that’s what seems to be the most logical, right? Let me present you with an alternate route. Let’s assume you have a strong foundation and you’re somewhat language agnostic. Leverage these qualities! Instead of spending the majority of your time learning and not applying, take out an hour and a half to watch a crash course (Traversy Media on YouTube is BRILLIANT for this) and start working! Solve problems as you come across them. When you’re stuck, Google the issue, look for answers on StackOverflow and UNDERSTAND the problem. With every issue you come across, you’ll spend a maximum of 5-10 minutes on them - but understand what’s happening here. Not only are you learning something new, you are completing projects with that new knowledge! Two birds, one stone.
Let me share some real life examples of me personally applying the advice I’ve shared above.
I do a lot of freelance work on sites like Upwork and Fiverr. When I’m looking for projects, I search for high budget projects with low bids, that require me to do something I’ve never done before. Most people applying to projects on such sites will do so by copy/pasting an existing cover letter. What I do instead is research on what the client wants. I’ll take an average of 3 days to write up a detailed proposal, highlighting intricately EXACTLY what I plan to deliver. Then I’ll set a timeline double that of what it would take me to complete the project. For example, if I’d need one month to code, I would state 2 months in my proposal. I account in the timeline the amount of time it would take me to learn this new tech stack, and deliver a product. At the end of the project, I will have made a good amount of money, AND have added another skillset under my belt. Of course, and this goes without saying, while doing my research I do make sure that this new tech stack I’m working on is something I can actually learn in a reasonable timeline - I don’t take on projects like game development which I KNOW I can’t tackle in a month or so.
I really hope this helps all you struggling devs out there!