So – are you a server-side or client-side developer? What if I said that was an archaic way to classify application development. I believe that the clear red lines that used to separate client-side and server-side application development are increasingly blurring. In order to be an effective application developer in this day and age, you need to be at least comfortable (if not proficient) at both ends of the HTTP connection. Let me explain.
- HTML5 + CSS3: Back in the day, developers had to use various proprietary plugins and technologies like ActiveX and Flash to implement rich UI interfaces. This was yet another barrier that kept server-side developers such as myself from doing anything serious on the client-side. With the advent of standards like HTML5 and CSS3 however, you can now develop compelling web applications that support push notifications (via WebSockets), advanced graphics (via Canvas, WebGL etc), offline access (application cache and client-side storage) and much more without having to resort to proprietary plugins or technologies. I see HTML5 as another key enabler of the broader trend of moving more application logic to the client-side and developers need to get on-board or risk getting left behind.
- Mobile development: The next frontier in enterprise application development is surely mobile. So if you’re developing a native (say Android or iOS) or web (i.e. HTML5) mobile application, are you a client-side programmer or a server-side programmer? A lot of mobile development involves dealing with UI elements and layouts (traditionally thought of as client-side programming), but enterprise mobile applications in particular also need to access backend services and data using protocols like REST and OAuth. Moreover, given the resource contained environment, native mobile app development in particular requires intimate knowledge of things like asynchronous processing, threading and memory management (in the case of Objective-C). The old-school client/server programming divide therefore largely doesn’t apply to mobile development.
Having outlined my Grand Unified Theory for application development, it is now time for some important caveats. First, I believe that the lines between client side and server side programming are being blurred, not erased. Most developers will still choose to specialize in one or the other. Rather, the key takeaway here is that modern web/mobile applications no longer afford you the luxury of focusing on any one ‘side’ exclusively. Second, not all applications are web or mobile apps and so this reasoning only applies to a certain subset of application development.
So if we can no longer think of ourselves as just client-side vs. server-side developers, how do we classify application development? I think that a better way of thinking about it is what type of applications you’re building. Are you a Social application developer who builds apps to connect users to their ‘social graph’? Are you a SaaS application developer? Or are you mobile application developer? Perhaps a Game developer (even in the Enterprise)? All of the above? Whatever your answer, just remember that the next time someone asks you whether you’re a client-side or server-side developer, you can answer ‘Wrong question’.