jump to navigation

Failing with software and how it can be fun. March 24, 2009

Posted by gcorbin in Commentary.
Tags: ,

Several months ago I had the experience of pitching the design for an elegant marketing web site to a group of old school farmers. The need for such a tool was advertised in my local town newspaper. The group of local farmers coordinates a local farmers market that runs from spring to fall every year. They were given a small grant from the state government to help improve the farmers market. So, I decided to give it a shot. My first instincts were to determine what the requirements of the web site were to be. I emailed the individual that posted the need for the web site, looking for a meeting to discuss requirements. I was told all the information that I needed was posted in the request for the web site. See the notice below:



Carver Reporter –


Thanks to the Massachusetts Department of Agriculture, the town of Carver was awarded a grant of $4,000 to help promote the Farmers’ Market through an official Web site and accompanying brochures.


With the recent economic crisis in the state, further grant monies may not be available for upcoming seasons, and thus the Carver Agricultural Commission (AgCom) is looking to utilize this grant to the fullest extent. The grant monies must be used within a certain timeframe or they will be lost.


The grant parameters are specific in that $2,000 is allocated for Web site development and $2,000 for the brochure. The AgCom is looking for help from the community. Residents who have experience and creativity in either or both of these areas are encouraged to apply to the AgCom with design ideas and proposals.


“The Farmers’ Market has become a key economic and social component of the town. The brochure will help the town advertise next year’s market and may help with fundraising, getting new venders, etcetera,” Director of Planning and Community Development Jack Hunter said. “The Web page will allow online updates and interactive approaches to the market for next year, as well.”


Hunter said customers could access online farmers’ market coupons through the site, as well as notify them of upcoming specials and events such as the pony rides, hay rides or the Fall Harvest Festival. Web access has proven to be a valuable marketing tool for communities that have farmers’ markets.


AgCom members felt that keeping the work local for a local community market was important and hope to receive interest in developing the tools from several Carver residents.


The deadline for both proposals is Monday, Nov. 10. Interviews will be scheduled for the Nov. 17 AgCom meeting in Meeting Room 4 at the town hall.


Wow, not really much to go on. I pulled the following points from the notice:


Functional Requirements


1. “The Web page will allow online updates and interactive approaches to the market for next year, as well.”


2. Customers could access online farmers’ market coupons through the site


3. Notify users of upcoming specials and events such as the pony rides, hayrides or the Fall Harvest Festival.


Non-Functional Requirements


1. The web site should prove to be a valuable marketing tool for communities that have farmers’ markets.


My next step was to research other sites that were designed with farmers in mind. After I spent a few days researching this, I felt I was ready to draft a proposal. In my proposal, I outline the details on how the site could be laid out, what functionality it could provide, how people would find the site, how it would be maintained and updated, what technologies would be used and what documentation I would provide. The full proposal can be found here. Any way, I felt that I’d covered everything needed. The last step was just to pitch my proposal and hope for the best. I had no idea what other professionals would be applying for the same project so I did my best to cover everything I could.


The day of the proposal came. I was asked to give my pitch in front of about 16 local farmers and others at the town hall. All was going well, until I started with my written proposal. It was then that I discovered that no one in that room had ever seen my proposal. I was thinking how could this be, I emailed it to the head of the market and asked him to forward it to all that would be interested. I later found that he never forwarded it because none of the local farmers in that room had regularly used email accounts. They all had ones that were setup by the town for them, but it was very unlikely that any of them knew how to check it. It was Ok, I had printed out several copies before the meeting and I could just hand them out. So, I continued to give pitch my proposal and I spoke about all the items in it and covered everything I could think of. I was extra careful to make sure I used as many laymen terms as possible, keeping my audience in mind. So after speaking for about 30 minutes, I final started to get some feedback in the form of questions. First question was what is a URL? Ok I said to myself, these are farmers and I missed that one, I should have used the term web site address. As more and more questions came in, It quickly became obvious that most of these farmers had no idea about what it took to build a web site never mind the reason it would take 2 months to do it. After all, its just words on computer screen, what’s the big deal?


Any way, once my painful proposal was complete, I was asked to sit in a waiting room while they listen to other proposals, just incase questions about my proposal came up. I learnt that there was only one other proposal they had to review. After that was complete we were both thanked for spending the time and sent on our way. Later I came to learn that the second candidate was an active member within the community and was well known and liked by all the local farmers. I should have guessed based on all the laughter I heard while waiting for the second proposal to complete. In any case, I never heard back from the committee. I did email them as a follow up, but still have yet to hear anything. So, whether I lost the project due to small town politics or failing to convey a technical topic to lay people, I’ll never know. After this experience, I can’t help to remember that old saying “It’s not what you know, it’s who you know!” In any case, I view it as a very positive experience. It helped me grow as a professional and learn some painful lessons of politics at very little cost.


