in

Platinum Bay

Peace, Love and Visual Studio Team System

.NETicated

August 2007 - Posts

  • Compliment or Complicate

    Rather than trying to solve real business need, even though they think that's what they're doing, many business end up complicating their organization through a mish-mash of mix-matched technologies that aren't really solving a real business need.

    I remember when I learned this lesson: that not everything is worth solving through new software development (writing code). The company I worked for at the time has SLA agreements with their customers for hosted-software uptime and availability. To compliment this, they produced PDF reports on a monthly basis showing the particular clients availability, or the lack there of, for the previous month. It was a very manual process, to say the least. Data had to be aggregated from many different sources, and manually assembled into Excel spreadsheets which would be used to populate the PDF files.

    Being the young and idealistic programmer that I was, I offered to automate the process for them. Luckily, I was shot down rather quickly, albeit very nicely I must say. It was explained to me that even with all the aggregation that took place, the man hours per month to aggregate and compile the data added up to about 0.5. I had estimated it would take me at least a couple days to a week to complete the project. Therefore, even at 2 days of development time, it would have taken them at least 16 months to begin to realize a return. There were far more important things to work on at the time.

    That was definitely an eye-opening experience for me. I realized that it's not enough to write great software for the sake of writing great software. There has to be a demonstrable return on the investment. To proceed with my proposed project would have complicated, rather than complimented the business.

    I was recently party to this same line of thinking, though this time from the other side of the fence. A product-based company I was at had some rather old and mundane tasks that had to be performed as part of their business. Folks would complain, and suggest the processes be automated. But the same realization held true. The time and effort required to automate those efforts would not help any more product get on the shelves. Further, while it might save in administrative costs, those costs were very hard to prove or quantify.

    The last example I will share, is the business user who happens to read, see, or hear about the latest and greatest technology to ever hit the universe and send an ultimatum down the pipeline that this is what everyone should focus on. I think I've summed it up above, but regardless of the emotional response, there needs to be a real, quantifiable business case for adopting and new technology, or developing any new code. Too many businesses are adopting technology for technologies sake, without appreciating any real business value.

    I ultimately fall back to my realization that a proper process is of the utmost importance in upholding an organizations best interest. Through proper use case modeling and risk analysis, most of these types of endeavors can be nipped in the bud before they turn compliment into complication.

  • VsTemplatePaths Part Deux

    I recently attended a SharePoint developer training class led by Todd Bleeker, SharePoint MVP.  Todd is a great instructor, and one of his comments during the week seemed to ring true for anyone with experience with SharePoint.  He related SharePoint development to playing Pac-Man.  You eat a dot (develop a little bit), then go test, and repeat this process over and over and over again.  He attributed this in part to a lack of documentation regarding SharePoint extensibility.

    I would say that this applies as well to Visual Studio extensibility.  The documentation is lacking at best, and I've spent a lot of time in Google and Reflector recently trying to put the pieces together.  And I've eaten another dot.

    The answer to my VsTemplatePaths problem was painfully easy, yet just plain painful to find.  The answer came when I ended up diffing my project with an earlier project that used the Visual Studio Integration Package.  I was missing the following nodes in my project file:

        <TargetRegistryRoot>Software\Microsoft\VisualStudio\8.0Exp</TargetRegistryRoot>
        <VsTemplateLanguage>CSharp</VsTemplateLanguage>

    Yup, that was the whole problem, and now my project correctly builds.  An astute reader validated my answer as well, thanks Alex!  He also mentioned that the deployment path gets built from the two variables above.  Diving into Microsoft.VsSDK.Build.Tasks.dll in Reflector, specifically the Execute method in the VsTemplatePaths class, that is in in fact correct.  This results in:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\VSTemplate\Project\UserFolder

        Path.Combine("C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplatesExp", "CSharp);

     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\VSTemplate\Item\UserFolder

        Path.Combine("C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplatesExp", "CSharp");


  • VsTemplatePaths: Even Google Doesn't Know

    For that matter, neither did Live, Yahoo, Lycos, or even MSDN.  DogPile gave me twelve results that, well, were from the dog pile; none of them were related and some were just blatent advertising.  Ask Jeeves must be on vacation.  Mamma.com too.  LookSmart really didn't.  And I was disappointed with the view from AltaVista; it must be cloudy up there.

    What was my query?

    The "VsTemplatePaths" task was not given a value for the required parameter "Language"

    and

    VsTemplatePaths

    For those of you playing the home game, that's '...Microsoft.VsSDK.targets(347,5): error MSB4044'.  And I'm really quite proud!  It would appear that I am the first person to ever get an error related to, or even inquire about VsTemplatePaths.

    The short story is that I created a Visual Studio MPF project with VSSDK Assist, and am trying to add project and project item templates.  The build actions get set to ZipProject and ZipItem respectively.  The real question now is how do I get past this error, and more importantly, can I finially specify the deployment path for the zip files to be the Common7\IDE\ProjectTemplates and ItemTemplates folder instead of the user template directory?

  • RUP? Yup!

    I have never been a big fan of software development processes.  Ok, I hated them.  To me, they have always felt like slave-driving overlords who wanted nothing more than to make my life miserable through mundane and trivial busywork.  I could never understand why it had to take an hour or more of mostly administrative tasks just to change a static copyright at the bottom of a web page.  Really, how bad could I screw up changing 2006 to 2007?

    Then into my life floated the Rational Unified Process (RUP).  It was my first introduction to interative development, and as I learned more (The Rational Unified Process Made Easy by Kroll, Kruchten, 2003), RUP started to feel more like the anti-process.  Sure, there are still processes to be followed, but not a strict, weighted-down set of process requirements like most of the waterfall organizations I had experienced.

    RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs.(1)

    The basis of RUP is eight fundamental principles, called the "Spirit of the RUP."  These principles closely reflect those of the Agile Manifesto.  These principles are:

      1. Attack major risks early and continuously… or they will attack you.
      2. Ensure that you deliver value to your customer.
      3. Stay focused on executable software.
      4. Accommodate change early in the project.
      5. Baseline an executable architecture early on.
      6. Build your system with components.
      7. Work together as one team.
      8. Make quality a way of life, not an afterthought. 

    I liked it so much that today I took and passed the 839 RUP exam from IBM.  I am now an IBM Certified Solution Designer - Rational Unified Process 7.0.  Who would have thought?  Process that!

    More info: Key principles for business-driven development

    (1) http://en.wikipedia.org/wiki/Rup

    Posted Aug 25 2007, 01:48 AM by Steve with 1 comment(s)
    Filed under: ,
Powered by Community Server (Commercial Edition), by Telligent Systems
© Platinum Bay | Some Rights Reserved Creative Commons License

Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Feel free to challenge me, disagree with me, or tell me I'm completely nuts in the comments section of each blog entry, but I reserve the right to delete any comment for any reason whatsoever (abusive, profane, rude, or annonymous comments) - so keep it polite, please.