It is quite interesting to see how web development turned from a niche for brochure-ware and intranets to one of the biggest software development environments in the market over just a few years.
“The web as the platform” is a hollow dream no longer ‐ you can now run and develop a web application without needing to host anything yourself and you can even get the data from other sources. With this radical shift comes a lot of change for developers, but the question is, are you keeping up?
Change is good – we need to get our act together in any case. It’s 2009 and we have the chance to start this year by tackling issues that concern everybody: the general recession, inevitable lay‐offs and lack of investment in non-profit generating parts of organizations. Now’s a good time to get real, regroup, and reassess the ways in which we approach our jobs.
We are in a crisis – have you watched the television lately? It doesn’t make cheerful viewing. However, with every crisis comes the opportunity (and the necessity) to improve and see how we can work more efficiently, producing things that are more valuable and relevant to the people we want to reach. The hype is over ‐ it’s time to get busy, working as professionals.
Back When All This Was Just Fields
Nowadays, things look different. First of all, for the most part it’s impossible to develop offline ‐ this is because we use hosted services, APIs and most likely you’ll write something that uses some data stored elsewhere on the web. Offline web development is becoming very rare indeed, which can be terribly frustrating if you are in a public space or hotel rooms. In other words, we build on already tested and proven concepts instead of building everything ourselves. This means we have to do much less work, but it also means that we don’t have full control. We rely on data being available to us by third parties or ‘the web’. This is pretty tough for developers as we tend to be control freaks.
Aiming Higher and Wider
The other thing that can be a hurdle for the old school developer is the fact that we tend not to build new systems any longer. Back in the day we worked on the bleeding edge: almost everything we built was the first of its kind on the web and clients came to us to build their first web presence. Users were easy to come by and people were eager to do things easier and quicker on the web. This is pretty much over.
Unless you have a ‘very’ compelling product or idea clients will already have something in place that they use and will have already spent a lot of time and money on it. Maintenance is much more common than innovation. Users are much more spoilt by choice and already spend a lot of their time using other products ‐ just building something and hoping that users will come is not enough any longer.
Most products you’ll build these days are aimed at piggy‐backing on existing user bases and use cases, rather than creating something entirely new. The web has become much more of a commodity than it used to be and a lot of people rely on it for their day‐to-day chores and social communication. For example, the amount of people that started to get in contact with me after years of silence is staggering. The reason? Facebook and how simple it is to use. These are the same people that asked me if my e-mail address would change when I moved to another city!
These social networks create huge traction, and even hardware developers jump on them to sell their newest products. Just yesterday I saw a mobile ad at the train station telling me that the new smart phone automatically gets updates from my friends on Facebook. Sounds a tad creepy to me, but I’m sure it boosted that manufacturer’s smart phone sales and I am sure many a teenager will be asking for this one for their birthday.
Social networks are taking over in all kind of environments. The same is happening to search engines.
For example, I do see a lot of movie posters on my way to work and realized lately that the film industry has stopped bothering with domain names for movies (I guess domain squatters blackmailing them are to blame). Instead I started to see “enter xyz in Google to learn more” and one movie even used a bebo and myspace address instead of a domain. This is quite commonplace in South East Asia already.
A ‘New’ Breed of Developers
What shall we do about it? We could sit sulking in our developer corner claiming that these things will never work but the fact is that this is where people invest and the money still flows. It is also where the users are. There is a big market in some technologically underdeveloped countries for Facebook applications and even blog systems. Using out‐of‐the‐box solutions companies can easily cover both the development and the maintenance of the content. Can you for example guess where http://s2999.com is written and maintained?
The interesting fact for businesses is that these developers are pragmatic. They don’t cost much for a business to hire, they deliver the job without trying to lecture you and all they expect is a share of the outcome. Us on the other hand, leading and amazing developers that we are, are rumored to be tricky to work with, grumpy even. We don’t want to use things that other people made and are very happy indeed to tell any business person that they are wrong and we know all about the web. Who’d you work with?
Sure, this is nothing new – outsourcing shops have promised cut‐price development for years and most of the time the outcome was appalling (funnily enough, in a lot of cases not because the developers were bad but the management didn’t know what they wanted or failed to give precise delivery specs). With the systems in place though, development becomes much more of a ‘use’ case than a ‘build’ case and this is the biggest challenge we now face.
Goodbye White Canvas, Hello Lego Bricks
In essence, web development these days doesn’t start with a blank document but with downloading an SDK or entering your application data in some web app to get a developer key. In other words using a system that is much larger than anything you’d ever have done yourself. This concept is very hard to swallow for us battle‐hardened masters of the command line and I myself have problems getting enthusiastic about using a chunk of ‘hello world’ code and turning it into something great.
If we look at it logically, however, and leave our ego to go and play in the garden for a while it’s clear that there are many valid reasons to use SDKs and hosted development environments. It’s exactly the same thing we do as clever developers ‐ build ourselves shortcuts, hack our development tools or assemble our very own library of snippets – in order to avoid having to do the same things over and over again.
Using SDKs and hosted development environments shouldn’t mean your work will be dumbed down or that people won’t respect you as a developer. It means that they are helping to take the pain away and have taken away the hoops that they jumped through so that you can just build something interesting without worrying about the underlying architecture, security of the system or its performance.
Abstracting these away means you can easily do fixes or improvements should the need occur ‐ and boy will it occur. It is not fun to maintain a site or a server these days. The amount of people that want to hack you and inject malicious code is staggering and their skills are impressive. The only way to battle these threats is to have one system to fix ‐ not millions of little applications.
Abstraction also means that many more people can start developing applications. Geeks build geek tools, designers build designer tools, ‐ if you lower the entry barrier to developing, all groups can bring their expertise to play with the system and subsequently you can build really cool tools together. Of course, there is a lot of pointless and bad work being done too (no, I don’t want your teddy bear to travel on Facebook or catch dozens of sheep) but that’s like saying HTML is bad because people can use tables and fonts to create layouts fast instead of using CSS.
So Are We Obsolete?
Does this mean that the tinkerers, the people who spend hours fixing an IE6 bug or open the border of the screen to show sprites outside the dedicated area (yes, C64) are obsolete and should just move on? No, it doesn’t ‐ not by a long shot. If we cave in now and grumpily sit in the corner pointing at the kids with their fancy SDK toys we are indeed obsolete, but there are a lot of things that this brave new world of development needs us to do.
It needs us to analyze the systems and see where they need improvement. For example the amount of accessibility issues that can be fixed in social networks with very little effort is staggering. Most of these issues are not there because people are lazy but because they just don’t know about the consequences of their actions.
Why not help with turning these systems into a working network of systems. Open Social is a great idea but suffers from too many people shouting ‘FAIL’ at it instead of helping to fix it.
Why not work on bridging the gap between our two worlds. There is no sense in offering people a text box in an HTML page to develop in. I have used one of these and the resulting code is ‘always’ terrible. The same applies to code editors in a browser doing the indenting and colour coding for us ‐ they are flaky and when they crash they take your whole app with it (and the pictures of kittens you had in another tab). There are some Firefox extensions that allow you to edit text in your editor and then enable you to pull it back into the text area with a keyboard shortcut ‐ more of those please. Show by example how your expertise can make web applications better and how communicating with you upfront makes for better APIs and SDKs.
So What About the Future?
If I knew that… However, what I will say is that the way some web developers deal with market forces and business people is wrong.
So, (a little late) here are some of my New Year’s resolutions for this year:
- Give things the benefit of the doubt before judging them. In other words, keep the ‘FAIL’ shouting to the funny blogs where it belongs.
- Take time to have a look at the SDKs, hosted services and frameworks out there and write about them instead of showing yet another proof of concept.
- Try to talk to people in charge of these systems to stop them from aggravating the developer crowd with decisions that are perfectly logical to them but don’t hold up in our world.
- Great API developers don’t necessarily know HTML and their demos might be atrocious table and font monsters. Instead of shunning the API provide examples of how to do it better. Explaining the effects that bad API design can have goes much further than judging only by our own standards.
- Clean up the demo code of the systems, SDKs and APIs that I have direct access to. There is nothing worse than a bad example being replicated million fold as people copy+paste instead of reading docs.
- Write human readable documentation and don’t expect a degree in Klingon. Ask non-developers how real people use systems and what they like most about them.
What do you think? Is it time to live in the now and help build a good web 2.0,3.0,4.3212 and so on or have we lost the battle for a beautiful, valid and semantically rich web already?