In case you were wondering, the web site that was proposed still has not been built. Last I heard, they decided to scrap the project and go with printing flyers instead. I guess we can add this one to that list of 95% of all projects that fail.




The Monty Hall Paradox December 19, 2008

Posted by gcorbin in C#, Commentary.
add a comment

Every now and then, I find myself missing the simplistic days of higher education. I miss the enjoyment of studying computational theory and all those fun brainteaser puzzles that such topics often bring to light. Recently, while reading one of my favorite blogs (blog.stackoverflow.com), I can across a posting / podcast that had references to a few such puzzles.  Some of these puzzles I’ve already heard of, but there was one that I’ve never come across. It s called “The Monty Hall Paradox”.


The puzzle is about an old game show where the host (Monty Hall), would give contestants a choice of 3 doors. One of the doors would have a new car and the other 2 would have a goat. The contestant would choose 1 door, then Monty would open 1 of the other 2 remaining door revealing a 1 of the goats. He would then give the contestant the option to keep their selected door or switch doors. So the question is would it be best to keep your original door or switch doors?


So, my first answer to this is that it doesn’t matter. 2 doors remaining should be a 50/50 chance. This is what most people give for an answer to this puzzle also. However, after studying it further it became apparent that the answer was not this simple. Several other people are posting the true answer is that its better to switch doors. The odds of getting the car by switch doors are 66%. So, instead of just reading more and more on the topic, I decide to write a simple program that I could use to test this out.


I wrote the code in .NET (of course). It’s a small program 30 lines or less. I ran the code over 1 million iterations and to my surprise, the odds were 66.34% of getting car if the program swaps doors at the end.


Check out the code. Check out addition puzzles and feel free to share.


Find more on the monty hall puzzle here.


How to deal with “Pointy Hair Managers”…. November 30, 2008

Posted by gcorbin in Commentary.
add a comment

It’s the same old question that you hear time after time, why should we buy a control package when we have many capable developers on staff? It’s a question that is often posed by inexperienced management trying to save a few bucks. For such management, it’s often a rhetorical question because what they are really trying to say is “no, it’s a waste of money!” As all us software engineers know, in reality buying control packs will save lots of money in the long run. So, the issue becomes how do you deal with such management? Unfortunately, there is no simple answer. I’ve found in my experience that demonstrating the savings by comparing the time needed for you to build a control vs. the cost of the control is often not enough to convince anyone. Only after you’ve done the coding, support, documentation, and enhancements that these managers see the light. Sometime, no matter how much you debate something, some people will not budge. Whether is sheer stubbornness or just plain stupidity it does not matter. This question really boils down to the age old question of “how do you give someone wisdom without them having to gained it through experience?” So my advice when dealing with “pointy haired managers” is to just run! If you have the patience to help them understand, then that’s great. It may benefit you in the long run, but most likely it will just ware you down.

At the end of the day, just remember that they are the ones signing your paycheck. If that’s no longer enough of a reason to smile and just get along with them, then its time for a new job.


The latest technology January 30, 2008

Posted by gcorbin in Commentary.
Tags: , ,
add a comment

Technology changes so often that sometimes it can be overwhelming to try and keep up. This is most noticeable when dealing with software. Since software is made from nothing but thoughts, it is a technology that can have a lot of new concepts and techniques within a very short time frame. This is most obvious for people that work within the Microsoft technologies. Microsoft has been releasing new software platforms, frameworks, and APIs at a crazy rate over the last 10 years. Within that time, we’ve seen complete paradigm shifts from desktop client/server apps to distributed smart clients that live in the web. The technology to do this has also change drastically. We saw everything from the introduction of Xml to 5 released versions of the .NET platform. This leaves many software engineers struggling to keep up with the latest craze from Redmond. I find the best solution for this problem is to stay informed at a high level. If a new technology turns out to become a big hit, then it’s worth the time to really understand it in depth. The best way to stay informed it through technical web sites and magazines. The list of content that I regularly read is listed below:

                       Web Sites











                        Magazine subscription

                        ASP.NET Pro             

                        Visual Studio.Net

                        MSDN Magazine

                        User Groups


As you can probably tell from this list, I’m mostly interested in web development. The web sites I try to read at least 3 times a week and the magazine subscriptions are once a month. The user group is a meeting that occurs once a month. It’s a great place to interact with other .NET developers. This is something new to me, but highly recommended. Of all the sites listed above, my favorite is dotnetrocks. This site release a pod cast on every Tuesday and Thursday that discusses so .NET technology. Each pod cast is 60 minutes in length. I like to download them and listen to them whenever I’m offline. They are a great way to keep informed with the constant changes in .NET.

