How much .NET experience is the right amount?

September 15, 2008

Recently, I was challenged by a prospective client to explain why I should get the web application project when I only had 3 years of ASP.NET experience.  I’ll admit I was unprepared for the question.  My hesitant, but entirely valid, response was about how software development projects are made up of many important pieces including business analysis, project management, application design (i.e. middle tier), user interface, testing and maintenance.

This really got me thinking about the history of .NET, and therefore ASP.NET, and what is the best level of experience to have when working on solutions in 2008.  You see, .NET was originally released in version 1.0 in 2002.  As a matter of fact, the first demo of ASP+ was here in Phoenix at PDC (Professional Developers Conference) in 2000.  The .NET framework 1.0 (and 1.1) was easily dismissed as typical Windows development, i.e. you had better wait until the first service pack before developing anything really important on top of it.

I distinctly remember 3 weeks of experimentation with .NET 1.1 while I had some bench time in 2003 after .NET 1.1 was released.  Back then I wasn’t much of a web developer, I was more focused on Windows applications and SQL Server.  I didn’t know what I had.  ASP.NET 1.1 had real promise while the Windows Forms portion of the framework was very crashy.  Given that I developed (then and now) robust applications that my clients depended upon day in and day out to run their business, I dismissed .NET Framework 1.1.  I don’t regret it either.

The .NET 2.0 framework released in 2005 is when most developers, including myself, finally came on board.  Ask any developer (today), what their favorite version of .NET is and the response will be 2.0.  The introduction of master pages, web parts, personalization and declarative data access really made developers job easier.

So, given some time and perspective…my 3 years of .NET experience are right on track with the release of a stable version of the framework.  You can make the point that I might be a better .NET developer if I had those additional two or three years of .NET experience, because I would have experienced more pain and thus learned harder lessons.  I’ll agree with that if you’ll agree that, during that same period, I was providing my clients with robust software built on proven platforms (rather than working in immature tool-sets/frameworks just to advance my own knowledge).  I won’t even bring up the 6 to 10 new business models I learned in that same time-frame that might provide benefits to the business a prospective client would like me to learn today.


Why writing software is so hard

September 12, 2008

Since Google’s Chrome web browser has been SO much in the news lately, there have been tons and tons of blog posts lately about it.  I picked up on this one about the password manager mechanism because well, I am a software developer (er…ok…geek) and I am a bit tired of all of the prognosticating of what Google Chrome means to the competitive landscape of the world wide web.

What struck me about this well written article was how hard it is to communicate to the lay men what is involved when a simple requirement needs to be fulfilled in a software project.  In this case:  The browser should store website passwords at the users discretion.  Sounds simple right?  It’s not.  There are several reasons why.

1)  Architectural.  Which method shall I use for transporting the request?  What storage mechanism will be used?  What should happen in the request to store the data fails?

2)  Maintenance.  How much debugging code needs to be added to each procedure?  What debug values would be most valuable when debugging an issue that may or may not be expected?

3)  Data.  How much info should be stored that is merely related to the task and/or requirement that might assist in management of the application or troubleshooting after the fact?

4)  Users.  What prompts communicate effectively to the end user that a decision must be made by the user?  What prompts or messages impede the user or are effectively not needed nor add to the user experience?  If an error occurs, what should be displayed to the user?

5)  Developers.  Note the (almost) flame war that breaks out in the comments section between developers who either feel the need to point out the obvious, don’t like to be corrected, like to correct others, can’t stay on topic or will not give up an argument until all parties are not sure how it started.

As you can see, this ain’t easy.


Is your software project a super tanker or a speed boat?

September 9, 2008

Given my background, I’ve been involved in both small and large software projects.  Small projects can a have a budget of less than 3 hours up to a whole year of man hours.  Big projects take years and massive amounts of manpower, i.e. more than 2000 man hours.  Most of the small projects I’ve worked on are extremely dynamic and new challenges are presented almost every other day.  Big projects tend to plod along with not much happening or changing each day.

I’ve been thinking a lot about this lately as I have tried to revitalize my network of contacts for my business.  This has enabled me to get back in touch with colleagues who used to work with me on small projects but have moved on to big projects, as well as those who used to work with me on big projects and still work on big projects.  The stark contrast between the two sizes has been eye opening.  I’ve begun to think in terms of shared abstraction (or analogy) so I can properly describe the two types.

Big projects are super tankers of the seas (but they are definitely not cruise ships).  They move at a pace that is measured in miles and have little capacity to make course corrections.  They burn resources at a rate that would be alarming to anyone outside of enterprise software development.  They require a captain, a crew and at least one member of the crew capable of really managing the crew (i.e. not the captain but an influencer capable of staving off mutiny).

Small projects are speed boats.  Capable of turning on a dime and reacting to conditions with great agility.  Small projects require a single disciplined captain who knows the capabilities of the boat and the local conditions.  Small projects almost never face mutiny because everyone depends on each other to fulfill their duties and there is no place for problems or problem crew to hide.  The danger is higher, yes, but, there are more opportunities to experiment and/or explore unique opportunities.

I, myself, have worked on small projects then moved on to big projects and now I am back to small projects.  When I check in with my colleagues on big development projects, most of them express dismay at the speed of their pace.  Another common refrain is that they really aren’t 100% certain of their direction or their true impact on the success of the project, i.e. the destination itself is so far off they aren’t sure they will make it.  This is very hard for me to hear.  Working with small businesses day in and day out, I have excitement and impact nearly every day.  If I don’t, the small business owners I work with are more than willing to share their excitement about new prospects or a revised process in their business.

