1

What technical skills-sets are considered essential for freelance web application developers (coders)? Why are they essential?

(i.e. mark up, scripting/programming languages, design, RDBMs, versioning etc.)

This question relates specifically to 'technical skill-sets' (i.e. please don't include soft-skills such as people skills, or time-management skills, etc. as those are not 'technical' skills and beyond the scope of this question).

6
  • 1
    This question seems to be a bit broad... Can you narrow it down a bit?
    – Canadian Luke
    Commented Apr 11, 2014 at 21:16
  • Hi Niv. The best questions on our site are about real, everyday problems freelancers face, problems that really get the experts thinking. Instead, think about a problem you faced as a freelancer related to technical skill-sets, and use that as a basis for a real, actual problem that can be answered with expert, in-depth answers. Please see Good Subjective, Bad Subjective for guidance on how to reform your question. Hope this helps.
    – jmort253
    Commented Apr 12, 2014 at 2:04
  • 1
    It really depends upon the what specific work you are doing. If you are WordPress plugin developer, you need to know PHP, WordPress. Similarily if you develop front end of websites, you should know HTML, CSS. But, combined experience (not much) in HTML/CSS/PHP/MySQL/JS are generally good as you can do a variety of jobs.
    – user702
    Commented Apr 12, 2014 at 6:44
  • @jmort253 - I reflected on this for a bit. The type of answers I'm looking for are along the lines VarunAGW answered as a comment, except hopefully expanded upon - for example, I don't think you get by as a 'developer' without knowing HTML. You would also need to know how to use an IDE, FTP, how to set up a server (i.e. run and test your code), and so on - so there are 'technical skills-sets' you need to know and can't really do without. If the question is still not acceptable as per your discretion, then I'll delete it - no hard feelings either way - let me know your preference.
    – NivF007
    Commented Apr 14, 2014 at 0:37
  • 1
    Thanks for the edits, @NivF007. This is still a little broad, but the edits help a lot and this could still get some answers based on facts, references, and expertise.
    – jmort253
    Commented Apr 14, 2014 at 1:52

3 Answers 3

3

If you are going to be a successful freelance developer, then you need to be very competent across the entire web stack, from manipulation of data right through to presentation in the browser. You can't simply be a specialist in either front or back end development and rely on another team member to provide specialism in the other discipline, unless you partner up with someone.

Given the breadth of internet enabled devices that websites are expected to work on these days, a solid understanding of HTML/CSS and responsive layouts is a must. I don't believe that it's a designer's job to work on the presentation layer of a website. As soon as you have to crank up an IDE and write any kind of code (and I include HTML and CSS here) then you are firmly within the remit of the developer. Besides, having a flair for front end development is where you have the largest impact on your clients, because that is what they see.

Coupled with strong front end coding skills, which has to also include JavaScript, must come a strong appreciation of website usability and user experience. You often need to guide the client on the best way to present a particular feature, so having good UX skills is key.

You don't have to go much beyond a simple brochure website before a client is requesting features that require some kind of server side language, so competence in your chosen server side discipline is a given. The level of expertise and whether you also need any expertise in database design and manipulation will be determined by the kind of websites that your clients require. If they need something that is very data-centric or bespoke, then it becomes very important. If the website is not dependent on data particularly, or requires a CMS plugging in, then most of that is taken care of for you. The problems with not having expertise in the database aspect come when the inevitable question comes in asking you to customise this little bit over here and store some custom data.

Aside from the overall programming aspects, strong knowledge of whichever server platform you need to deploy your client sites too becomes far more important, whether that is IIS configuration for Windows, or Linux/Unix/Apache, etc. If the site needs to be deployed to the cloud, you need to be prepared to become an expert in whichever cloud hosting platform your client wishes to use. The more of an expert you can become in the way that these platforms work, the features that they provide, and crucially, how much they cost, the greater impact you can have on your clients' decision making in this regard.

You should also be comfortable with a variety of source control systems. I am currently working with clients that ask me to use Git and TFS and have also had to use Subversion and Mercurial, so having a willingness to embrace these technologies helps, both with client relationships and your own technical development.

3

Honestly you are selling yourself, and your ability to create something, your clients likely will not care what technologies you use in the process. Therefore I would say being competent with at least one set of full stack technologies. As others have mentioned this almost certainly means having a solid grounding in HTML, CSS and Javascript (arguably you can get by using templating languages and CSS preprocessors, but it all ends up being HTML/CSS/javascript).

From there it can go any direction, many folks enjoy the Ruby language and therefore the Ruby-on-Rails framework is a great toolkit. A great aspect to rails is the ecosystem of plugins (Ruby gems) for doing almost anything you will need for building most web applications. If you really enjoy javascript there is node.js and a number of front/back end frameworks from express to angular to meteor. These just scratch the surface of what is out there of course, the point I think is to find something you enjoy working with, and use that for a while. Also, regardless of the framework and language you use, it is important to have knowledge and experience with some sort of database system be it a RDBMS or NoSQL.

Design is a great technical skill, 'technical' may not be the right word though, nevertheless it is very important as its the part most customers will be heavily focused upon. Good design skills are a mix of passion, artistry and understanding your client and by extension, their customers. Its easy to imitate what other people have done, what has worked well, but knowing what design to apply where and when is what makes for a successful designer. I think practice is inevitable and invaluable, always seek feedback, but don't always listen to it.

TL;DR - Start with a full stack, and expand from there.

2

To succeed in this game, you have to know how all the technical pieces fit together, and why, and when to use them. That could mean:

  • Use of RDBMS or NoSQL databases
  • web services - use and implementation
  • file services - use and implementation
  • TCP/IP protocols - use and pitfalls
  • how to use one web server implementation vs another (IIS vs Apache vs NGINX, for example)
  • Networking (subnets)
  • when to use a CMS, and when NOT to use a CMS
  • Browser quirks
  • Caching - http and application
  • Secure sockets
  • Picking the best OS for an implementation (it matters)
  • Do's and don'ts of sending mass email or SMS

It is a big mistake to label yourself as a "coder". All of these are technical skills that clearly transcend such a label.

Your customers (or prospects) will develop a limited expectation of you by the very label you use (or allow them to use). This limited expectation will often translate into the prospect paying you less than your real value.

Personally, I answer to 'contractor', 'developer' or 'software engineer'. 'Technologist' isn't so bad though I think it's a term that doesn't indicate anything. But never 'coder', and most especially, never 'hacker'.

1
  • Great answer. I agree that the term 'coder' is 'limited' - I've heard the term 'Full Stack Developer' used, perhaps more appropriate, but my attempt was to distinguish 'developers' from 'designers.' Software Architect is a good description, but usually reserved for a Senior Developer with years of experience - sometimes SA's don't even code. A 'Software Engineer' (sorry Professional Engineers for using that title) is also considered a very high-level full-stack expert - what I'm looking for is what's expected of Freelance Developers - the above answer is great starting point of essentials!
    – NivF007
    Commented Apr 15, 2014 at 0:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.