Anyway, the point I’m trying to make here is that you should have some strategy for staying up to date with the latest stuff. Without one, you’ll go crazy with the constant flood of new things.


Great Inventions December 28, 2007

Posted by gcorbin in Commentary.
Tags: , ,
add a comment

            Great inventions in history are very rare. Over the past century, there have been many inventions, but how many can we really say are great? I like to define an invention as great based on the overall impact that it has on the world. If an invention improves the lives of the majority of the people of the world, then I’d say it’s great. With this definition, I’d say that there are only about a dozen inventions within the last century that meets this requirement.  Most would agree that the automobile, airplane, and light bulb would meet these requirements. All three of these items drastically changed the world. The automobile and airplane made the world a smaller place and the light bulb brought an end to the stranglehold that the night has had on us since the dawn of time. Now how about the computer? Could we say that it meets the requirements of a great invention? I’d say yes. While the automobile and airplane made the world a smaller place, the computer has brought us all a lot closer. Everything from communications to financial transactions can be done between two people on the opposite sides of the world in an instant. Like the automobile, airplane, and light bulb the computer exists in every facet of our lives. We have them integrated in everything from coffee makers to internal deliberation devices that help extend some peoples lives. If we were to ask who invented these great things? Most people would easily identify the automobile, airplane and light bulb to Henry Ford, the Wright brothers, and Thomas Edison respectively. (They’d be wrong, but that’s another topic). But how about the computer? Who invent that? Some people would guess IBM, which it’s not. Most people would not be able to put an individual name to this invention. So who was it? The answer to this question is the source of intense controversy. In the early 1940’s, there was a lot of work happening to create the first digital computer. Many Scientists and engineers were working on this goal from all points of the globe. Many of them had similar ideas and concepts, but who was the first? Based on my reading, the first all digital computing machine was built by two men named, John Mauchly and J. Presper Eckert. It was called the ENIAC, which stood for, Electronic Numerical Integrator And Computer. The history of these two men and there great invention is amazing. It’s the story of enormous trials and sacrifices in order to give birth to the computer age. Unfortunately, for the two of them, the immense sacrifices required of them ultimately lead to the ruin, but not before their new invention had taken hold.

        I’d highly recommend that anyone working in the computer industry take the time to learn its history. When learning about the difficult tasks that the founding fathers of the computer age had to endure and solve, it tends to make some of the issues we face today seem trivial. Like all other fields of science, its much easier to see where the future of the field is going, if you know where its been.

Truth, Lies, and History… November 27, 2007

Posted by gcorbin in Commentary.
Tags: ,
1 comment so far

      Over the past few months, I’ve digressed from my studies of computing and spent some time focusing on history. Specifically, I spent some time reading about the truth and myths in American history. The book I read help to confirm some of the truths that I’ve known about American history, but more important it helped to shed some light on many of the horrors that are well hidden with outright blatant lies. The reasons for hiding many of the horrors of American history aren’t so obvious. I’ve found thou, if you do enough digging and think through the facts of some of these hidden truths, you’ll always find some sort of motive for hiding it. This got me to thinking about how modern computing will be recorded throughout history. How will the history books of two hundred years from now present where the Internet came from? Will it present its true history starting back with the days of ARPANET and the DoD? Or will it be presented as the creation of a former presidential hopeful Al Gore? I think it will depend on the impact that it has on world over the next two hundred years. If it’s positive, then I’m sure there will be plenty of people lying claim to be the original inventor. The question still remains thou, who will it be? Based on looking back into American history, I’m going to hedge my bets with the people in power. They have always been the ones to write history. So, if you ever get a chance to travel to this future, don’t be surprised if your told about the great inventor Al Gore and his marvelous invention called the Internet.

Summer Reading List July 9, 2007

Posted by gcorbin in Commentary.

I’ve been spending a bit of time lately catching up on a lot of reading. I’ve been diving into a pile of books and articles that supposedly all software engineers read. Some of the topics are common sense and others are eye opening. The list of topics range from high level overviews on software engineering to very specific technical manuals. The techie books have always been great for learning new technology. I find that the most enjoyable part of the tech books is when you can take what you’ve learned there and apply it into some real code. It doesn’t matter if its sample code that I’m working on or an actual production level product, either way learning a new technology is fun.