Bottom line:  A bigger boat may bring about envy or bragging rights on the water, but the speed boat is a heck of a lot more fun.


My favorite kind of project posting (NOT!)

August 30, 2008

Since I am in the freelance business (and contract business and consulting business and …), I get to monitor quite a few project sites for additional work, such as elance.com, rentacoder.com, odesk.com and getafreelancer.com.  My favorite kind of project posting, goes something like this:

“website is looking for a college student or a young web designer with a good knowledge of web design to help us design and build our website. We may be able to work out a limited payment arrangement now, but the majority of pay will be deferred. We have an aggressive, profitable business model and are confident in our success…we just need someone to help us get the ball rolling…”

Sounds like a very smart company bootstrapping their way to success right?  Well, not quite.  This comes back to the old adage “you get what you pay for.”  If you actually find a student or junior level person who is willing to go without payment, you will get just the same level of quality, customer service and long term return on investment that your company invested in the project.  In other words, you will get none.  You will also pay a lot more when a professional is brought into to assess and/or fix the damage.  I can guarantee there won’t be much savings there.

Let’s look at this from the perspective of the student or young designer, perhaps we need a new adage such as “you get what you invest”.  If it were me, I’d want “limited payment arrangement” defined.  Isn’t that a life insurance term, where the person actually pays a premium?  I guess the student or designer will pay the premium in hours but reap a lifetime of benefits?  Whose lifetime?  The web site’s?  The smart company that’s currently bootstrapping?  Can someone also define “majority of pay”?  My definition would come in at 50.1%.  If the ball isn’t rolling yet, how is it profitable?  Is it profitable when the first sale closes?

Sorry to rant.  Perhaps I’m just jaded from seeing too many haphazard development projects land on my door when the company owner discovers their true north or the junior person just flakes.


Southeast Valley .NET Users Group (SEVDNUG)

August 29, 2008

Heard of SEVDNUG?  Neither had I until a colleague, Mark, recommended one of their events (Aug meeting) which was going to cover ORM (Object-relational mapping).  Since I came to Valley of the Sun in 1999, I’ve been to a few user group meetings in central Phoenix at the Microsoft offices (you been to the 14th floor, right?).  I’m really glad that a splinter group has formed on it’s own in another part of the Valley.  It serves two purposes.  One, it places the event(s) closer to where others live and work and two, additional topics can be discussed amongst the vast development community here.  It would be nice if something formed on the west side, perhaps in Glendale or Surprise to serve that community too.


What does the search engine of the future look like?

August 27, 2008

All you need to do is try www.searchme.com. One search and you will be convinced that this is the future.  This is how the high bandwidth future will look.  This is how your children AND your grandparents will search.  Goodbye cruel text world!


Is there a free Sharepoint?

August 27, 2008

Of course not, but here is a great article on the freemium wiki’s out there.  Hmmm, I wonder is Google has a product in this space?  Read on to find out…


Reporting tools for Microsoft .NET

August 12, 2008

I’ve had the good fortune lately to review all of the available reporting software for the Microsoft .NET Framework.  A client of mine is undertaking a rewrite of their enterprise software with about 80% of the work in desktop development and the remaining 20% in web development.  Such an undertaking, and because of the length of the project, requires careful review of what’s available today and what’s going to be maintainable tomorrow.  What follows is a quick review of my impressions:

1)  DevExpress XtraReports:  For a relative newcomer to this space, this is a surprisingly mature tool.  Integration with all of the IDE’s, including Express Editions, is supported.  Plenty of data source and data exchange support.  Great price.

2)  Telerik Reporting:  Uses it’s own paging and rendering for browser printing.  Report converter available if migrating from other third party tools, but no report converter for MS Access.  Very high price per developer seat.  Also, given my past experience with Telerik controls and some testing, Telerik controls are something that must studied and learned.  There is no such thing as Rapid Application Development when it comes to using Telerik.

3)  Crystal Reports:  Can be considered free if you already own Visual Studio Standard or Professional.  Parameterization can be a pain if reports are embedded in their own DLL.  Abundance of books and web sites available for picking up tips and tricks.  If deploying to a web server with high concurrency, may need to purchase server version, since VS version only supports triple concurrency.  Subsequent requests are queued.

4)  XML with XSL-FO:  There are a number of formatting engines available today, but most were built for Apache, and do not come cheap.  The visual designers available today just do not support advanced topics such as multicolumn layouts.  Overall, this technology has the brightest future but as of today, suffers from first generation toolset capabilities.


Random Thoughts - July 2008

July 31, 2008

This is not an overnight success story, it is a story of many long nights.

The service is the client and the client becomes the service.

Choose the last responsible moment.  (Thanks Trent!)

I’d rather engage in social networking in person.

Everyone has problems.  Not everyone deals with them.

People must master the rules before they break them.

Some people will say you work hard and you earned it.  (Thanks Randal!)

Assess the person in terms of their capability, not their price.


Geekdom, admit one

July 31, 2008

Recent events have only confirmed my geekdom…

Monday)  The speed at which I had to forward a pirate clip of Tron 2,  released by Disney at Comic-Con, to my best friend, Randal.

Tuesday)  The number of books I recently ordered about XSL-FO for an upcoming project.  I’m not sure if knowledge is my drug or Amazon is.

Wednesday)  The utter joy I felt in reading about the gossip protocol on Wikipedia, after hearing this term in a bulletin about the recent S3 datacenter outage.