I was thinking back to a few years ago when I first started with the web. In the heady days of 1997 when I first dabbled, you needed an HTML editor and some image software and an FTP client to make a basic site. The expert use of nested tables and overcoming Netscape 4 and IE incompatibilities were the sign of a guy who could make a decent website.
I went back to uni as a mature student years after this and while doing so did some freelance work and now work at a web agency as a full-time developer. While I was teaching myself how to do all of this web-stuff all that time ago, I remember having no concept of programming, what it was I was actually doing when I somehow made a site appear on the web. The job always changes and so does the raft of skills a good developer needs. If you’re a newbie to web development, here’s a few pointers:
- Don’t run after loads of different languages or technologies. To be an allrounder you will need to know a thing or two but often knowing a scripting language, good mark-up code and some design/CSS is a good start. Have a scan over whats available (like in server-side scripting there’s the Microsoft .net stuff (ASP), PHP, Ruby on Rails, Python and many more) and choose one that makes sense to you. Once you know one language, it’s relatively easy to move to another later.
- Realise that other, non-technical people will be using the site you’re making, so try and make sure that anyone can use it and you make no prerequisites on their understanding or technology.
- Try not to reinvent the wheel. There’s always the temptation to do something you’re own way, even though there will be scripts or systems or frameworks that can do it all for you. When working for a client, they don’t care how you’ve programmed their site, just that it works and that its reliable.
Going to college or university isn’t necessary to be a professional web developer but I found it gives you a decent grounding in understanding what’s happening underneath what you’re working on and help you to not become absorbed into one language but look at code in a more generic way – it’s all just different ways of writing similar things and every language has benefits and downsides dependent on what you’re using it for.
So in 2008 this is what I’d suggest to anyone starting out:
- Understand what LAMP means: Linux, Apache, MySQL & PHP are almost always the right combination if you’re not into the ,net way of doing things.
- Style: Use CSS (Cascading style sheets) to structure, colour and present your mark-up. It makes it very quick and easy to have a few core style sheets and neat mark-up.
- Databases: Its worth looking up about normalisation to improve database design. A little learning about how to structure data can make your site scale and perform better as well as making it easier to extend down the line. You’ll often find MySQL in the LAMP stack.
- Server-side: meaning code that runs on the server. I’m a PHP guy and I’m loving the object-oriented approach you can take as of version 5. Work out what objects are and write a little code as possible!
- Accessibility: In most countries there’s guidelines based around work by the W3C to enable web developers to make their sites accessible to those with disabilities. In many places it’s actually a legal requirement, especially in government bodies and such.
There’s a lot to digest when you go through it! Look into these areas and see what grabs you as a place to start. You might find that using the ASP.net approach on Microsoft IIS servers is for you or that Ruby or Python just make sense to you.
If you’re past all of that, I’d recommend:
- Microformats: little HTML attributes set to common standards such as hCard for contact details can help make your sites better understood by machines. Concepts such as this and FOAF & XFN (which both describe your relationship with other people you link to) are worth checking out for the future.
- APIs: thousands of sites has APIs (application interfaces) that allow you to interact with their code and data. Google for example has everything from Maps to Calendars all with APIs you can run on your site.
- Security: This should be #1 any time but in every code and database you need to see what you can do to make your site and the data within it safe.
- Frameworks: This can save you a lot of time if you can out the time into experimenting with them. Rail is the most popular example for this, written in Ruby although CakePHP is among the better ones I’ve seen.
- Languages & encoding: This is still an area a lot of people fall down on. Making sites multi-lingual needs understanding of how other languages like Arabic or Japanese works as well as Latin languages like French and Italian. Escpecially if you’re working on a CMS that allows users to write in any language, allow them to present it properly!
Bottom line though – always consider the users!