The books and articles that focus on software engineering in general are great to read also. I really enjoy the high level picture of how things should work. I find it very refreshing to know that so many software engineers have similar issues when it comes to attempting to create that perfect masterpiece. However, the most frustrating aspect of these books is when you try to put to practice what you’ve read. It turns out to be much easier to try out a new technology than it is to use a new programming technique or methodology.  All these books offer ideas on how to create ideal software and what’s the mark of a good software engineer, but very few of them provide any information of how to truly measure it. Without know that, how can you possibly determine if any change is needed. In any case, I find all these books to be real page-turners and I can’t wait to get a few minutes to sit down and start that next chapter. I would recommend all these items to every inspiring software engineer. If you’re interesting in my current book list, you can find it below. Give a few of these a try and see how you feel about them.


Book List (in no particular order)

1.      Dreaming in Code (Scott Rosenberg)

2.      The Pragmatic Programmer (Andrew Hunt and David Thomas)

3.      The Mythical Man-Month (Fred Brooks)

4.      The Cathedral and the Bazaar (Eric Raymond)

5.      No Silver Bullet – essence and accidents of software engineering (Fred Brooks)

6.      Software Aspects of Strategic Defense Systems (David Parnas)

7.   Software Design Manifesto (Mitch Kapor)

8.      Essential Windows Presentation Foundation (Chris Anderson)

9.      Joel on Software (Joel Spolsky)

10.   Software Estimation: Demystifying the Black Art (Steve McConnell)

11.  Code Complete, Second Edition (Steve McConnell)

12.  Microserfs (Douglas Coupland)

13.  Peopleware (Tom DeMarco and Timothy Lister)

14.  The singularity is near : when humans transcend biology (Ray Kurzweil)

15.  Zen and the art of motorcycle maintenance (Robert Pirsig)

My new skills as a columnist April 18, 2007

Posted by gcorbin in Commentary.
1 comment so far

During the past few years, I’ve found myself becoming more interested in writing good documentation for the code I write. I’ve learned that it’s not enough to create a great piece of software without providing easy to understand documentation that explains how to use it. I’ve also discovered the immense value in providing excellent comments within the code itself. As I’ve pushed myself to write better documentation and comments for my code, I’ve found that my skills for documenting and discussing how a piece of software functions have become much better. I’ve decided to put my new skills to good use by sharing my thoughts on how to create great software. I began by writing responses to newsgroups for issues that needed some type of resolution. My responses would sometimes be in vain, but more often than not they would be helpful and appreciated. I moved on to starting this blog and although I’ve only been writing here for the last four months, I’ve found that it has really help hone my skills in this craft. My most recent move was to start working as a freelance columnist. I started writing for ASP.NETPro as a guest columnist. My first article was published in the January 2007 edition. It can also be found here. The topic of that article was “Express Yourself” and it discusses how to use data column expressions. I’m now working on my next article. The topic has not yet been determined, but the column is complete and it discusses how to use expression builders and build your own custom expression builders. My initial rough draft and source code for this article can be found here. With a bit of luck, I’ll have it refined enough in time to make the July press date. Anyway, if nothing else I hope you find the source code that accompanies these articles helpful.

A new-found respect March 9, 2007

Posted by gcorbin in Commentary.
add a comment

Over the past year, I’ve found myself cast into a new dual role position at the company I work for. I spend half my time designing and coding application features and I spend the other half doing project management. I’ve always been a hard-core programmer in the past and had no interest in concerning myself with any management aspects of the job, but now with my new-found role, I find that there are many challenges and ideas with the management side of the business that interest me. I’ve recently read a classic project management book called “the mythical man-month”. The book discusses many concepts and ideas of how to make software development more of a science and less of an art. These topics got me to think about many questions I’ve never asked myself before. The most interesting question I find myself thinking about is: What is the true measure of quality software? Is it customer satisfaction? Or highly extensible code? Or low bug counts? Or perhaps all three of these?  I spent some time pondering this question. Thinking about my past experiences and what I’ve heard from fellow co-workers. I think that the answer to this question depends on your point of view.


If you’re a hard-core programmer and really enjoy the art of software engineering, then the answer is:  Quality Software is measured by its high extensibility, and ease of maintenance, and lack of bugs.


If you’re a project manager, then the answer is: Quality Software is measured by its completeness in requirements and done in a precisely predict set amount of time.


If you’re a business manager, then the answer is: Quality Software is measured by its ability to be done on time and most of all, generates high profits.


Ultimately, the most important measure of Quality Software is the business manager’s answer. If the software does not generate profits, then no one is buying it. If no one buys it, no one uses it and no one gets paid. This lead me to another difficult question. Has software become a new type of consumer product? A type of paper cup?