Tuesday, March 14, 2006

If you don't care, skip this post!

Busy, busy, soooo busy

A lot has been going on lately!  Most of my time is spent working.  That is both good and bad.  Its good because I have been enjoying my work.  Its bad because no one should work that much.  I've helped drive some really needed change in my IT organization to a more agile development approach and made some significant stride forward.  I am currently working on a brand new project as the product producer.  The title is certainly not official but I have been given budget, hiring capability, leadership and technical decision making authority and a very, very short deadline.  I had three projects in the works that I was providing architectural support for as well as the general messes that required my attention.  At one point a couple weeks ago I was informally offered the dev manager position but last week I was formally declined.  Long story.  Its all for the better.  I need to focus on my current project. 

The good things I've accomplished

New Brains

First, I brought some really incredible talent in through the door.  Paul Lockwood and Marcie Robillard have joined our team.  Paul has already been thrown in the fray.  I hope we fdon't scare him off too quickly!  There is so much going on right now its difficult to see what is actually going on!  Marcie starts shortly.

New Tools

I've successfully integrated NAnt and MSBuild with cruiseControl.net to build our dot net 1.1 and 2.0 projects across the entire enterprise.  There are some non-current projects not on the server but I've mastered the process such that it isn't much effort to bring a new (or old) project online.  I've got 27 individual projects under continuous integration executing a nice introductory sample of NUnit tests.

It took some time to get people to value the cctray and the little green icon.  Eventually, the tables turned and people began to really engage the tool and verify their checkins.  No more, "hey buddy, you broke my project!" 

I then brought the small spattering of NUnit tests into the fold and they broke the build.  Hmm, you'd think that would be bad, right?  No Way!  When I showed the new development manager, he was elated!  So was I and a few other key developers.  We all immediately saw how that smallish effort will pay off really big. 

New Way

A few months ago, I was effecting a bit of a coup.  I was, quite frankly, fed up with the heavy, restrictive, disabling process that surrounded our development endeavors. 

I revolted and began working in a psuedo-agile way.  I failed to meet some of the core facets of Agile development and had a struggle during that first project when I abandoned the accepted waterfall process.  The first project was a significant success.  We made our deadline, the project sponsor was happy and we had fewer defects then usual.  I came in after the project was underway with a horrible function req doc (that wasn't ), a rediculous tradeshow deadline and I had to improvise.  The unexpected result was a company-wide realization that process-for-process-sake is generally bad.

The other project on my trial run is still under way.  It is in danger of cancellation since the newly appointed lead has just been re-appointed and he may not be physically capable of delivering both products in the two month window alotted.  However, a great deal was learned about how to develop software without documenting your anscetral lineage prior to the colonization of America. 

The point is, after the first project, everyone cheered, "yeah!  we're agile."  Yet we weren't.  Still, the whole organization looked around confused that something that looked to them like a crap shoot was actually very controlled and delivered something better then origianlly conceived of.  My coup ended and the IT management led the charge to convert our team from waterfall to agile.  They aren't really sure what that means but every one of us is reading verosiously.  We brought in the Menlo Institute to school us.  I breathed a breath of fresh air and moved on to my next mountain.

New Project

My successes leading recent projects have landed me a very exciting opportunity to truly lead the development of a new product from conception to delivery.  I am very overwhelmed with work but I feel electrified to be so empowered.  I've had my kickoff meeting with business executives and it went splendidly (to quote Thomas).  I am now scoping the feature set and ready to start rockin in the free world!  The initial realease will be tiny.  The impact, in my little world and its market, will be like the introduction of the railroad into industry.  That's my plan, anyhow.

that's enough mindless blogging for now.  I live in an eternal state of intensely opposite forces.  All the things mentioned above are the good things going on.  The disappointing things don't deserve face time.  I've learned to focus on what I want and lead with purpose rather then to focus on what I don't want and run from...  well, you get the point. 

Perhaps when this is through, I'll look back and laugh at how naive I was.  Or, perhaps I'll say, "that was when everything started to happen for me," professionally anyhow

3/14/2006 11:09:41 PM (GMT Standard Time, UTC+00:00)  #    Comments [1]  |  Trackback

Is it possible that someone has called me spam?  I just searched on terms that I should rock for and got nothing!  My website isn't even on the list.  Years old posts on unassuming forums are ranking higher on my name then I do.

Two possibilities occur to me.  One: vitaminzrecords is a very bad name for a personal music and blog site.  Two: vitaminz used as part of my own monacre is a violating someone's perception of their trademark and they bitched.  Three: my domain going down last year pulled me off the index for good.

I'd like to know which is the culprit.  If the name is killing me, I'd like to know now.  This is the name I came up with for my record label.  It is the last vitamin you'll ever need, baby.  However, if it is boycotted from Google, I'd rather have my content accessible and would acquiesce to change my domain name to something else.

cheers

 

Rusty Zarse

3/14/2006 2:26:55 AM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback
This is a job description written in a language recruiters cannot understand. Please see the website for a good chuckle at my inginuity. No, it didn't help get more qualified people...
using AgileDevelopmentMethodologies;
using ASP.Net2.0;
using VisualStudio2005;
using NUnit;

/// 
/// This individual will crank out high-quality, high-performance application logic 
/// to further enhance the absolute industry-dominance for their employer.
/// The product is the leading provider in its market vertical and seeks to broaden
/// their target market.  It's an exciting and challenging opportunity.  
/// The website itself is a public facing, high volume, user-centric, high profile brand
/// and a valuable product to consumers
/// 
/// Highly competive rate for competent individuals.  Position immediately available.  
/// 
public class SeniorDeveloper : ExperiencedWebApplicationDeveloper
{
    string _employmentType = "Contract/Contract to Perm";
    int _immediateDotNetTeamSize = 3;
    int _organizationTeamSize = 20;  //appx
    int _growthOpportunity = int.MaxValue; //TODO: consider refactoring to use larger datatype
    
    // developer must be able to work on a team yet complete tasks independently
    // skills needed are all facets of web development as related to high-traffic, 
    // public websites.  Think http://www.apartmentguide.com
    public SeniorDeveloper()
    {
        bool requirementsMayBeChanging = true;
        // requirements changes are expected and embraced.  
        // If they should change, impact to project development must be minimal.  
        // Short iterations enable flexible project focus
        while( requirementsMayBeChanging )
        {
            
            // turn business ideas into functional feature sets
            AnalyzeRequirements();
            // elaborate on the above
            CommunicateWithBusinessSponsors();
            // estimate the work required to implement
            EstimateFeatureDevelopmentCost();
            // independently productive and organized.  Aware of issues early and able to communicate risk
            ManagePeronalResponsibilitiesAndHelpManageProjectStatus();
            // commitment to quality and zero defects (*required)
            WriteUnitTests();
            // keep the logic out of the interface, keep the html out of the class library.  
            // if any feature or function cannot be unit tested, it is a poor design.  refactor!
            ImplementStrongObjectOrientedPractices();
            // IE 5+, FireFox 1.0+, mac and windows
            SupportCrossBrowserUserInterface();
            // check in code that compiles
            // Write unit tests that verify code-complete
            // strive for zero defects
            WorkOnATeamUsingContinuousIntegrationAndAutomatedUnitTesting();
            // work closely with qa to provide a rich test plan 
            // that extends upon the quality offering of developer authored unit tests
            // be production ready with every short iteration
            DeployShortIterativeReleasesToQualityAssuranceTeam();
            // occassionally, defects pop up.  Troubleshoot, isolate, write test(s) and resolve
            TroubleshootAndResolveDefects();
            // the product's market performance drives the enhancement and extension of the website
            // if the product ceases to deliver business value, the product is not worth continued investment
            if( ProductIsMeetingSuccessFactors() )
            {
                // feedback from user response will help to make the product even better. 
                // New features will be requested!
                requirementsMayBeChanging = BusinessSponsorHasAquiredNewData();
            }
            else
            {
                // isolated failure is only an opportunity to improve even more but continued failure is a problem
                throw new NotMeetingObjectivesException( "Time to reconsider the current product direction" );
            }
        }
    }
}
3/14/2006 12:09:06 AM (GMT Standard Time, UTC+00:00)  #    Comments [3]  |  Trackback
Friday, March 10, 2006

First I will point out that I've been tellin' this cat to blog for a year now!  I've tried to enlighten him on the potential Google-Juice that an active blogger can generate.  However, like any organic farmer will proclaim, "sometimes you just have to figure things out for yourself the hard way."

Slim is an SEO Guru who handles all of our Search Engine Optimization initiatives.  He has managed to create a culture where designing for both index-ability and usability are key concerns.  We've tried to trick the Google bots, gotten slapped, tried again, got smacked again...  Finally, everyone looks to him to tell us how to structure our sites so that people using the internet can find us without purchasing the traffic click by click.  Novel idea, eh?

3/10/2006 5:34:16 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback

It occurred to me that everyone has their own way to get to the same destination.  In programming, a professional may read books, they may go to conferences, they might merely use the platform documentation or they might dissect the platform piece by piece to decompose its function and learn how  it worksfrom the inside out.  They might even rewrite it just to figure it out.

I have one friend who told me he doesn't learn from books.  He finds they don't suit his pace of things.  He is one of the most capable, brightest individuals I know and he'll figure things out through experimentation and analysis.  Another peer I've worked with spends his time taking things apart just to learn how they work.  Then he rewrites them and calls them his frameworks.  While he is intelligent, I think he's terribly misguided because his goal is to prove how much he knows about things and the outcome is merely that he knows alot about things but produces nothing truly useful.  Then there are the readers.  I am a reader.  I read so many things that I hardly ever finish a book in entirety and I'm usually reading half a dozen at once.  Sometimes I have a dozen books on to-be-read-queue.  Then there are those people that find the process of staying on the leading edge costly and  prefer to wait for the inevitable trickle of  important information to find its way to them. 

What if all these people could benefit from all these activities?  What if each person's tower of knowledge was a week or two from being accessible every other person?  What if the person who waits for information could be the vehicle to deliver the important things that the dissector learned to the person who reads too much?  What if all anyone did all day was talk about the new things they've learned?  How might that affect the pace of growth in a group?  All these questions are on my mind related to Pair Programming.  I was not a believer until we had Richard Sheirdan of the Menlo Institute give us a one day fire hose on Agile methodology.  He is no dabbler in a few Agile ideas, he is a hard extremist on the agile front.  He's also speaking from real world experience, a lot of it.  He is a huge proponent of Pair Programming.  I'm not talking about height (though he is incredibly tall).  He made a point to say, "I will say a few enthusiastic words in favor of pair programming and then I will drop the subject."  But then he went on to mention it a dozen more times.  We started counting when our CTO took note that he'd brought it up the required 6 times to internalize the idea.  The point, in short, is that after enough a raving about the subject, I stopped mentally blocking the possibility that it has merit in my world.  I believe I am not the only one.  ...and now these questions.

If every two weeks, a person worked with a different partner to accomplish their goals, would the knowledge of each osmotically transfer to the other?  Would that information continue to travel through the whole group?  Would the team as a whole grow more quickly?  Would their progress slow or increase?  Would the cost of sharing a keyboard repay in both quality and efficiency?

When I have a question about technology, the capabilities and cost of implementing, I do a controlled experiment.  I'll research a little, try a small scale implementation and evaluate my results.  I'll report the results of our small scale pair programming experiments.

3/10/2006 1:42:15 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback
Tuesday, March 07, 2006

Its a good thing I wrote this.  Of all the things I am good at, taking my own advice is not one of them.  I do practice what I preach, most of the time.  However, when the apple cart topples over, I tend to forget technique, philosophy and adherence to a plan in favor of intense-crisis-response.  I think this is the caveat to my Principles For Success.  When the shit hits the fan, get yourself a mop.

My apple cart toppled over today.  Perhaps the light shining in my eyes blinded me, perhaps I mis-stepped right on the wrong director's toes.  Perhaps I was the subject of a well thought out experiment to test the outcome of a highly likely confrontation and failed to execute according to desired behavior.  Regardless, its behind me.   Now I am tasked with trying to figure out exactly what happened, why, and howto avoid it in the future.

"It always looks impossible right before you succeed."  I wrote that just a few days ago yet it sounds almost prophetic and entirely rediculous.  However, it is exactly what I needed to hear right now. 

 

3/7/2006 9:19:31 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback

Windows Server 2003 compatible Management Tools for SQL Express!

Note to MicroSoft, "Thank you gentlemen!"

I have struggled with this situation for a couple of years now.  My development team uses Windows Server 2003 Web Edition on which to develop our applications.  The primary reason is that we deploy to that environment and it helps to enhance confidence that there won't be platform incompatibilities when we move from our desktop to the deployment environment.  Our workstations are configured, essentially, just like production servers.  We almost never have issues related to operating system, installed features, etc, when going from one environment to the other.

However, I could not locally install development editions of SQL Server.  In fact, one cannot even install the Enterprise Management Tools for SQL Server on Web Edition.  That sucked!  Until now, this has been an obstacle that results in using Oracle for projects where SQL server would be easier and, arguably, better.  I even tried Oracle XE (personal edition) for prototyping.  The footprint for that app is rather large and it reaches its limits very quickly.  The need was met, however, and I never even bothered to evaluate SQL Server for that solution.  I didn't have time to create a Virtual Machine and try to develop there.  Besides that, a VM wouldn't satisfy my needs.  Oracle XE, however, is rather buggy.  The web based interface messes up every now and then.  Data goes to the wrong place.  Weirrd stuff...   I think I would have returned to mySQL if it weren't for:

http://www.microsoft.com/downloads/details.aspx?familyid=82afbd59-57a4-455e-a2d6-1d4c98d40f6e&displaylang=en

thanks again.  It works GREAT  pretty OK!

When I use the gui to add rows to existing table and click "execute", it refreshes with no effect, no error and, most importantly, no insert.  When I open the sql pane and write my insert statement, it inserts successfully. 

3/7/2006 6:33:52 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback
Thursday, March 02, 2006

A perfect analogy for success, as "life the experience", is "life the function".  In order to have success, you must have vision and faith.  Without one, the other is no good.  You have to know what you have faith in and you have to have faith in what you envision as your objective.  Vision is air and faith is water.  If you are both unable to breathe and dehydrated, there is no sense in getting a drink until you can get a breath.  Without either, however, you die.  Once you have these, you are merely able to sustain life but there are infinite other things that contribute to the continuation of life.  Happily, most of these just happen without your intervention.

Once you have a vision of what you want to do and faith that you will accomplish these things, there is another component required.  It is the food of our analogy.  You must have unshakable determination.  As there will always be set-backs and intermediate failure, you have to take action toward your vision ferociously and without hesitation or doubt.  On occasion, its alright if your faith falters slightly, so long as you understand that its temporary and recognize the need for a break or some counseling.  A friend can be good counsel, a sibling better but a spouse is your best counsel (If none of these are effective, there's nothing wrong with trained counseling but find someone supportive rather then diagnostic).  I think that may be why so many ambitious people really overcome their obstacles after they are married.  I read a book once, "Think and Grow Rich" - by Napoleon Hill, that made the inference that men spend too much energy chasing women to reach their potential before their early middle age.  There's probably some truth to that.  There's definitely a lot more to it as well.

Once you have the basic needs for success covered, massive action will carry you to your destination.  This principle I learned in the first half of an Anthony Robbins book.  I say first half because I never finished it.  I wasn't determined to finish that book and quickly got what I was looking for from the book.  Massive action is doing something that commits you to your objective and continuing to do things that commit you to your action.  There is a slight difference between this and burning bridges.  You shouldn't burn bridges, sometimes you need that bridge to get something you left behind.  Now and again I have done things to intentionally, or unintentionally, burn bridges.  Once or twice, I found myself rebuilding those bridges.  Still, the action I took forced me to continue to pursue my vision.  Sometimes, when you haven't built up quite enough faith in yourself, a radical action will have a snowball effect. 

If all these things are present, it is healthy to have patience and open-mindedness.  These are more for peace of mind while driving toward your destination  then they are for getting there.  You should enjoy the road traveled rather then live entirely for tomorrow.  During the journey, there will be times when it appears you aren't going to accomplish your goals.  You may begin to doubt the practicality of your vision.  People may call you a dreamer.  This is a good sign!  It may mean you are about to reach the summit of your climb.  It always gets infinitely harder before the release of accomplishment arrives. It always looks impossible right before you succeed.  A very short time ago, less then a month, I seriously doubted some of my visions of what I thought my perfect life would be.  Some facets of my dream were not materializing and I feared my vision was unrealistic. I began to consider revising my vision.  This is actually a healthy thing to do.  People change, so do dreams, values and how a person measures success.  Success is, of course, much more then financial success.  That's just a tiny part of it.  After I evaluated my vision, I decided it was still aligned with my principles and I could validated aspects against examples of people around me as well as some people I idolize.  It was last night that I looked around, desperately missing my two year old whose been gone for only four days, and realized that some of what I had doubted would happen was happening while I worried.  I looked around and saw my perfect life.  This time, instead of just a vision in my head, it was my real eyes taking in the scene.  To think I'd almost given up...  Robert Pirsig, in "Zen and the Art of Motorcycle Maintenance", said "It is a puzzling thing. The truth knocks on the door and you say, 'Go away, I'm looking for the truth,' and so it goes away."  The same thing can happen with success.  You spend your whole life trying to reach your heart's desire and then get cold feet and run away saying, "I'll never do it, never."

I'm not sure how profound any of this is but it occurred to me how simple the equation really is.  However, unlike Life the Function, it ain't innate.  You have to create vision, faith and determination and use them to fuel action and then you're done.  But no one ever told me this.  No one ever said, "hey, here's how you get ahead."  They said things like, "make sure you have a backup plan, " and ,"take baby steps."  Those never really helped.  I think that's the philosophy of: "the less you hope for, the less disappointment you'll have."  I don't subscribe to that one. 

One key thing to remember:  If you are looking for advice on success, ask someone you view as successful.  Don't take advice from aunt Lucy, sweet as she is.  Respect her opinion but listen to someone who did what you want to do.  And listen to your own heart and instinct.  That being said, you'll have to decide whether to listen to me, or not.

3/2/2006 1:37:30 PM (GMT Standard Time, UTC+00:00)  #    Comments [0]  |  Trackback

Theme design by Jelle Druyts

Pick a theme: