CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Eric Wise

Business & .NET

November 2005 - Posts

  • The not so mythical super villain

    I had quite a bit of feedback from my previous post, so I figured I'd step up and do Super Villains now.

     

    The Doc-inator

    Credit to sam on this one.  This is the developer/manager that demands excessive documentation.  Instead of embracing a policy of clear and concise naming conveyntions (self documenting code), this villain demands that every single property and method receive a full documentation template header.  Even if the comment for the property LastName is 'last name of user, it must be documented.

    The Doc-inator takes perverse pleasure in binders and anything that can be compiled that will never be read by another human being.

     

    Copy and Paste Guy

    This villain has absolutely no concept of promoting commonly used methods so that all calls go against a single bit of code.  Copy and paste guy not only has the joy of increased maintenance time while he tracks down the 15 places the same bit of code is running, but also is commonly known to propegate errors through each instance.  Copy and paste guy also plays a nasty trick when they have the same functionality copied in 9 pages and then on the 10th it's only slightly different which can cause logic errors if it gets copied over in a rush.

     

    The Anti-Google

    This particulariliy nasty villain not only wastes their time but yours as well.  This is the villain that is seemingly incapable of running any error or programming question through google before coming to ask you.  Hours and hours of time are wasted while you hold their hand through doing a google search and finding the appropriate solution.  What makes the anti-google particularily dangerous is that they are willing and able to complain to your superiors about you "not being a team player" if you don't answer to their every whim.

     

    The Source Control Stopper

    This is the developer who checks out the project file and then leaves the office, effectively preventing anyone from adding or removing files from said project.  That's not all folks!  The villain in question also has the annoying habit of checking in code that breaks the build.  If that's not enough this coder will check out a few files for weeks on end, make changes, report them fixed, and then act astonished when they don't show up on the production server.

     

    Dr ToolHater

    I'm sure you all know this villain.  This is the villain that absolutely refuses to buy any third party component to make their life easier.  This villain demands on spending 6 weeks to create a custom date control that is inferior to a date control you can buy from any number of vendors for < $300.  This villain is particularily annoying when their passion for creating inferior clones of commercial products is combined with a clueless executive who thinks no matter how much time it takes it's ultimately cheaper and more flexible to build everything in-house.

    There's a time for build and a time for buy!

     

    The Zealot

    The zealot comes in many annoying forms.  The zealot who spews whatever marketing garbage of the day is on Slashdot, the Google Blog, or Microsoft's latest paid for linux comparison is bad enough, but can be ignored.  Where the zealot becomes a true villain is when they bring patterns, languages, and third party utilities in without talking to anyone else on the development team about it.  Then suddenly one day you have to go in and edit one of their projects and wtf...?  There's an application that's damn near unmaintainable without a severe learning curve because they brought in a bunch of unapproved crap!

     

    Darth XML

    Don't get me wrong, xml and config files are great when used appropriately.  Darth XML however takes their love of XML to unhealthy extremes.  String parsing galore, Darth XML will not rest until every possible bit of logic has to somehow be connected to config files parsed at runtime.  Darth XML is the father of passing datasets over remoting and also seems to have a distaste for intellisense.  The worst case I've ever seen was an entire sql database mapped out into a single config file...

     

    The Project Manager From Hell

    The most infurating of the management lot is the project manager from hell.  The project manager from hell is often an ex-techie and as such knows just enough to be very very dangerous.  They often search for the latest trends and pick up buzzwords from the latest Microsoft articles to "try out" on the people around them in an attempt to look knowlegable.  When teamed with Darth XML, you can end up with a half assed attempt at SOA and webservices all over the place that aren't being consumed by any other systems.

  • The Mythical Super Programmer?

    I was cruising the Joel On Software forum recently and came across this post and I felt compelled to blog my thoughts.

    I often find it quite perplexing, the term superprogrammer.  It seems that people are looking for this one size fits all definition of what is super.  This doesn't tie well to the definition of a super hero though which is the metaphor being used.  Super heroes are certainly super, but not perfect.  Generally a super hero has a few abilities that scale far beyond that of the average person (and oftentimes some weaknesses that scale far beyond as well).  My point is that what is super in one organization is not necessarily super in another.  Let's look at some cases:

     

    Case 1: Super Speed Man

    This programmer is fast, damn fast.  They can push working code at astonishing speeds.  These people generally have some solid code templates and a great memory for the framework and application so they rarely have to stop and look things up.  These are the guys that you assign a 6 week task to when it needs to be done in 3.

    The weakness?  In most cases super speed man is short on useful documentation.  In addition, their code is rarely abstracted out and when requirements change down the road the code changes generally require more work than a better architectured solution would be.  Finally, sometimes this hero will forsake coding standards for the sake of speed.

    Super Speed Man is most appropriate in consulting shops where the time is money scenario is very critical and the ability to push working code quickly to a customer is paramount.  Time to market is definitely a desirable thing, so speed man also excels in start-ups.  Speed Man can be frustrated by traditional shops surrounded by a lot of red tape.

     

    Case 2: Mr Architect

    Here's a hero that can build a framework that aligns with the needs of today and the perceived needs of tomorrow.  They have an innate ability to predict the future and see problems before they show up.

    The weakness?  This guy is actually the opposite of speed man.  He requires a lot of time for information gathering and planning.  A shop that can't afford to wait is not a good match for this hero.  Also keep in mind that a shop with very loose requirements and specifications will probably frustrate this guy.  In addition, he can sometimes clash with Dr Consistency since patterns and framework concepts do change with time and individual growth.

     

    Case 3: The Communicator

    This hero has the valued capability of being able to translate "user speak" to "tech speak" and back.  This is your liaison to the other pieces of your organization and customers.  The communicator has the ability not only to make the end users comfortable that their message is getting across, but also can educate them in some of the inner mysterious of development.  This hero is your team's champion to the outside world.

    The communicator is damn near useless in an internal shop with highly technical users.  Like Aquaman without a dolphin.

     

    Case 4: Dr Consistency

    This hero is a great member to have in an environment with multiple teams and workers that move between projects.  Dr Consistency is able to see development patterns emerging and set and enforce coding standards.  This hero is key to a multi project environment where maintenance is a concern.

    Consistency takes time and refactoring however.  Organizations who are not willing to allocate time spent working on code that shows no change to the end users should avoid this hero.  He can also clash with super speed man when consistency adds time to the development process.

     

    This was kind of fun.  Maybe next I'll do super villains.

  • App Themes and Forms Authentication

    So I have wired up the I am Brilliant application to use app_themes.

    I would like to say that I'm pretty impressed with the App_Themes concept and I plan on leveraging it soon.  To set a theme at runtime you simply set page.theme="blah" in your pre_init method.

    What was driving me crazy was that the login page of my application was not getting the theme so it was showing up all crappy since the css and images were not appearing.  This bothered me greatly for a day or so and then it hit me:

    If you want to use themes on a "public page" in a forms authenticated application you have to make sure the App_Themes folder is public.

    "Duh" I thought when I figured this out.  But being that themes are new it didn't immediately occur to me.  Quick modification to the web.config fixed me right up:

     

    <location path="App_Themes">

    <system.web>

    <authorization>

    <allow users="*"/>

    </authorization>

    </system.web>

    </location>

    <location path="images">

    <system.web>

    <authorization>

    <allow users="*"/>

    </authorization>

    </system.web>

    </location>

  • A few weeks into vs 2005

    Ok, so I've had a lot more time to spend in the production run of VS 2005 and .NET 2.0.

    First I'd like to say that the deployment isn't as bad as my initial reaction.  I have high hopes for the new build tool though since compiling into a single assembly does make sense and helps on my current projects.  I definitely understand how different styles would feel otherwise.  Frankly we have been very good about seperation so our aspx code behinds are really just calls to a business layer which is a seperate dll.  Hence once the layout of pages is settled we usually only have to push the compiled web assembly.  So yes, the whole "give aspx pages a pointer to a ugly named dll" is a hinderance in my world since I now had to push pages where I didn't have to previously.  For the time being, we're running in "non precompiled mode" with all the code files etc right out on the server.

    I love the new IDE, particularily all the warnings for poor code structure that it catches.  It allowed me to quickly run through the application and code review it.  Several developers have been in and out of this project and being alerted to things like obsolete variables that are never used etc was helpful.  I know there were ways to do this previously but it's nice having it automagically fired up in the IDE.

    Using statement for VB... thank you!

    XHTML compliance and the ide doesn't reformat my html... thank you!  I actually use the IDE for my .aspx designer now.  Previously because of the vicious (and often silly) reformatting I would often use a vanilla text editor to modify my .aspx files.

    Generics are pretty fun too though I haven't had much of a use for them since all my existing classes had collection classes using collectionbase.  I suppose in future development this could save some time but if it ain't broke I'm not going to fix it.  =)

  • Conversion Successful

    Just wanted to share that my team has successfully moved the Brilliant web application over to .net 2.0.  It did build out of the box but we also stripped out the user controls and moved to master pages and themes.

    Total time spent was < 3 days (~75 pages plus business layer).  I'm pretty pleased.

  • Open Source Stuff

    Brendan reminded me with this post that I haven't updated anyone on the state of Easy Assets for a while.

    Like Brendan, I'm pleased to report a goodly amount of downloads.  Also like Brendan I have received 0 code submissions from the community and have grossed $0 in donations.  Seems to me that the open source experiment is failing.

    The repercussions?  Not much really, I'll probably get on converting it to .net 2.0 sometime in the next 6 months.  The main repercussion is that without community submissions and/or donations the priority of coding enhancements on Easy Assets is waaaaay down the list of things I have on my plate. 

    *shrug*  It still feels good to have something out there, and it was a worthy experiment if only to prove that anything I build in the system will not be free open source.

  • Pretty Unhappy with Deployment

    ASP .NET 2.0 deployment pretty much sucks.  Just thought I'd share.

    Why is there no option to compile everything into 1 assembly like in 1.1?  In all honesty, my deployment times have probably increased five-fold.

    Other than that I'm pretty happy with the new designer and controls.  The IDE is good, I had very little difficulties migrating 1.1 apps to 2.0.

    But the deployment... why?  Are we being punished?

More Posts

Our Sponsors

Free Tech Publications