- David Mohundro
Just over a year ago, I shifted careers and joined Clear Function here in Memphis - it's been my first exposure to both agency and consulting work and I've really enjoyed it. I thought I'd share a little bit of my experience thus far.
Working with Varieties of Clients
The first (and most obvious) change is that my user base is drastically different. My first job was mostly building LOB-style applications which meant that the users of my software were predominantly internal business users. In other words, somewhat technical and knowledgeable about a specific business domain (think accounting users as an example).
After that, though, the rest of my experience has been building SaaS applications. Obviously SaaS applications typically have a wide variety of users; however, with most SaaS applications I've worked on, the customers are mostly homogeneous (probably because the SaaS products I worked with were within a fairly specific subset of the market).
Working within a development agency, though, everything changes with every client. That includes the types of communication, the types of development, and so on. The first major change has been that almost all of our clients thus far have been remote. I've dealt with remote developers before, but I almost always have worked with a product owner or business analyst when fleshing out product requirements. In the case of agency work, though, the requirements gathering has been a lot different. First off, our clients usually have done more work to get requirements together - this probably has to do with the fact that they recognize that they're working with (and paying) another company to build the product. Second, though, the requirements are communicated in a wide variety of ways. Sometimes the work is defined in stories, sometimes there is a spec document, sometimes there is a variety or something else entirely.
Estimation is also more difficult. Agile methodologies have encouraged a move towards things such as estimation based on story points (i.e. Fibonacci scale points) which are a lot easier to estimate; however, when you're talking about money, companies typically want to know a more specific time frame. That doesn't mean that there can't be changes, but it does mean that there is more paperwork to handle those changes.
Variety of Technologies
In addition to the variety of clients and users, I've worked with a far greater variety of technologies. In the past, my professional experience has mostly been within .NET. I've worked with iOS and Ruby, too, but my primary responsibilities didn't usually encompass them.
Now? Well, there is still some .NET - I've worked on a few other ASP.NET SaaS products of course. But I've also helped ship an iOS app that used both Objective-C and Swift that communicated with a rails-api app. I've helped ship quite a few a Rails apps, too. I did a MySQL to Postgres database conversion. I've finally had the opportunity to work on React and ES6, too, plus a little TypeScript. It has been a blast working with more technologies more often.
I've long held the opinion that being a polyglot helps one's proficiency in other languages and that has definitely been the case for us.
Another thing that I totally didn't expect was the introduction of the Clear Function Podcast, "It Depends". One of our developers had experience running his own podcast so we decided to try it out and it has been a lot of fun.
We've talked about all sorts of things from .NET and Rails to learning new technologies and keeping up with the fast pace of our industry to best practices in dev ops.
Check it out and let me know what you think. That or tweet us at @clearfunction - we'd welcome your feedback or even suggestions on topics.
It's hard to sum up everything that we've one over the last year, but I have enjoyed it. Outside of Clear Function, I've continued working on SWXMLHash in my spare time as well as a few other smaller open source contributions. I hope that we as an agency will be able to contribute back some of our work to open source, too.