I received an email from a reader of the blog. He asked me how to freelance with his set of skills, which are totally unrelated to web technologies. He’s familiar with some frontend and backend languages though.
This reminded me of myself, when I was working in a company using Symfony2 (a PHP framework), but I disliked it after completing a big project (a custom shop, inspired by Prestashop). I really wanted to do something with Ruby on Rails. My goal was to switch totally to that framework and continue making money, but the change was so different that I needed to think a lot on how to do it quickly and effectively, so when I was ready I started to search for a new job.
Today the tendency is to know both frontend and backend fields, but you will know better one or the other. So try to specialize on the one you feel more comfortable with.
The first step then is to learn and interiorize the concepts about the technology you like most. By concepts I mean trying to master the basics. Once you know the basics, you can learn the advanced pieces on the go, while you work on a project. Don’t try to learn everything at once because you will not retain all the information. You will end up wasting your time.
In order to make your learning process enjoyable, I would recommend searching for a technology that has a good community behind, providing good tutorials so you can avoid reading big books. Yes, I recommend tutorials instead of books. I prefer the rich web format and videos. For me it works faster than a book.
In my case I chose Ruby on Rails because of two gold resources: Railscasts and Code School. With Code School I could learn the basics following a path. With Railscasts I could learn more specific subjects, the ones that I felt weaker. From there, with a good basic knowledge, I found the Ruby gems an amazing resource of features that I could add to my applications easily. All this in perspective made my learning process fast, and my applications would be bootstrapped in almost no time. Being Ruby the developer’s best friend (it’s the language slogan), I could focus on the app instead than the tool.
Okay, you are now confident enough to develop an application. Why waiting? Start making your first application! Think about something you could clone (there are tons of tutorials out there to clone the most typical apps in any language). Maybe you could build something original, go ahead! Even better, you could do it open source, host it on Github and find collaborators.
When you finish your first application, you can find other open source applications you can collaborate on to gain some experience working in a team. It’s a very important aspect when working remotely, because your code will be reviewed and you will have to improve it. Take a look at the open issues, maybe you could pick up one and provide a fix.
You now have the knowledge, your first application and experience working in a team for an open source project. All this can be put into your CV, so don’t hesitate to do it now. If you are collaborating writing answers in StackOverflow you could create your Developer Story. Do not forget LinkedIn either.
Now it’s time to search for a job! If you want to try working remotely (which I recommend), I suggest two tools to find interesting positions: We work remotely and StackOverflow jobs (filter by location allowing remote).
If you prefer to work on different projects, I think the remote approach is a must. Using the sites I recommended you can find companies searching for developers to work on a limited time per week, so you can have multiple clients to start with. Another alternative is using a site for freelancers such as Upwork, but you will need to compete in price with other developers. I think it will be very difficult and time consuming to find good clients there. Working in interesting projects with good clients is a slow process. Invest your time and effort on few projects that you really like, it will be worth it.