Developer Friction

In the last few weeks I’ve done very little mobile/web coding. Rather I’ve been doing a ton of Dev Ops coding. At work I’m trying to create an environment where our team can automate the setup of the multiple development stacks we use. The number one issue we face (almost weekly) is “developer friction” such as a developer wants to write HTML and JavaScript for a task, but needs a very large server platform installed in order to do so. So I’ve set out to remove this friction with automated and scripted development stacks. It’s been hard. But not for the reasons I’d hoped.

There a many solutions out there for this and I found Vagrant the most usable for our environment. I started setting up a few projects to see how I might create these development environments that I had in mind. Pretty quickly I was ready to actually get stuff done. In fact reading Vagrant docs, working through a quick proof of concept and then downloading a few virtual machine boxes took only a few hours before I felt comfortable. That’s however where the fun stopped.

The next step was to create each of the development stacks on a Vagrant box. I decided to go with Chef as my provider and setup a few custom cookbooks and recipes. I needed a few virtual machines for each developer: an nginx server, Adobe CQ server, WebSphere Portal server and and a static asset server. Most of these recipes were easy to write and in fact I got all but one of them done within a day.

The WebSphere Portal virtual machine still isn’t done. It’s been a week of all my spare time. I’d guess it’s about 20hrs or more now.

Here is just a very quick list of the pain I’ve suffered trying to get this to work:

  • Downloading install files.
  • Downloading developer friendly versions of Portal (LOL).
  • Downloading a proper 32/64 bit version.
  • Downloading close to 2Gb worth of installation packages.
  • Locating installation documentation.
  • Realizing that the installation is actually 5 installations.
  • All 5 installation methods are different.
  • Debugging by reading gazillion lines of log files.
  • Log files are located in more than 5 locations.
  • Log files are all written in different formats.
  • Waiting.

That last one is the most infuriating. The fastest I’ve gotten the WebSphere installers to work is around 20 minutes. The worst part is that those fast installations were never complete or never worked. Usually it’s 45 minutes. The next biggest pain is the debugging. In almost all cases the installer will fail with very little information about what exactly failed. I got many error codes (233, 255, 237 etc) and found almost zero places on the interweb documenting how to resolve these. In fact I barely found documentation about what they mean. On many occasions I was simply reading <code>install.sh</code> to parse what happened.

The irony of all of this is that at I set out to remove developer friction. And I think it will be great when I’m done. But I’ve suffered a ton of friction in doing this. More than I thought I would. I blame IBM (seriously you guys – I’m betting you have a terabyte of documentation online and not a goddamn bit of it is useful – please prove me wrong). Adobe doesn’t get off scott free here, but at least I was able to get a virtual machine built with little effort.

By the time I’m done with this I will probably be able to say I’m an expert in getting WebSphere Portal installed on a server. Which is totally sad. Because I could not care less about that. What I really want to know is how to build web apps with it.

And that is developer friction.

Advertisements

One comment

  1. Greg

    I feel your pain! WebSphere is ridiculous. We decided to just use Tomcat for local development, then deploy to websphere. I’ve been doing a lot of dev ops lately too… Jenkins, ant, bash build scripts. Maybe not as fun as app development, but at least we can get stuff done. I hope you got your problems solved.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: