The Complete Magazine on Open Source

Be a Proficient Web 2.0 Developer!

SHARE
/ 211 0
web-2.0This article walks readers through the requisites of a good Web developer. For those who wish to make a career as a Web developer, it is a must-read!  

Like many scientific concepts, the term Web 2.0 doesn’t have a clear definition or boundary, but encompasses several principles. Primarily, it positions the Web as a platform, as software as a service and not as a packaged product. Tim O’Reilly has explained Web 2.0 in his landmark article by comparing trends that define Web 2.0. The complete article ‘What is Web 2.0, Designs and patterns for the next generation of software’ is available on http://oreilly.com/pub/a/web2/archive/what-is-web-20.html?page=1

Lack of a clear boundary is evident in startups, too, where developers handle user queries, provision servers and other hardware, etc. It’s not uncommon to see a PHP guru trying to tame a heavily swapping VPS, installing the latest HTTP load balancer, deploying code to servers and performing several other tasks. This convergence is called ‘DevOps’ and is the Web 2.0 way of doing things. Having a fluid boundary makes it extremely difficult to clearly define the responsibilities and skills of a Web 2.0 developer. Most developers have a multitude of skills. They spend a large portion of their day (and night!) writing code, refactoring, trying out code snippets, checking out technology news, and helping other developers on various forums–thus constantly pitching themselves against similar, bigger and brighter minds on the Web.

If you yearn to be a Web 2.0 developer and wish to make a mark in an industry that is evolving rapidly, you should first know that the older ways of crafting solutions might not yield productive artefacts, and you require new methodologies and tools to architect and deliver solutions. You should be willing to invest time and energy in learning new things to keep up, otherwise you risk being outdated. You should constantly read, learn and continue to build your arsenal to be successful. The following sections should help you get started on your journey to becoming a successful Web 2.0 developer.

Hardware and other gear
You should have access to a laptop/PC (the older the better and even Celeron is fine!). Then you require an Internet connection with a wireless router if possible, because you’ll need it to download applications and interact with other developers on various forums.

Operating system
Linux is a favourite among Web developers and most Web solutions, barring a few, are hosted on some flavour of Linux. So knowledge about Linux is a must for you to find your way around host machines. A good knowledge of the command line (CL) syntax is essential. And familiarity with awk and sed programming is an added advantage.

Centos and Ubuntu are two of the most popular distributions. The magazine that you are reading regularly distributes the latest versions of these OSs in the accompanying DVDs. You can also visit the website of a particular OS, to download its latest version.

Browse the following to know more:

  • The community enterprise operating system –
    http://www.centos.org
  • Ubuntu Desktop and Ubuntu Server –
    http://www.ubuntu.com
  • An A-Z index of the bash command line for Linux – http://ss64.com/bash/
  • ‘Linux in a Nutshell’, 6th Edition, by Ellen Siever, Stephen Figgins, Robert Love, Arnold Robbins, O’Reilly. This is a good desktop reference and should be part of your library.
  • sed and awk pocket reference’, 2nd Edition, by Arnold Robbins, O’Reilly.
  • Classic Shell Scripting’, 6th Edition, by Arnold Robbins, Nelson H F Beebe, O’ Reilly

The database
Web 2 applications are much more than plain websites—they provide business functionality and require data and results to be stored. Knowledge of a database is a must for a Web 2 developer. As of writing this article, MySQL is the most popular choice for Web solutions. Postgres is beginning to gain widespread acceptance, while Percona (a MySQL clone) provides replication and other capabilities that are otherwise available only in the commercial offerings of MySQL. You could start with MySQL. A good knowledge of command line MySQL administration and phpMyAdmin is a must, not to mention a sound knowledge of writing SQL queries. Knowing database modelling using IDEF1X and being able to refactor the data models is an added advantage.
Browse the following to know more:

  • Percona – http://www.percona.com/
  • Postgres – http://www.postgresql.org/  
  • phpMyAdmin – http://www.phpmyadmin.net  
  • MySQL Developer Zone – http://dev.mysql.com/
  • MySQL in a Nutshell, 6th Edition, by Russell J.T. Dyer, O’Reilly

