What are the most important skills you can have as a freelance developer?
You may ask this question because you need to know where to focus and concentrate your learning effort.
While I focus on the most important technologies in this article, I believe that the ultimate driver of your success is your knowledge of the basics because this helps you learn any advanced skill faster.
If you know the basics of programming (e.g. algorithms, data structures, and common patterns), learning any new language or technology is easier.
Having said this, what are the technologies that you can learn in the next year and how can you learn them with minimal effort?
In my opinion, there are five very important technologies. Here they are:
- HTML / CSS,
- Machine Learning,
- Distributed Systems
Let’s explore them one-by-one.
** FRONT-END TECHNOLOGIES **
1) HTML / CSS
Yes, the first one is good old HTML and CSS. Why? Because clients love front-ends. If you are a freelance developer and you create software for clients, you need to have a user interface. If you manage to set up a small web front-end based on HTML and CSS, it’s convenient for clients and you’ll make a few extra bonus points.
But it’s not only about overdelivering. Many clients seek full-stack programmers who are able to set up basic web applications. HTML and CSS is a minimal requirement for these types of jobs.
If you know HTML and CSS, you have a strong foundation on which you can build your resume. And it’s easy to learn, just check out W3-CSS and do the tutorials. It’ll take you less than a week (full-time). But your market value will increase by at least 10-20% which results in a huge return on your invested time.
- Read basic HTML tutorial here: https://www.w3schools.com/html/default.asp
- Read basic CSS tutorial here: https://www.w3schools.com/css/default.asp
Again, front-end development is very important because its the first point of interaction for your clients.
** BACK-END TECHNOLOGIES **
3) Python, Scripting, Django, and Flask
But it’s not enough today to know about front-end development. Going more towards the back-end side of things, learning Python is an excellent choice. Python will also help you write basic operating system scripts.
You can run Python on your back-end servers and serve your web application via Python technologies such as Django or Flask. With Python, you have the power to implement any functionality in the back-end.
But Python is also a powerful first step towards mastering another area in computer science that becomes more and more prevalent: machine learning and data science. This is the fourth technology area where you should know at least the basics. But first, let’s take some action steps to master Python:
- Measure your Python skill level on the Finxter app: https://finxter.com/
- Read a solid Python introductory book: https://blog.finxter.com/coffee-break-python/
** ANALYTICS TECHNOLOGIES **
4) Machine Learning and Data Science
Python will help you get a foot into the door here. Specifically, I would recommend you to learn NumPy, TensorFlow, Pandas, and Scikit-learn. All of them are specific Python libraries that are critical for your mastery in machine learning and data science.
It will take you 10 to 20 hours to learn about the basics of machine learning — just read a book and watch a few Youtube videos.
- Watch Youtube Tutorial of Andrew Ng: https://youtu.be/PPLop4L2eGk
- Master NumPy reading the NumPy book: https://blog.finxter.com/coffee-break-numpy/
** SCALE TECHNOLOGIES **
5) Distributed Systems
This will surprise you. Maybe I’m biased doing my 4-year doctoral research program in the area of distributed systems. But I will tell you why I believe that basic distributed systems skills are vital for your career:
Data grows faster than processing power. Think about it: the world is a massive source of constantly emerging data. Data does not grow, it’s already available in virtually infinite size. Any growth of computational capacity will be eaten immediately by even larger data sets due to the improved capacity to process the data.
Computational resources are scarce, data is ubiquitious.
There is no other way than throwing not one but many cores to the large data sets in order to extract any meaning. There will always be extremely interesting data sets that are just too large to be processed by a single core. It’s a law of nature.
Data will always need all available processing power.
So you need multiple cores that work together towards their goal of extracting useful information from the infinite data sets. A distributed system is your best friend here.
We need to create distributed systems so that all of the cores work together.
- Read an introduction to distributed systems book: https://github.com/theanalyst/awesome-distributed-systems/issues/12
All these steps together will maybe take you one month working full-time. If you work a month in your job, you earn maybe $2000-$5000. Studying these basic technologies will earn you much more. It will pay a rich stream of dividends throughout your life totaling many tens of thousands of dollars.
Where to go from here?
Do you want to grow your skill level and income at the same time — while working from the comfort of your own home? I’ve summarized the state-of-the-art in Python freelancing in the following webinar:
It shows you everything you need to know to get started in Python freelancing, how much you can earn, and how you can start on your path to professional Python.
Check it out!