Category Archives: Agile

GL-SPIN – Agile Software Development

Agile groupies recently posted a video from January 14th’s GL-SPIN Agile panel discussion that took place at School Craft College.  If you live in Michigan and you’re not familiar with Agile Groupies or GL Spin, and you’re interested in learning more about Agile principals, you should check them out.

You can watch the Agile panel discussion video here: http://agilegroupies.ning.com/forum/topics/1142009-glspin-agile-panel – it runs about 1.5 hrs.

CodeMash 2009 – precompiler

Got an early start for the CodeMash 2009 precompiler (day 0)  – despite the fact i didn’t get much sleep, partly due to my iPhone SDK crash course last night.  After talking with others, seems I wasn’t the only one staying up late, not surprisingly, many of the folks here are pretty active into the late evenings, whether checking in with the office, coding, playing games or hanging at the bar..  Either way, I was excited to check out the iPhone session first thing.  I paired with Nayan in the iPhone 101 session, whereas we literally had a [simulated] iPhone application working in 15 minutes!

I have to admit, I was quite a bit outside of my comfort zone, Nayan seemed to keep up a little better than me, the ENTIRE environment was new to me, as I had never programmed anything on my mac (despite me owning one for nearly a year) instead, i’ve used it to dual-boot mac/vista, but thats another story..  The 1.5GB SDK was pretty well organized and included xCode which is Apples development IDE.  After a few intro slides Chris Adamson helped to walk us thru a quick sample application whereas we built a quick browser, hooking up a simple UI with a textBox, button and webView.  We dabbled with a little objective-C and Cocoa, which was a bit of a hurdle for me, not having any ‘C’ roots, but other than syntax ignorance, everything made good sense.  

With this as my first iPhone exposure I’ve got along way to go before producing anything of value, but my goal at this point was to get exposed to it and better understand what, when and how we may look to embrace it over at Billhighway.

In the afternoon I bounced between two sessions, 1.) test driven development with .NET by Leon Gersing & 2.) turning the ship, by Dave Donaldson.  Both were good, TDD is a hot subject and am on a fact-finding mission to overcome the mental hurdles i have before we can begin the practice internally, but I’m off to a good start.  Dave spent time educating folks transitioning to Agile, while we’ve been doing it for a while, there’s always more to learn and improvements to be made – iterate right?

I wrapped up the day listening to a RIA panel, WWE style between the Silverlight, Flex and yes, javascript camps.  The winner?  Based on the emotional tone of the room and intellectual debate, I’d have to say JAVASCRIPT.  That said, as with everything in technology, each situation is different, and we’re best served by understanding the strengths and weaknesses of all available tools, technologies and processes so that we can implement the right tool for the job, when it crosses your plate.  I then shared a few adult beverages with some great folks I met; Vlad, Butch, Becky, and Wayne.  

Day 0 was a great pre-compiler and looking forward to the next two days at the actual “conference.”

Ray Ozzie’s 2005 Memo & Agile

Shortly after Ray Ozzie arrived at Microsoft back in 2005, he wrote a memo (not unlike Gates’ Paul Revere-ish 1995 memo about embracing the internet) which was recently accounced, but not yet released. It outlined a few things, namely the company (Microsoft) had to start thinking and operting like an internet company, and as much as possible, liek a web startup!

Ray pitched ad-supported or subscription businss models, viral distribution and experiences that “just work.” Focus on being seemless, bottom line: Change big-time, or else.  Microsoft at the time was trying to ship Vista and Office so Ozzie project began.  Ray then gathered a team to begin delivering results, in short time frames (sound familiar)?  Ray began code name “Red Dog”, now referred to as Azure, with the help of Amitabh Srivastava & Dave Cutler, out from semi-retirement.

An interesting aspect of the new operating system is that is was produced with a fraction of the manpower the company typically directs to critical projects.  “There are literally thousands of people on windows, but Ray emphasized small groups with very focused people is a better way of doing things,” Cutler says. The goal it seems, was to produce working software faster.  Hmm, thats interesting, without spelling it out, it sure spells alot like Agile to me.  So what exactly does the Ozzie project entail?

  1. Windows Azure – Microsoft’s long awaited “operating system for the cloud” doesn’t run on a laptop – it runs on the companies thousands of servers.  Customers develop their web-based businesses to operate on Microsoft’s data centers, and Windows Azure allocates resources as needed. (expected late 2009)
  2. “Zurich” – codename for Azure services platform, a set of sophisticated tools to help developers manage their own cloud-based services and web apps. (available now in preview)
  3. Live Mesh – a service built on Red Dog that allows people (PC & Mac) to synchronize all their files, photos, and music with all their devices. (expected in 2009, now in public beta, see mesh.com)
  4. Office Web Apps – the next major Office release will include relatively complete Web version of Microsoft’s crown jewels.  Users can subscribe or access free versions supported by ads. (expected in 2010, but some versions may appear sooner.)

If you’re interested in keeping up with all the latest Microsoft developments, I strongly encourage you to check out the sessions from Microsoft’s recent Professional Developers Conference, now available online (for free) at: https://sessions.microsoftpdc.com/public/timeline.aspx

Billhighway.com – growing again!

At Billhighway, we’re committed to not participating in this economic slowdown, and are currently looking to fill several new positions among our development team, including: 1.) strong .net developers, 5+ years of experience; 2.) QA folks (junior and/or senior); and 3.) a certified Scrum Master.

Billhighway has 20ish employees and growing rapidly.  We create world-class financial software for membership-based communities, serving 100’s of thousands of customers throughout North America. Think of mashing up QuickBooks, PayPal & SalesForce.com and you’d have a good basis for what we’re all about.  We employ the latest tools (VSTS, TFS) technologies (.NET, AJAX, SQL, SOA & grid-computing) and methodolgoies, such as Agile.

If you’re seeking a new challenge, or want to be part of a fast-paced, pure technology company – check us out: http://www.billhighway.com/aph/marketing/careers.aspx

Avoiding the Status Quo

While attending a conference this week, I met alot of people, during sessions at lunch and after parties. A consistent theme emerged a few days into the week, which somewhat caught me off guard, not so much that is completely surprised me, but rather made me renew my appreciate for the environment we’ve created at Billhighway.

During the course of conversation, on numerous occasions, talks circled back to “how the team back at the ranch just doesn’t do things that way” or “we’ve got a bunch of guys that dont want to change.” Obviously, each shop is different, with varying degrees of complexity, standardization and business requirements, however a fair amount of people I met, had no expectation of using any of the new stuff they are learning back at their jobs!?

While some attendees had their registration paid by by their employers, most likely with good intentions, the fact of the matter appears to be, that they aren’t in any position to influence change within their organization(s), and to me thats just a waste of everyones time (and money.)

Sure, theres always going to be the early adopters, cutting edge vs. mainstream, those willing to take risks and those that wait for the first service pack, or version increase before they hop onboard with anything new. Thats not the issue at hand, atleast with the folks I spoke with. I found myself repeatedly saying “that must be tough” or “sounds like you need to update your resume.” What I was left with, was people willing and able to push the envelope, learning and adapting to new techniques, but organizations not being willing to justify the risk, change or complacency to adopt farily well known, value-adding tools/techniques, like Team Foundation Sever, Virtualization and Agile.

Now, I’ve been around long enough to see this from both an employee and employers perspective, there certainly isnt a one-size fits all model for your environment. Customers, quality and support will always heavily influence your ability to innovate. To me, probably the single biggest reason I joined Billhighway, was the polar opposite of the mindset above. At Billhighway, we’re very selective recruiting, seeking the top 10% of folks in their field, those with a passion for technology and an expectation to make a difference.

I found myself not relating to several of the attendees, as some were attending as a training formality, whereas I tend to absorb as much information as possible, then look for outlets to use it, whether internally or sharing within the community. Many people I met were “glass half empty” folks, naturally pessimistic, with a whoa is me mindset, and “we can’t do that because…” – that just doesn’t fly at Billhighway. We tend to perceive problems as challenges, a do-whatever-it-takes mindset, always looking to advance, if not improve a process.

So, lesson learned? Despite the doom and gloom of the economy in your area, there are shops out there looking for bright, energetic developers who want to continually learn new tools and techniques and be challenged on a daily basis, vs. report to a slug who is counting down the hours before they can leave for the day. My suggestion to you is network! Attend user groups, conferences and community events, its here where you’ll find the type of company (or those working for companies) that are influencing change, and most likely hiring! Remember, don’t be afraid to take some risks, nothing ventured, nothing gained.

Agile from a Developers Perspective

I recently discovered an agile presentation by Richard Banks, (of Sydney Australia) on “Agile from a Developers Perspective”, which I thought was worth a look. The presentation itself deals with the following questions:

  • How do you do estimating with an unknown target?
  • Can a team be agile in a company with a “traditional” environment?
  • How do you do up front estimating – especially related to fixed cost?
  • Which agile methodology should we use?
  • How much documentation is needed before we start & how much should we create as we go?
  • How do you pick a good agile team member – what qualities of a person do we look for?
  • How do we handle scope changes in terms of the overall project?

TFS Automated Builds

I was finally able to dedicate some time to investigating automated builds using TFS.  Over the past several weeks, our development team has been working to more formally embrace Agile, as a software development practice.  A couple key components we’re trying to leverage are available within VS 2008, team suite & Team Foundation Server (TFS), including automated builds, automated deployment and database source-code control, using VS DB pro (more on that soon.)

Today, i plowed thru documentation; we recently upgraded from TFS 2005 to 2008 and understand several things have been improved with regard to build to 2008.  While we began using TFS back in early 2006, we had yet to utilize the automated build capabilities.  After speaking with a few people, I was happy to see the improvements made in 2008, most notably native support for automated/nightly builds, and continous integration (CI) – both are now standard in 2008.  Previously, automated builds had to be setup to use a scheduled job, and batch file.  CI took even more work. 

After understanding the framework, I began to dive in, setting up our build server, and configuring the agent.  From there, the VS gui makes it very easy to configure.  Within an hour or so, I was able to setup a scheduled build, whereas the build server pulls the latest codebase, compiles and labels it, and publishes the binaries to a designated drop site.  pretty cool.

Originally, what we were hoping to accomplish with automated builds, was simplifying the process of moving the latest code base from source-control -> to our dedicated development environment, saving the team valuable ‘publishing’ time and giving QA an updated code base to review each morning.  While this is somewhat possible with automated builds, i discovered, atleast initially, the binaries published to the drop site contain unqiue folder values, identifying each build/version #.  This makes it somewhat difficult to publish to a dedicated environment, whereas IIS/virtual directories use a static location for content.  I am still investigating options, to see if this is possible.

While doing some digging, I recently came across Scott Guthries post on a VS 2008 web deployment project, rtw (released to web.)  From the sounds of it, it provides more granular deployment options, including pre/post compilation as well as managing connection strings between environments, whereas your DEV/Staging/Production environments need to point to different datasources.  If you’re also working to incorporate an automated build/deployment model, you might want to also check out the Web Deployment Tool, by the IIS team.  Needless to say, automated deployemnt is now next on my  “to do” list. 

I’m hopeful within a few days, I’ll be able to incorporate a basic, automated nightly-build process.  A little later down the road, we’ll look to leverage CI and setting more granular build qualities.  Baby steps for now..