Scripting
Knowledge of server side scripting is what distinguishes a Web 2 developer. Expertise in either PHP, Python, Ruby or Perl is a must. Though the relative advantages of each of them are debatable, there are several people who have started out with PHP. You might want to consider PHP before you move to other scripting languages. In addition to learning the syntax, a good grasp of the coding and naming conventions of the scripting language are a must for others to understand your code and help you when you seek their assistance.

Client side scripting using ECMA Script (or JavaScript, as it is popularly known) is essential to provide visual appeal to your applications. AJAX style scripting is something that you should learn, in order to make your pages truly interactive.
Browse the following to know more:

  • PHP: Hypertext Preprocessor – http://www.php.net/
  • Python programming language – http://www.python.org/
  • Perl programming language – http://www.perl.org/
  • Ruby, a programmer’s best friend – https://www.ruby-lang.org/en/
  • Programming PHP’, 3rd Edition, by Kevin Tatroe, Peter MacIntyre and Rasmus Lerdof, O’Reilly
  • Programming Perl’, 4th Edition, by Tom Christiansen, Brian D Foy, Larry Wall and Jon Orwant, O’Reilly
  • Programming Python’, 4th Edition, by Mark Lutz, O’Reilly
  • The Ruby Programming Language’, 1st Edition, by David Flanagan and Yukihiro Matsumoto, O’Reilly

Markup and CSS
All content on the Web is rendered by a browser using HTML markup tags. A thorough knowledge of CSS and HTML is a must to bend and tweak your server side scripting to render your content aesthetically and include some fizz! It is an advantage if you are aware of at least one theme engine like PHPtemplate, PHPTAL, Smarty or XTemplate. Knowing the HTML and XML DOM models adds to making your resume stand out.

Browse the following to know more:

  • PHP Template Attribute Language – http://phptal.org/
  • Smarty Template Engine – http://www.smarty.net/
  • PHP XTemplate – http://www.phpxtemplate.org/HomePage
  • Cascading Style Sheets – http://www.w3.org/Style/CSS/
  • SASS – Syntactically Awesome Stylesheets – http://sass-lang.com/
  • Compass – CSS Authoring Framework – http://compass-style.org/
  • Bootstrap – http://getbootstrap.com/css/
  • The dynamic stylesheet language – http://lesscss.org/
  • CSS: The Definitive Guide’, 3rd Edition, by Eric A Meyer, O’Reilly

Frameworks and patterns
As the saying goes, “A good programmer knows what to write and a great programmer knows what to rewrite.” So it’s unlikely that you’ll be asked to code a login page over and over again, especially when frameworks and software patterns are available for free. Being aware about the frameworks available for your scripting language is essential and a sound knowledge of at least one of them is a must.

Browse the following to know more:

  • Zend Framework – http://www.zend.com/en/products/framework/
  • CodeIgniter: A fully baked PHP framework – http://ellislab.com/codeigniter
  • PEAR – PHP extension and application repository – http://pear.php.net/
  • Django: The Web framework for perfectionists with deadlines – https://www.djangoproject.com/
  • The Pylons Project – http://www.pylonsproject.org/
  • JQuery: A feature-rich JavaScript library – http://jquery.com/
  • Dojo: http://dojotoolkit.org/
  • Mootools: A compact Javascript framework – http://mootools.net/
  • Ruby on Rails: Web development that doesn’t hurt – http://rubyonrails.org/
  • Zend Framework, A Beginner’s Guide’, 1st Edition, by Vikram Vaswani, McGraw-Hill
  • Zend Framework In Action’, by Rob Allen, Nick Lo and Steven Brown, Manning
  • Professional CodeIgniter’, by Thomas Myer, Wrox
  • Dojo: The Definitive Guide’, 1st Edition, by Matthew A Russell, O’Reilly

HTTP servers
Apache is the Web server of choice for hosting Web applications. Knowing how it works is essential. To truly exploit its powers, get your hands dirty on the Apache directives.
NGINX is gaining popularity as a low memory footprint HTTP server for PHP and Perl applications using fast CGI. It can also be deployed as a HTTP load balancer.
Lighttpd is a lightweight HTTP server usually used to serve static content and complement the main HTTP server so that page downloads to the browser can be accelerated.

Browse the following to know more:

  • Apache HTTP server – http://projects.apache.org/projects/http_server.html
  • NGINX – http://nginx.org/
  • Lighttpd – http://www.lighttpd.net/
  • Apache: The Definitive Guide’, 3rd Edition, by Ben Laurie and Peter Laurie, O’Reilly

Architecture
To build industrial strength software applications, you’ll need a sound architecture represented with an appropriate notation like IDEF1X or UML. As a programmer, you would be required to understand the rules conveyed in these architecture diagrams, which need to be built into the code. So a sound knowledge of IDEF1X and UML is a must. Further knowledge of the software architectural patterns is definitely an advantage.

To know more, read:

  • ‘Design Patterns: Elements of Reusable Object-Oriented Software’, 3rd Edition, by Eric Gamma, Richard Helm, Ralph Johnson and John Vlissides, Addison-Wesley

Supporting disciplines
Software development has supporting disciplines like testing and versioning of the various artefacts. So a sound knowledge of automated testing and version control is essential to be a great software developer. Debugging is another skill that you should cultivate to fix your applications, so that they work the way they should.

Browse the following to know more:

  • Concurrent Versions System – http://www.nongnu.org/cvs/
  • Apache Subversion – http://subversion.apache.org/
  • Git – http://git-scm.com/
  • PHPUnit – http://phpunit.sourceforge.net/
  • Firebug – https://getfirebug.com/
  • Webdeveloper Toolbar – http://chrispederick.com/work/web-developer/

Regular expressions
Regular expressions (regex) are used extensively in programming to find patterns for replacement. In your career as a programmer, you will use regular expressions extensively in your programming and research. Most HTTP server redirect rules are based on regular expressions. For that matter, you may have used regular expressions unknowingly. Surprised? *.*, which is the notation for a file of any name and any extension, is the simplest example to illustrate the power of regex. So get yourself acquainted with regex for a truly fruitful experience.

Browse through:

  • ‘Mastering Regular Expressions’, 3rd Edition, by Jeffrey E F Friedl, O’Reilly

Methodology
Developing software is difficult, and without a meaningful methodology it becomes both difficult and painful. Technology is solving newer and newer problems, and business models are being rewritten almost every three years. Remember Orkut was overshadowed by Hi5, and Hi5 was overshadowed by Facebook, as the social networking platform of choice, all within about five years. Such rapid changes require high velocity programming, which in turn, requires an agile method like Scrum or XP.

As software engineering continues to evolve, we are beginning to see the convergence of the ‘development’ and the ‘operations’ functions; so as a developer, you should be comfortable writing new code as well as fixing legacy ones even while answering questions on your support portal.

Browse through:

  • Extreme Programming –  http://www.extremeprogramming.org/
  • Scrum – https://www.scrum.org/
  • DevOps – http://devops.com/

Philosophy
It’s true that programmers live and work adhering to a certain philosophy. You are likely to come across terms like the DRY Principle, Inversion of Control, etc. To make it easy for you to discover a work philosophy that suits your personality, it’s highly recommended that you read the following essays to truly distinguish yourself.

Essays you must read:

  • The Cathedral and the Bazaar, by Eric S Raymond – http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/
  • Beyond Code, by Rajesh Setty – http://www.rajeshsetty.com/resources/books/beyond-code/
  • Mythical Manmonth, by Fredrick Brooks –  http://en.wikipedia.org/wiki/The_Mythical_Man-Month

