Rework Reminder (Kill your BDUF, Code Smells, Anitpatterns, Etc ASAP!)

Rework is ok.  Refactoring is ok.  BDUF (Big Design Up Front) is bad.  Minimal amount to get to market is good.  Getting to market is good.  Don’t get into analysis paralysis.

Best book that cleanly cuts to the chase I’ve read in a long while:  Rework

…and a few friendly reminder videos.

I really can’t emphasize how much better an individual or a company is at getting things done, getting things to market, and generally improving what they do in life when taking a lot of the advice in this book to heart.  Read it.  Know it, and kill the things that are dragging you and your company down.

Thanks.  This has been a friendly public service announcement by yours truly.  Adron B. Hall here at Composite Code Blog.  😀   Cheers!

Black Hat Agile Cloud Retrospective Quality Improvements

Big enough title?  Meh, that isn’t really related.  🙂  Please read on.

The latest little blurb back and forth in the ALT.NET Community on the ALT.NET Seattle Google Groups thread is about retrospectives and how to increase quality. I won’t post any direct messages but wanted to blog a bit about that.

My fellow coworker Eric Ridgeway mentioned, which I whole heartedly agree, one doesn’t wait until the end to make quality improvements.  One focuses on quality at all times.  This makes me wonder sometimes were the disconnect is for quality improvements.  Even when asked sometimes, I’ll state something that is so simple as “always focus on quality” but then have follow up questions such as, “so when should we focus on quality?”

How did that not translate?  I get lost when I get a statement made back as a question.  I just stated the solution, the solution is to always focus on quality.  When you write a test and watch it fail for lack of implementation and then implement it look to see if it is elegant.  Look for the quality of logic and code usage.  If it looks odd try to refactor it.  If something is just being changed, check the quality.  If you’re white boarding, ask yourself if you should be trying out some implementation instead of just white boarding.  If you’re implementing but it doesn’t seem clear, ask yourself if maybe a white boarding session will work.  If you find your daily process is hampering clear minded efforts to develop good software solutions, ask why the process is low quality and what would make it higher quality.  If your team has low code coverage, or heaven forbid no code coverage, don’t wait, start doing something immediately.  Stop non-quality development and start high quality development.

It really is that simple.  There is no way that should not translate.  Always focus on quality.

While reading this blurb on the ALT.NET Google Groups I got an alert for Rob Hirschfeld’s latest blog entry about Agile & Cloud Computing. In his latest blog post titled “Black Hat Feedback Essential For Cloud Success” he dives right into the process improvement and retrospective conversation. Rob points out a few reasons teams skip on improvement:

  1. All that talking and listening and improving takes time and attention.
  2. Post Mortem or “lessons learned” meetings that never make any difference because they happen after the work is done.  (well, duh).
  3. No one has a methodology that makes the meetings productive.
  4. Lists with more than 3 items on them have too many items to be productive for improvement activities because of reader’s limited attention spans.

One of the quotes he pulls from Lean Agile advocates Mary Poppendieck and Eric Ries addresses this, “The secret to improving your performance is to regularly work to improve your performance.”  This goes back to what Eric, many others, and I keep saying, “always work on quality, don’t wait until the end”.  If you wait until the end, it’s already too late.

Project Review, What Would You Want To Know?

I’ve worked more than a few projects in my career. One thing that I always find sorely missing throughout many Enterprises is a follow up report of what went well and what went wrong on a project. In other words a list of successes and a list of things to improve. With that in mind I’ve put together the following survey questionnaire for the end of a project. What other items might you add that you’d want to know?

  1. Is the overall project considered a success?
  2. What caused roadblocks or stoppages during the project?
  3. What caused excess work that was unnecessary?
  4. What processes could be avoided, added, or otherwise changed to streamline the day to day development and operations?
  5. What could management do to have made the project even easier to accomplish successfully?
  6. What could inidividual developers do to have made the project even easier to accomplish successfully?
  7. Were the tools needed to complete the project made easily available?
  8. Were access, work environment, and other physical assets provided in a timely manner to complete the project?

Please leave a comment or three about what you’d want to find out once a project is complete.

Communication on Lean/Scrum/Pairing Within Software Projects

Communication is important. Communication is even more important in projects using lean, scrum, or other agile ideals than in other projects. Mainly because of the rapid, refactoring, and pairing nature of the project process style. This truism lead me to think, “hey, I ought to write up a short blog entry about some effective methods of communication within teams”.

These are just a few scenarios where an effective communication was introduced during a project with great success.

Public Realtime Chat Forum/Room

On one of the projects I worked on a very successful communication practice was to use a public realtime chat using Yahoo Messenger (of course one could substitute with whatever instant messenger client). Each 3-8 person team would log on and join the group chat. This group chat was used for a number of very specific communications that needed instant, but non-interruptive communication.

  • Road Blocks – If someone ran into an architectural, build, or other road block the entire group would quickly review and knock the road block down.  This could usually happen in seconds to a few minutes.  Rarely did a road block ever exist for more than 10-15 minutes.
  • Levity – Someone would throw a geek joke out every once in a while or toss a little tech news tidbit into the chat.  Often around lunch time or such.  This would lighten the mood if things were getting a little intense around deployment time.
  • Scheduling Notification – If a meeting was coming up, considering the speed and focused approach this enabled, developers would often not have Outlook up to be interrupted by so meetings may have been missed.  Usually the lead or project manager would keep up with these scheduled meetings and pull the team into them with a simple chat mention.  This helped by reducing the avenues of interruption while the team was focused on problem solving and coding.
  • Pairing Request – If a developer ran into a tricky business logic, or other section of code they were trying to put together, one could request a personal chat or in person pairing to get the logic figured out and have the double check of a pair.  This really helped improve the quality of code and architecture and time to resolution around really tricky parts of code.

Sketchflow Workshops

I’ve dubbed this communication the sketchflow workshops, when in reality this process was an attempt to recreate paper prototyping as best as we could without onsite visits.  I’ll mention before continuing, that absolutely NOTHING takes the place of in person communication when doing paper prototyping.  So here’s my analysis, with that clause, of how these workshops worked out improving communication.

  • An online medium with video, white boarding, and sound was used to provide as much interaction as possible.  The application prototype/mock up would then be shown and the team and client would white board, discuss, and point out UX & UI changes or additions that were needed.
  • The white boarding of the app provided a means to quickly sketch out ideas, somewhat similar to paper prototyping.
  • Note taking was done actively in a group chat while people discussed & drew on the white board or presented the prototype/mock up.

There are a few things I would have added, that are now possible with newer tools, that would have improved this process even more.

  • Using SketchFlow w/ Expression Blend to make actual changes to the prototype/mock up would have been very useful, and easy to do with this toolset.
  • Using the deploy static site with feedback tools that Expression Blend enables would have also been useful to act in addition or in lieu of the white boarding medium (it was slightly cumbersome vs. real white boarding).
  • Video of people & video of a real white board would help dramatically.  These two additions could actually bring this type of communication almost on par with actual paper prototyping.

That’s it for this entry.  If you have any other specific communication tools, mediums, practices, or otherwise I’d love to hear about them.  Tweet, e-mail, or leave a comment for me if you would.

#wp7/#wp7dev + Amazon Web Services (AWS) and Windows Azure

I got to mess around with the Windows Phone 7 SDK finally over the last few weeks (Twitter hashtags #wp7 and #wp7dev).  The first few things I noticed was that there are a lot of missing parts to it.  Namely the calendar control I fussed about well over a month ago in Windows Phone 7 Calendar Control.  Even with the missing elements I kept wondering what I could build that would be useful and might be a good open source project?  I finally stumbled on the idea that I’d roll a few of my points of study together into one;  Windows Azure, Amazon Web Services, and Windows Phone 7.  With that stumbling notion I navigated straight over to Codeplex and rolled a new project!

With that written, I hope I can get some of you cloud afficionados and gurus to put in a few hours a month to help build a rockin’ open source mobile admin app!  If you’re interested please e-mail and I’ll get you setup on the project ASAP!  🙂

Here are my first few user stories just to get things started.  If you think of other functionality, please feel free to add that to the comments below or to the tracking section on the Codeplex Project.

http://wp7cloudadmin.codeplex.com/