Monday, June 22, 2009

TECHnic '09 Recap

This past weekend I played co-host to the first of what will hopefully be many TECHnic picnics. The concept is simple. Invite user groups from around the community to a purely social outdoor picnic. Provide food, games and prizes and give people a chance to network.

I'm happy to say it went quite well.

Over the course of the day we had about 150 people come, with peak attendance at any give time around 60 or so.

For the first go around our main sponsor was the fine folks at Boundless Flight, a local consulting / technology company that helps sponsor the local Java user group. Many thanks to Heidi Hooper for latching onto the TECHnic idea and making it a reality. When it all came down to it Heidi did 90% of the work, i basically helped find prizes and played M.C. for the event.

In addition to boundless we quite a few companies sponsor and provide food, drinks or other picnic necessities. Briefly thanks to Pradco, Bulldog Resume, TSC, Bluebridge Networks, Best Technology Strategy, Simplex IT, Eventus and Flex Hire (i hope that's everyone.)

Finally we had some great companies step up and provide prizes or give aways for the event so another set of thanks to Microsoft, The Pragmatic Programmers, Redgate, Jetbrains, Balsamiq, Wireframe Mockups, Telerik, Techsmith, Scooter Software, O'Reilly, Apress, Wiley Publishing, Macromates, Cornerstone and Pixelmator.

You guys all rock. Here's to hoping the technic concept continues and gets bigger every year. I've already had a couple people from outside of cleveland ask me about it considering to put one together in their home town. I hope they do, it was a great time, an excellent networking opportunity and all said and done well worth it.

Sunday, June 7, 2009

Is Mobile the New Internet?

An interesting thing occurred the other day that got me thinking.

I spent Saturday evening with a friend wandering the local Microcenter while he considered purchasing an iMac. He was making this purchase so that he could put a greater focus on his work as an iPhone developer. Naturally we were talking about the topic while the salesman was helping answer questions regarding the machine. The salesman mentioned that he too was studying iPhone development. While he was not a full time programmer he had some hobby background in Java and other languages and really wanted to write something for the iPhone.

We left the store to get dinner and when we came back a different salesman was working. Again the topic of iPhone development came up and again this salesman said he was also looking into it. His background was mostly PHP and a bit of VB, again a hobbyist.

Having had two different people, in the same night both mention their desire to learn iPhone development I said to my friend "Wow that's kinda amazing. Two people, neither of which are full time programmers and the iPhone is driving them to learn programming. When was the last time a new technology really drove a growth in hobby programmers?" His response - "The internet."

So the thought occurs to me, is this the dawn of a new trend in computing so significant that we as professional programmers need to keep up lest we fall behind? Every so often something comes along that can separate the people who are always learning, always focused from the people who aren't. We saw this when mainframe developers suddenly found themselves writing object oriented code. We saw it again when "win-forms" (or equivalent) programmers were asked to write for the web. Will mobile be the next fundamental shift in paradigm?

I'm banking on yes, and here's why.

The rise in smart phone use (and let's be honest, the invention of the iPhone) has changed consumer behavior so fundamentally that the lack of a working mobile website can now be considered a competitive disadvantage. Consumers may not have yet reached the point where they would switch from one company to another based on the strength of their mobile offerings, but i suspect if presented to some consumers during the initial purchase process it would weigh into their decision.

Would a day trading stock buyer manage their portfolio through a brokerage firm without mobile access?
How about using a bank where you can't check your balance on your phone?

Additionally I think we have reached the point where businesses can see the smart phone replacing some of the functionality that laptops have served in the past. I used to work for a fairly large insurance company. At the time all of their claims representatives carried laptops and digital cameras so that they could document vehicles as they inspected them, and over the cell network upload that information to the internal claims management system. This had the disadvantage of being bulky and expensive to maintain / repair. The laptops and camera broke frequently, often requiring a complete replacement to the tune of $300-$1500. Replace that with a $200 iPhone, blackberry or palm pre and you have a low cost, easy to carry device capable of doing everything you could do before.

So is mobile the new internet? Should we all be buying "Learn iPhone development in 21 days" books, or is it a passing fad?

Friday, May 29, 2009

Selling Agile

Recently I have been giving a lot of thought to the nature of managing projects in a consulting world. You see right now my day job is that of a software consultant / contractor. As a consulting company we do a fair mix of in-house project work and staff augmentation. Traditionally we have been a mostly staff augmentation firm, but with a shifting economy our sales focuses is becoming increasingly project heavy.

As our focus shifts we find ourselves trying to develop a niche as a project specialist shop. Part of that process has been having a lot of conversations. Conversations about project metrics, project accounting, tools, best practices, methodologies, et. al.

Thursday afternoon I was having just one such conversation with one of our managers. The topic of agile development came up, what it does well, how it would fit into our business and what we can learn from it. Up to this point we have mostly approached projects in a very traditional, waterfall-esque manner, and more often than not it has worked. However there is always room for improvement so, being a bit of an agile "believer" I've been wondering why not adopt the approach.

The general consensus was as follows:

  1. Iterative development is a fairly solid way to enforce discipline, make a project segmentable, and improve quality by shortening the feedback cycle.

  2. Establishing the end of iteration review culture, essentially showing our work to our clients on a periodic basis while in development is a good thing. It's always preferable to deliver what the client wants now, not what they asked for 6 months ago.

  3. TDD, from a management perspective, has its advantages but as always its a hard fight. Personally I'm preferable to the "why even ask just do it approach" but the topic came up so the natural reaction of a manager tends to be "what do i get out of it besides lost time." Fortunately one of our guys has had some luck showing the benefits so this might be a battle we can win pretty easily.


But in despite of these net positives there were some unanswered questions. Most of them revolved around metrics and measurement. Things I vaguely know the answer to but having never been an iteration manager or agile project leader would need to read into a bit before being really informed.

The most signifigant question, and really the point of this post, is how do you sell agile to your customers?

Considering my companies background the majority of our clients are large, fairly traditional organizations. None of our clients with whom we do project work are inherantly agile shops. The leads to conversations about some really core aspects of the methodology that I can't answer, like:

  1. How do you convince a company to dedicate a resource to being available to do periodic reviews, iteration review meetings and other feedback you need in order to have that short feedback cycle?

  2. How does the billing and project initiation process work? Specifically we do work in two different formats: Time and material or fixed fee. Time and material projects would be fairly easy to do in an agile format. In that format you essentially bill as long as your doing work. Fixed fee though are problematic. In a fixed fee project you generate a proposal up front, quoting a particular amount of time and money and at the end of the project that is what you are paid. With agile it is encouraged to make changes to the requirements as time passes which has the potential of changing the overall scope. However if the project was quoted fixed fee the increased scope doesn't necessarily result in a expanded budget. Additionally how do you estimate that agile project and generate an up front number? If you have a set of previous agile projects you can likely base your estimate on that however what if you are just getting started in agile consulting?


I have had the opportunity to work on agile projects before, and have found that the clients are almost always happier with the result, the developers feel more consistantly focused and challenged and the quality of the code if improved. I have not, however, worked on an agile consulting project. So this being my first post and all an open question to anyone in the know? How do you sell agile?