Copyright laws
As a programmer, and especially after you’ve read this article, you’ll be tempted to try and reuse code as much as possible but this does come with some caveats. Usage of someone else’s work requires their consent, and most of them advertise the terms of this consent by publishing their work under a set of copyright laws. So an awareness of the various licensing mechanisms like Creative Commons, Copy Left, BSD, etc, will ensure that you don’t get on the wrong side of the law, and that you use the code according to the licence terms under which it has been released.

Business analysis
A project involves multiple stakeholders. You should learn the fine art of mapping business requirements to architectural diagrams and then translate these architectural diagrams to code. When this step is done right, fewer bugs reach the customer, and you spend less time dealing with a frustrated client. An understanding of the client’s business is essential to achieve this.

Project management
Though you needn’t know all the nuances of being a project manager, it is essential that you know how to prioritise tasks. You must know how these tasks are related to each other and how a delay in one critical task leads to the whole project being delayed. To be on top of the schedule you should be organised in your activities to ensure that everything works on the day of deployment. Choose the method that works for you. Here are a couple of books to get you started.

Browse through:
Seven Habits of Highly Effective People, by Franklin Covey – http://www.franklincovey.com/
Getting Things Done, by David Allen – http://www.gtdtimes.com/

Aesthetics
A thing of beauty is a joy for ever. Without an aesthetic appeal, a product is unlikely to find acceptance, no matter what features you put into it. Visual appeal in terms of colour, layout, typography, fonts and other eye candy is a must, and as a Web 2 programmer, this is an essential skill for your success.

Downloading code
There are several online repositories from where you can download code snippets or an entire project, and modify it to your heart’s content (check the accompanying licence for restrictions).

The most popular among source code repositories are https://github.com/ and http://sourceforge.net/. Check out the trending repositories on GitHub to see and participate in the most active projects. SourceForge has a ‘hall of fame’ called ‘Project of the month’. Another notable mention is http://freecode.com/ which was called ‘Fresh Meat’ a few years back. It has a list of the most popular projects. Google Code (http://code.google.com/) has several popular APIs and tools that you might find useful.
Keeping up with others by hanging out and networking
Most of the technologies mentioned above have well documented manuals and ‘Getting started’ guides. The forums on these sites are very active and responses to questions often get posted within a few seconds. There are several online sites that have presentation slides, speaker notes and videos that you can download for free. Check out Slideshare (http://www.slideshare.net/) and Slashdot (http://slashdot.org/). Slashdot has all the news to whet your appetite for all things geeky.
You need to complement your quest for knowledge by hanging out with people of your own kind. So you have to ‘flock’ with ‘birds of the same feather’. Most programmers exchange ideas and post queries on the several Stack Exchange sites (http://stackexchange.com/). You’ll be awarded points for accepting other people’s answers for questions you have posted and answering other people’s questions. You will most probably use two of the 100 odd sites out there – Server Fault (http://serverfault.com) and Stack Overflow (http://stackoverflow.com). So register yourself for a Stack Exchange account, earn points, badges and see your reputation grow. Some Web development companies rely on this reputation score while evaluating job applications.

Hasgeek (https://hasgeek.com/) provides online discussion spaces for geeks and even hosts events. You can learn new things on these channels or if you feel confident enough, participate in their ‘hacknights’. By the way, they do have a job portal.

IBM Developer Works has several tutorials that cover a broad technology landscape (http://www.ibm.com/developerworks/). The articles on the site come in bite sizes and do not overwhelm the reader. It’s a good place to begin your quest for knowledge.

For the latest on hardware–yes hardware, because remember, you write your software to run on some hardware – visit http://www.anandtech.com/. AnandTech has a review on most hardware that hits the market.
The magazine you are reading has an annual conference for open source enthusiasts called OSI Days. It offers tremendous opportunities to hear eminent open source programmers talk about their technologies, platforms and work.
Most cities have several special interest groups – Bar Camps, the Drupal Community and Linux Users Groups are some of the most popular ones. Join the ones that you find exciting and interact with people, seek help with your code, share ideas and watch yourself grow.