Corey Coogan

.Net, C#, ASP.NET MVC, Architecture and Design

Archive for July, 2009

Mockup Alternative to Visio and PowerPoint

Posted by coreycoogan on July 24, 2009

As  I was writing the title for this post, I ran through many iterations before settling on this one soley for the purpose of being more targeted towards search terms.  Here’s some of the runner ups:

  • Mockups in Visio and PowerPoint Suck!
  • Say goodbye to Visio and PowerPoint mockups
  • Mockups in Visio and PowerPoint….Never!

Sample Mockup It should be clear now just how much I hate Visio and PowerPoint for doing mockups.  Neither of these tools were built for this purpose, so it’s no surprise that the process is awkward and usually time consuming.  Thankfully, I came across a far superior tool a while back in a DDD post by Casey Charlton.

The tool is called Balsamiq and it’s pretty amazing.  It’s whole reason for existence is for doing mockups – not presentations,  flow charts or anything else.  It runs on Adobe Air, so the installation can take a while if you don’t have this runtime on your machine already, but updates are free for life and come down pretty quick.

Balsamiq comes in 2 flavors, the desktop edition and the web edition, as well as plug-ins to some popular CMS and Project software packages.  The license is cheap, only $79 for a single license and cheaper for multiple seats.  The project file is saved in an XML format, so it can be checked into source control and easily shared.  It has a ton of built-in controls to allow you to mock everything from Maps to Browser Windows to Grids to Buttons and just about any other UI element you can think of.  The only downside is that you can’t make reusable components, which means a simple change to something like a header could result in hand-editing every mockup file you created.

Sample MockupI won’t go into too much detail here.  If this sounds good to you and you want to learn more, watch the quick demo video and then take a test drive with the browser edition (no setup required).

Posted in ASP.NET, ASP.NET MVC, Architecture and Design | Tagged: , , , | 2 Comments »

Passion in Software Development

Posted by coreycoogan on July 22, 2009

I’ve been in the IT field since 1995, when I had my first internship with Ford Motor Company.  I didn’t do a whole lot that first year, where I worked on a help desk team, but I did manage to glean a few gems.  More recently, however, I was a Development Manager for over for 4 years and then moved to consulting where I’ve been for just over a year.

Through this experience I’ve worked with many different people and interviewed, and sometimes hired, many others.  The one quality that I’ve always searched for in people is the rare and elusive Passion.  Passion is quality that everyone has in them, although it may remain untapped until the person discovers what their passion truly is.  I recall an MSDN article I read a while back about how Microsoft looks for passion in people, even if it’s beyond the technical realm.  Although having passion about anything is better than no passion at all, I am still biased towards software development and IT when it comes to the teams I am surrounded by.  That’s not to say that one can’t have multiple passions, as I am very passionate about my wife and children, but I think my love for being a developer helps give me an edge.

Qualities of an Un-passionate Developer

So what are the qualities or criteria of a passionate Software Developer?  I think it goes without saying that true passion is very easy to spot without some list of criteria.  What might be easier is to go the other way and discuss the qualities I see in most Developers who aren’t passionate.

It’s obvious that there are many people who get into this field as a means of making a decent living.  For these people, developing software is merely a job and devoting any time outside of their 8 – 5 workday towards the field seem ludicrous.  They don’t subscribe to blogs and read very little magazines or books if any at all.  They depend on their passionate co-workers and leaders to teach them about what’s new and the latest techniques for doing things.  These are the people who nod with a blank look on their face when you talk about topics like Design Patterns, IoC, SOLID, CI, DSL’s and other hot issues in the development community.

A real-world example of this came from a person who was trying to code against some specifications that included Dependency Injection, several design patterns and some unit testing sprinkled in.  When I commented on how unhappy this person looked, the reply was that he liked doing the easy stuff that was in his comfort zone, but he was doubting the choice of a career where he would have to read and keep learning new stuff – “I went to college so I wouldn’t have to do that anymore”.

I’m not saying that there’s anything wrong with this attitude and often times certain projects or companies need bodies that are comfortable just doing what they are told to do.  Many people are content following a standard set of procedures and doing just enough to get by.  They are not concerned with being a software craftsman and if the code they write is un-maintainable and hard to test, the company will just unknowingly pay the price with longer development cycles the next time.

Spreading the Love

I believe that many times there is a passionate developer locked inside the people I described above.  There could be many reasons why their passion remains caged, but the 2 most obvious that come to mind are the restrictions in their job that prevent them from spreading their wings and simply getting too comfortable in what they are doing.

So what can we, the passionate, do to spread our love and joy for our craft?  I think there’s a few tactics that are worth exploring.

  1. Keep Talking – Passion is infectious and the more you keep talking about the cool stuff you’re learning or the latest project or experiment you are into the more likely your passion is to catch on.  Perhaps sharing your sense of accomplishment and/or enthusiasm will pique their interest in obtaining that same feeling.
  2. Lunch and Learn – Brown bag sessions and lunch and learns are a great way to share new stuff with your team.  It’s not enough, though, just to present.  Getting the whole team engaged by rotating presentation responsibilities is a great way to get people to spend some personal time learning about topics, tools and tactics that can benefit everyone.  Perhaps getting in the groove of learning will result in more.
  3. Get them involved – Solicit volunteers to help with any side projects you may be working on.  Volunteer on an open source project and work as a team to fix small bugs or take on small feature requests.
  4. Share heroes, books, articles – If you have some heroes that inspire you, share that with your teams.  Start a book club or send links to articles and inform that you’ll be discussing at your next meeting.  Share your RSS feeds and talk about the latest posts that interested you.  The Google Reader allows you to share your feeds either individually or from within your categories.  Here’s my feed as an example.
  5. Assign “Fun” Tasks – In even the most mundane of applications, there is some joy to be found somewhere.  Don’t keep it all for yourself!  Share those tasks with enough guidance on patterns and architecture to give your team something to get excited about.  They’ll get that accomplished feeling from implementing something outside their comfort zone, which can become addictive.
  6. Lead by Example – Just be your passionate self.  It’s often said that passion and excitement are infectious, so be sure to let it all out.  Sometimes people get stuck in a rut, but you can help make things fun again.

Conclusion

Not everyone is passionate about developing software and that’s alright.  Given the choice, however, I’ll always look for the passionate, or at a minimum, the curious.  Quite often the only thing standing in the way of someone’s passion for development is an experience, some information or some guidance.  If you’re passionate, you can spread the love and infect others.  Be a mentor and give your team something to get excited about.

Posted in Consulting, Developer Life | Leave a Comment »