Hidden costs of development

A couple weeks ago, I had the opportunity to speak to a group of researchers and software developers.  These were folks that, through their research, had developed a set of tools or services and were interested in making the software available either free or open source, and were trying to get a handle on the costs that may be associated with this kind of development effort.  It was an interesting conversation, in part, because it led me to realize just how rarely we talk about, as a community, the costs of these kinds of efforts — at least, costs that go beyond time.  In fact, in my experience, time seems to be the primary currency that we evaluate most projects — and this can be time spent doing a variety of activities — time doing support, administration, or actual development.  However, if you run a project, there are many other costs that show up that are much more tangible than time; that come with actual dollar amounts that most folks don’t consider.  And while time (development/support/etc.) is likely the most expensive costs, it’s not the one that often derails projects.  Working on MarcEdit, I’ve found a number of hidden costs that came as a surprise to me, but end up being the costs of doing business if you create software that runs locally.  Web applications will have their own requirements — but this means that if you are a developer interested in building the next wiz-bang application — your planning needs to go beyond time management, but preparation for real costs as well.

Since my experience distributing software has primarily been on the desktop/local device side, I’m going to highlight the hidden costs of developing in this environment.  Many of these costs live outside of the actual development project — but become necessary if your interested in seeing your work adopted at an organization (not individual) level.  And within most professional environments — software run in the organizational context often must meet certain criteria.

Known Costs

Time…time is the one thing that everyone worries about.  Time to develop and time to support.  In working on MarcEdit, I would say that 1/5 of the time I spend on the project is doing actual development.  Sometimes this happens over concentrated periods when implementing new features or expanding functionality — but I always spend a couple hours ever week doing routine maintenance on the tool; particularly around accessibility or usability.  The other 4/5s of the time developed to this project is in support.  Prior to the MarcEdit listserv, I probably received 40ish messages every morning asking questions about the tool.  Most of these questions weren’t that involved, and could be answered fairly quickly — but these represented a significant amount of time dealing with the community.   Since the listserv was created, I’ve seen direct questions drop to under 10 daily.  The scope of the questions have changed….generally these are involved questions, where someone is working on projects with large data sets or complicated questions — so I’m not sure it takes less time, but its been an interesting evolution to watch.

Hidden Costs

The costs that I never expected are the tangible dollar costs (generally) that come with a project like this. These fall into 3 categories:

  1. Infrastructure/Tools
  2. Identity management
  3. Privacy

Tools/Infrastructure

I think I’ve always taken it for granted that there is free webhosting, etc. — but when you need access to specific resources and bandwidth, you have to start paying for these services.  My present needs with MarcEdit require a hosting service that allows unlimited (or at the very least, a terabyte) of monthly bandwidth.  A lot of services talk about unlimited bandwidth, but in shared environments — there’s a lot of throttling that happens.  But bandwidth is just one need — you need storage, databases, program environments (for web services), etc.  Over the years, I’ve had to move from low cost shared services, to a dedicated server, to now a cloud based infrastructure so that I can manage CPU cores and bandwidth more in real time.  As the infrastructure needs have increased, the annual tangible costs have increased. 

In addition to server infrastructure, there is local development infrastructure.  You need automated testing tools, access to multiple platforms, etc.  Locally, this means I run a VM network at home, that allows me to automatically test the application against multiple systems.  Long-term, this too may be an area ripe for cloud-based replacement.  Providers like Microsoft through their Azure platform provide cloud based services to support testing across multiple platforms.  However, at this point, the costs don’t work out — partly because my local network supports a number of other local tasks.  But included in tools/infrastructure are development environments, any specialized tools that may or may not need to be purchased, etc.  Figuring out a hard cost here is more difficult, but I’d say I end up purchasing a new computer to replace part of my development infrastructure once every two years.

Identity management

Identity management has become more and more important as each operating systems develop their own walled gardens (app stores), preference digitally signed software, and encourage organizations to use software management clients (which really preference digitally signed software).  Supporting this requirement requires developers to go through the process of getting a code signing certificate.  I went through this process this year (on Windows) and 3 years ago (on MacOS).  On the Windows side, you have to work through a 3rd party and as an individual, prepare to have to work with an attorney.  On the Apple side, you have to join their developer network (which is required to participate in their app store).  These processes can be invasive (if you do this as an individual, fairly invasive), can be time consuming (my 3rd party certificate for Windows tool almost 2 months  to clear), and are renewed annually.  I’m not going to lie — this part sucks.  There is a part of me that feels like I’m paying a tax to develop “validated” programs for each system.  However, its becoming a necessary requirement for desktop/local software.  Over the past two years, I’d been getting more and more organizational pushback from IT shops that were nervous running unsigned software within their environments.  The inclusion of a digital signature on the installers and application provides managers with confidence that the software hasn’t been modified and includes the implicit promise that as of the signing, I as the developer, have done to the best of my ability, ensured that the software is clean.  Web developers are running into this requirement as well (the need to get SSL certificates); though the documentation requirements (and cost) are much lower.

Privacy

This might seem like an odd cost, but it’s a real one if your software starts to be used by governments or sensitive organizations.  One of the biggest surprises that I’ve run into is the need to go through, at times, really invasive background checks to enable some government organizations to utilize the software.  It’s one of the reasons I take a long time to change version numbers — as version numbers seem to the be the event that initiates required background checks.  Never, in my wildest dreams, did I think this would be something I would have to plan for — or have an attorney to deal with.

Wrapping up

Are these the only costs…no.  But they represent the largest (in my experience), and the ones that I find myself having to plan for each year as the costs are significant enough, that I need to make sure that I actually develop a budget to account for real (monetary) and indirect (time) costs.  If you develop within an organization, you will find some of these issues get taken care of by your organization, if you work as an individual — you will find yourself dealing with almost all of these issues yourself.  I’ll be honest, a lot of the fun of doing development work is the actual development and interaction with the community.  I love doing the research and working with users.  This is time that I’m happy to give up.  But as noted above, there are a number of ancillary costs, and these are the ones that are hidden and honestly, not as much fun — but becomes necessary as a tool/service becomes more broadly used/adopted. 

One of the things I learned, over the course of my discussions and hearing experiences of other developers doing different types of work — some of my experiences are common, others are due to to working outside of a larger organization.  But within an organization, there can be other hidden costs that don’t apply to my circumstances.  However, the main thing that I was able to take away from this conversation was that these hidden costs can have a significant impact on a project and an individual or organization’s ability to be successful.  At this meeting, it wasn’t surprising that nearly everyone had an experience where a project died or was abandoned because of issues/costs that fall well outside the traditional development costs (development time/support/documentation).  One thing I’d be curious is if these experiences mirror others within the Library community and if there are other costs (visible or hidden) that you’ve encountered that make supporting new/existing projects.

–tr


Posted

in

by

Tags: