Web Development Is Hard

Thursday, 11 August 2011

What does it take to develop a web based application today? what are the skills that a web developer should have to be reckoned as complete?

My work involves programming on the Plone platform. In the last month or so, I've tried to make a laundry list of skills that makes a "modern" plone developer.

Note: This is not bare minimum requirement. But, having all these skillsets makes you very valuble indeed.

Without much ado, here is the list

  • Python Programming
  • Structural programming
  • Dynamically typed languages - strenghts and weaknesses
  • Object oriented programming
  • Advanced Python Programming
  • multiple inheritence, Mixins, functional programming...
  • Development practices
  • Debugging
  • understanding of coding styles
  • Source code management - Use of ; CVS or SVN
  • Software Configurartion Management - Trac?
  • Extreme Programming concepts and practices
  • Good understanding of - Why XP?
  • Test driven development
  • XP life-cycle
  • paired programming
  • Writing Unit tests / Regression Tests
  • Selenium tests for client reviews and UI testing
  • continous builds - why and howto
  • Zope platform
  • Perisistent Object Databases - differences with RDBMS models
  • Inheritence / Aquisition
  • TTW(through the web) development
  • Plone as CMS platform
  • Users and Roles
  • Customisation through the web
  • adding/managing content
  • User management
  • workflow management, TTW
  • templating and Python scripting
  • Plone as a development platform
  • File system based development
  • creating new content types
  • overriding plone defaults - advanced customisations
  • Setting permissions programmatically
  • creating custom workflows
  • awareness of existing plone products
  • Front end development
  • very good understanding of xHTML and CSS standards
  • empathy for accessibility guidelines
  • Cross browser compatibility issues
  • DHTML and Javascript
  • AJAX
  • graceful degradation
  • usability

Yes.That is a long list. Being a web developer requires you to be good in atleast 70% of the things listed above. Usually, a team can be sliced as - good python developers, good front end developers, good UI developers(DHTML, AJAX). But, at no point can any one of them afford to be not aware of any of the above skills.

Many a times, developers do not come with all the skills required to sustain the rapid development cycles of XP in the demanding environment of web technologies. But, XP itself provides a solution to that. Paired programming helps in mixing and matching the skillsets of developers. In a tyical two-week xp cycle, there will be enough opportunities for symbiotic learning between developers of the XP pair.

Even though the list looks prohibitive, it is also exciting. The so called 'web 2.0` technologies push the bar higher and higher, some times in a matter of weeks (Yeah. I've not even talked of social applications, multi media and P2P ;) ). But, thats the fun of being in the most happening field - web technologies.

Note : If you are looking to work in such a team, and you feel comfortable with a good number of above skills, contact me.