Recently I did an interview with IBMs Ken Walker. Co-lead on the Eclipse Orion Project, a cloud-based integrated development environment (IDE). My interest in Cloud IDEs peaked at the beginning of the year and has been steadily growing since the interview and being an active user of Cloud9 ( My current favorite Cloud IDE). During this time I realized the Cloud IDE has the ability to totally transform teams. We all know where the IDE belongs in the developers life, but what, if any, is the Cloud IDEs impact on the DevOps movement?
It’s just an IDE, so what?
I’m not alone in thinking there is something to Cloud IDEs. Just this week Coeanywhere got some good interest at TechCruch Disrupt, reaching beyond the early adopters into an early majority. The IDE might be the single most important tool in the developers arsenal, however it’s not one we think about often. Why? Because when it works, it’s transparent. But, like the typical knowledge worker who has mastered some email client, and if they are honest spends the vast majority of their time in it. The developer lives in their IDE.
The idea of moving the IDE to the cloud seems a bit obvious. And actually if it wasn’t for the large technical challenges to do so, it might have happened sooner. It can seem like a trival shift of a text editor, from client side to the browser. A move we are all too familiar with. But it is not just that you have shifted your IDE from your local machine to the cloud that is a big deal. It is not even the convenience of being able to access your IDE in the exact state you left it, from any device connected to the web. The key benefit of the Cloud IDE is that now you have an easy connection point, call it a hub, to all the other people, processes, and tools that your development team uses.
“It’s like Google docs for your code”
It’s kinda like Google Docs for your code. Or should I say O365 for cats that code?
For the vast majority of developers, the IDE is a personal almost private thing. They tend to live in silos. Each developer picks their favorite text editor or IDE. Selects and customizes the perfect theme, usually brightly colored text on grayscale background. And arranges all the windows just perfectly. They form a relationship with not just their IDE, but their specific flavor of it. And,besides the pull requests from their source repository, and their commits, they are pretty disconnected from their team, and the other tools around their entire development process. Not to mention, in the typical dev shop there can be a variety of IDEs being used, and wars about which one is best.
But the Cloud IDE forces teams out of this paradigm. The whole team is on the same tool. And the individual developer is immediately and always connected to the source repository, release automation tools, testing tools, and the rest of the team. Don’t get me wrong, you still get to arrange your windows, and customize your themes, but the Cloud IDE is a shift from the bring-your-own-dev-box to, here is the tool you are going to code in. This is hard for many developers to accept.
But because it’s in the cloud there is an opportunity for real-time connectivity to all the components in your development process. And as you code, your team can code with you. Which even implies a brand new way of working on code together versus separating branches of code per individual developer. Remember the days of “extreme programming” and “peer coding”, this makes it not such a kludge.
The inter-connectivity and high availability of the Cloud IDE is key. And this is where the Cloud IDE can be a catalyst for faster DevOps within an organization. It fosters the culture, with real-time code editing, it helps tie tools together to get the constant stream of commit and delivery we all dream of, and finally it integrates with your PaaS, IaaS, Testing, and all the other tooling associated with your operations. Fixing the disconnected nature of most dev shops.
It’s a tough sell
Despite the benefits, and an easy way to make the move to DevOps, it is a hard sell. For all the reasons I mentioned above, how developers customize and devote themselves to one IDE. And how developers tend to make individual decisions about their dev environment separate from the team. The Cloud IDE is a hard sell.
Many developers will oppose the Cloud IDE without much consideration. They will site claims that they are more efficient with their slightly better than notepad, notepad. Or that they don’t have time to learn a new IDE. Or that they need the local offline instance. But really I’ve found that these are all just excuses. It does not take long to adapt to a new IDE. I know this from experience changing from Visual Studio, to NetBeans, to Eclipse, to Orion, to Cloud9 all in one week. And I did not find at any point I was just totally lost. The excuse that really gets me is the offline need. At the surface this seems like a strong argument, but, lets face it. If the internet goes out, no developer is doing any work anyway. And if your internet goes out that often. Your doing it wrong.
From the enterprise perspective there are some harder governance, and security arguments. But these are the classic cloud arguments with classic responses. For a time the habit is going to be very hard to break, but once the trend gets rolling. I’m confident the Cloud IDE will become the norm.
I am making some big claims about how the Cloud IDE is going to accelerate DevOps, and how eventually it will just be the norm. But I would not be so adamant about all of this if I had not experienced it for myself. I recently had a pet project where a few buddies and myself were developing a pretty simple web-based analytic application. This application is written in PHP by a team of three. It has a relational MySQL database from ClearDB, a web-front end, NewRelic monitoring, SendGrid messaging, and a NoSQL Mongo DB from MongoLabs. Our source repository is GitHub and we are using Azure as our production and staging environments. One thing that made our usage even more compelling is that the application is 100% PaaS. No interaction with a Virtual Machine (VM) is required.
At first the three of us standardized on a local NetBeans IDE. Which has a great PHP interpreter, and OK integration with Git. But it became a problem and annoying quickly. First because I switch between two primary computers and I had to install and configure identical NetBeans on two machines. They had to be identical so I am not forced to re-acclimate myself each time. Sound familiar? Not only this I had to always pull the project down from GitHub before I started coding, and I never remembered where I left off. This compounded when all three of us were in the same boat. Because we were all working on the same branch of code thus dealt with collisions frequently.
So we got rid of NetBeans, and fully tested three Cloud IDEs, Codeanywhere, Cloud9, and CodeEnvy. And some minor testing on Nitrous.io, and Orion as well, but the PHP support was not there. We ultimately picked Cloud9 because of the great PHP support, code completion, and we just liked it best.
We did not realize how much this would change what we did and how efficient we became. But a few days of active use and we were blown away. With a Cloud IDE we actually went from 1 to 2 releases a week to 5 a day. The IDE pulled in our Git project immediately and it was always current, and exactly where we left it. I could see where one developer was last editing, and I knew that because all the git pushes came from the same shared console we were up-to-date. No more collisions!
By using webhooks and two Azure deployment slots, one for production and one for testing, with every commit we had an automatic deploy to an Azure testing site, and then a manual deploy to production when we were happy with the results. Rollbacks on Azure were done with a single button click. It was amazing. We were not afraid to commit code, and living the fail fast dream.
Besides the obvious benefits, we had a blast working together on code. We would setup Skype sessions and code in a “virtual room” where we could bounce off ideas and communicate real-time as we coded. This also lead to a lot of razzing. But it was fun, and because it was fun, I believe we moved a lot faster with the project, with better code.
The future of the Cloud IDE and it’s relationship to DevOps
So yeah, i’m a fan += a bit biased.
Because it is a hard sell. I don’t think the flood of adoption is going to happen for a year or so. And I see adoption happening bottom-up with individual developers versus whole teams. But in the next few years as organizations take development operations as it’s own internal practice. They will look at standardizing IDEs as a way to decrease variance and increase efficiency, and at this point whole teams will consider moving to a Cloud IDE.
The Cloud IDE’s themselves will add a lot more functionality. You will see Microsofts Cloud IDE embedded in VisualStudio Online start to take on more and more functionality from the client side Visual Studio. And the other IDEs will add more support for their language interpreters, more social components, quick-start templates, and perhaps most importantly more integration with cloud providers, deployment, and testing tools. Making it more of a one stop hub for your DevOps operation. I also predict that analytics and gamification will come into these tools giving R&D teams a way to track and report on the enhancements and efficiency of the team.
The good news for any developer who is on the fence with Cloud IDEs, is that, at the very least it’s something that can be tested in minuets. If nothing else you can add some more meat to your opinion as to why or why not to use them. There are many out there: Visual Studio Online, Codeanywhere, Cloud9, CodeEnvy, Orion, IceCoder, Nitrous.io and probably 12 others I’ve forgotten or neglected. They tend to favor one language or framework, and each has their own neat benefits. Some of the other players in the market instead of making the IDE the end-game are bringing IDE functionality to their existing applications, training or coding tool ( check out CodeAcademy.com so cool! ). Hell you could even consider GitHub’s Atom one as well.
For organizations considering the move to DevOps but do not know where to start, the Cloud IDE is a low risk great place to get going and start introducing the other concepts of DevOps. Once the world makes a shift from 100% IaaS based applications to, hybrid, and finally all PaaS, the Cloud IDE is going to be the ideal way to connect all the components of the development people, process and tools.