Wednesday, February 02, 2011

What do developers want in the Cloud?

OK, so the title is a loaded question, because I'm getting hit from all sides with conflicting information. Plus as a developer myself, it's often hard for me to be objective. For instance, not everyone loves emacs the way I do! This could also be a very wide ranging discussion on aspects from repositories through to runtime management. Maybe I'll revisit some of those in later entries, but for now I feel compelled to focus on the editor/IDE component of the development experience.

Over the years I've used a range of different editors and IDEs. I'm not going to list them all here, but the fact that I still use emacs and the command line shows that perhaps I'm not easily pleased. However, whether it's emacs, Eclipse or (shudder) vi, I always have my development code on my laptop or desktop. Yes it may get pulled down from a remote repository, but it's edited locally before being committed back. This is a fairly standard way of doing things and probably the only thing to change over the past 20+ years is the repository aspect. Before cvs, svn and git there were ad hoc solutions, but the result was essentially the same: remote backup/sharing mechanism but local development.

Does cloud change this? Well I hadn't really put too much thought into this because I really didn't (don't) think it does. As a developer I still need a repository (OK, that could be hosted in the Cloud - I don't care as long as it is available when I check out and check in code). And I still need a local development environment with an IDE or editor, right? Well there's the problem. I think I do and I know quite a lot of people who think similarly. These folks are long time developers across a range of industries and academia, who expect to be able to code locally and deploy remotely into the (public or private) Cloud.

However, it seems that there is an alternative option, where everything is remote, including the code on which you develop. In this scenario the code is maintained in the Cloud (it may still be checked out of some repository, but maybe not). You edit it through a browser (Web 2.0 meets the Cloud) and the environment within the browser is (hopefully) as feature rich as your non-Cloud IDE. And typically this is all based around a 4GL offering.

Now don't get me wrong: I can see how this can all work. From a technical perspective it's pretty straightforward. Plus I don't have a problem with 4GL as far as they go. My problem with this approach is centred around the remote development aspect. As a developer I want to be able to code when I want and where I want, without having to worry about network connectivity issues. I need that off-line aspect. It's actually one of the reasons I'm still not entirely happy with using maven, but I'm getting over that now and am in rehab!

So is this really the kind of development environment/working pattern that Cloud developers want and need? Isn't Eclipse, or even emacs, sufficient and perhaps even preferable? As I said before, it's hard for me to separate what I'd want and expect as a developer from what others might want and expect.

2 comments:

Stefan Tilkov said...

I tend to agree with all the downsides. There is, on the other hand, tremendous potential in terms of being able to collaborate with a team, e.g. perform remote pairing. Besides, there's no problem in principle to enable offline editing in such an environment, although I admit it will probably take a while before local execution works again, maybe when we all code in JavaScript anyway and unit tests run in the local JS environment.

Which will somehow take us full circle, but so it goes.

Mark Little said...

Hi Stefan. What you say is true, but then you could do all of this simply by enhancing existing environments. For instance, putting a shared whiteboard into the IDE, allow sharing of desktops, etc., with an option for a shared source tree somewhere (e.g., in the Cloud). I'd rather see us evolve what we're using today in a more collaborative manner than start from scratch.

It's still early days for Cloud developers, so I doubt there's a large enough sample of them to make statistical analysis meaningful, but I do wonder what your average Cloud developer really wants. As I said in the posting, the average Cloud developer today seems to be your average XXX developer (where XXX could be Web, Enterprise, or something else software related). Those who I know would run to the hills screaming if they were told they had to start with no offline capabilities, let alone weren't allowed to use Eclipse, IntelliJ etc.