I have implemented various projects with responsive design techniques. In its purest form responsive allows the CSS (styles) to change what content is shown or styles / layout, based on screen dimensions or screen resolution. This initially sounds like the winning ticket, however I feel alone, in its pure form its is typically only suitable for MVP (minimal viable product) or for a prototype.
Unfortunately its really tough to deliver great mobile experience across the wide landscape of operating systems (Android, iOS, BlackBerry, WinPhone, etc) and the even wider landscape of devices with manufacture tweaks to the browser or OS (typically on Android). To achieve the best experience It requires more than just swapping styles based on screen size.
It requires responsive's big brother - Adaptive.
So what is different between devices that causes issues with a pure responsive approach?
- Pure responsive fails, as the older device ignore the instructions to resize the web page. Viewing a responsive site on a BlackBerry Curve will show the 'default' version of the site which in many cases is actually the desktop version, not good.
- Different devices require tweaks and work arounds to achieve the desired design, it can be highly complex to include these in one code base. The alternative frequently taken is to simply ignore the differences, not my preference beyond proof of concept.
I hear some non-techy folk say - so what, make the codebase more complex. Thats what we pay engineers for. The problem with more complex code is making changes or adding new features becomes more complex too. Complexity = time, and we all know that time = money. If you want to save money in the long term then you will need a strategy that handles responsive and device specific.
In my company we use responsive, but coupled with device detection - an adaptive approach. To put it simply, where we need to we will target specific code to specific devices. This is used to achieve backwards compatibility or deliver an older HTML version or even a text only version to the lower end of the mobile devices - there is no other solution apart from ignore them. User experience and site performance (speed) matters more than having one code base for all devices.
This area is going to get more complex with the arrival of new open source OS such as FireFox OS which manufactures will tweak. Its not just open source, iOS 6 changed how code was cached and required tweaks which earlier devices did not require.
To conclude go for it and maximize responsive technology, but as you add complexity and hacks to support more devices be very aware of the risks. Constantly ask, is now the time when we have to be Adaptive and have device recognition as well as responsive.
If you care about experience and recognise that conversion (income) is impacted by experience you will make that jump to Adaptive sooner.
I will write more about the goals of Adaptive and alternative approaches.