If you are planning to get into software freelancing, the first thing to care about is developing the right skill sets for your job. If you are learning something, it is better to know about the demand for each of the skill and choose the right ones that suit you.
July marks the end of an year for me, into part-time freelancing. Based on my project hunt so far, I am sharing with you the list of “on demand” skills in this blog post. Please note that the list is solely based on my experience and understanding of the freelancing market. Perception definitely varies!!
The list is meant to be read in the exact order – the skill with the most demand is listed first and so on…
1. PHP
I can seriously bet – if you are looking at 5 freelancing projects, at least one would be based on PHP.
PHP is a server side scripting language, that helps you develop professional web applications with an emphasis on functionality, usability, reliability and security. The major advantage of PHP is that, it works with Apache Web Server which most of the web hosting solutions (like MediaTemple etc.) use. So PHP guarantees the portability of your web application across different web hosting solutions.
If you had worked on any server side scripting language like ASP/JSP, then getting started with PHP is just a breeze.
Every server application has an associated database to persist information. MySQL is a very common and popular database in the freelancing world. If you have the SQL basics right, working with MySQL is straightforward.
Recommended Resources:
Getting started with PHP
PHP – A Simple tutorial
MySQL Tutorial
Once you are comfortable with the basics of PHP, I would strongly recommend to get familiar with a PHP framework like – CakePHP or Zend. You would see that they reduce the development time by almost half, taking care of most of the boilerplate code!
2. HTML / CSS
Though desktop applications using Adobe AIR / Silverlight are gaining popularity, web-based (browser) applications are still the norm of the day. Since HTML and CSS are the formats which most browsers understand, they form the basis of any web application.
So, to develop a web application, using PHP or any other scripting language, HTML and CSS skills becomes a mandate. I am sure you know the basics – but if you are serious about getting into a web development project, an advanced knowledge of both these technologies are recommended.
Recommended Resources:
W3Schools – HTML Tutorial
W3Schools – CSS Tutorial
3. AJAX and JavaScript
AJAX was a buzzword sometime back, but now it is very commonplace. Folks link AJAX with jazzy looking applications, but it is more than that. Though AJAX makes your application look sophisticated, its primary purpose of existence is to provide “asynchronous” client-server communication.
Since AJAX extensively uses JavaScript, a basic understanding of the latter would help you learn AJAX really fast. I find most of the freelancing projects in offer, require the usage of AJAX and adding it to your skill set will definitely reap benefits.
There are numerous AJAX / JavaScript frameworks for you to choose from. Since most of them provide similar functionalities, I would recommend learning one of those and use it in most of your projects.
Recommended Resources:
W3Schools – JavaScript Tutorial
W3Schools – AJAX Tutorial
jQuery
Scriptaculous
Mootools
YUI (Yahoo! User Interface Library)
4. Flash Applications
Flash Applications are quite a rage still, considering their thick client characteristics. If you have this skill, then you are in game for quite a few freelancing projects. Also, Flash player based applications and presentations are pretty popular.
The major downside is the commercial aspect of the product – Adobe Flash, used to create Flash applications.
Recommended Resources:
Learn Flash
5. Java
Java is a very popular freelancing technology – since it is open source and characterized by its “write once run anywhere” philosophy.
Java is just a programming language and there are various technologies built around it. To mention a few popular ones – Servlets/JSP (server side scripting), Java AWT/Swing (client applications), J2ME (mobile technologies), EJB (business components) – and so on.
Nevertheless, a thorough understanding of the Java Programming Language and OOP (Object Oriented Programming) concepts are recommended to get started.
Recommended Resources:
One stop shop – for all Java Tutorials
6. CMS (WordPress, Joomla!, Drupal etc.)
Content Management Systems are the easiest way to build sophisticated web applications, in a shortest possible time frame. Another major advantage in favor of CMS is their simplicity and even a non-technical person would find it very simple to get started.
Though a CMS like WordPress or Joomla! provides the basic features that every web application needs, there is always a need for customization based on the requirements.
Customization usually falls into one of these two categories:
- Themes – to customize the look and feel of the applications
- Extensions / Plugins – to extend the existing functionality or develop a whole new one
I have seen a good demand in the freelancing market for – WordPress Theme / Plugin development, Joomla! Theme / Component development and Drupal module development.
Again, since most of these CMS use PHP as their base technology, an understanding of it is mandatory before working with these CMS.
Recommended Resources:
WordPress Theme Development from scratch
WordPress Plugin Development from scratch
Crash course for WordPress Plugin Development
Creating your first Joomla! template
Intro to Drupal
Joomla! component development is a vast topic and I would recommend you to grab a copy of this book, if you are serious! – http://www.packtpub.com/Joomla-Extensions/book
7. Microsoft .NET
Much like the Java Technology, there is a good demand for .NET based applications. Since they are object oriented and platform independent, .NET applications are suited for both commercial and non-commercial purposes.
Since I am not too much an expert with .NET, I would recommend you to visit their website for learning resources.
8. SEO and Link Building
Since this is not a purely technical topic, many programmers would not find the urge to venture into it.
But there is a good demand for quality SEO and link building experts. In short, it is all about making your site Search engine friendly and increasingly popular in the process.
Primarily the content is what that makes a site popular – but there are some optimizations one can do at the site level, to let search engines take a note of them. This is not a skill that you learn overnight! You learn the best practices, put them into use and keep improving as time goes on. So it may take a while to succeed, if you planning for these projects.
Recommended Resources:
Google SEO Starter Guide [PDF]
Official Google Webmaster Blog
9. Facebook Applications
Facebook is a social networking platform. The power of Facebook is in its extensibility – providing a platform where different applications can integrate with the core Facebook application.
Provided this extensibility, the scope of applications that can be developed is almost infinite. There are already numerous applications developed for Facebook – like Twitter clients, games, calendar apps, etc. You may find projects for developing some interesting social or commercial applications on Facebook.
Recommended Resources:
Facebook for Developers
10. XML
You might be wondering that I never talked about XML, which is a primary communication channel for a majority of web applications.
Though you won’t be developing an application just based on XML – there will be many components that are wired using XML. So an understanding of the basics is mandatory, before you venture into web application development.
XML is a document standard. Ancillary components that can be developed around XML would include – XML generators, XML parsers, XML-Object Mapping, Validations, XSL etc.
Recommended Resources:
W3Schools Tutorial for XML
Though I have shared most of the popular technologies in demand, this is definitely not an exhaustive list.
Feel free to add any missing ones as comments to this blog post.
If you found this useful, consider subscribing to Thoughts Unlimited for more such blog posts!