• Scrum is not a silver bullet.

    So it's hard not to explain the values of scrum (process improvement, project management framework) without sounding like a snake oil salesman to management. It happens all too often that the word scrum or agile gets thrown around with little, no, or misunderstood meaning.

    One interesting misinterpretation I had used against me when arguing that the customer was taking advantage of scope and violating the simple principles of scrum's sprint framework by asking the team to take more than it had committed to. They said that I needed to be more "Agile".

    What they had interpreted "Agile" as was that I needed to do more "What the customer wants".

    I found an interesting article on some scrum misinterpretations (by no means a complete list, but some less common ones than i've seen) 

    Now, i don't totally agree with any of these things, but what WAS interesting and I do fully agree with is this statement:

    Scrum, when done properly, is wonderful.  It creates a way to learn and move forward.  When it is thought to be an answer beyond the agile project management method that it is, it can be counter-productive.  Scrum should be used appropriately and by people who understand why it works. 

    This is a pretty powerful and true statement. I've seen so many misinterpretations... like "War rooming" being used to pressure developers into hurrying up (instead of for it's collaborative benefits). Or scrum meetings being used for control-freak directors (or managers or project managers) to get all of their information in one 15minute shot to the arm (instead of a meeting FOR the team members).

    And i'd love to hear what scrum Misinterpretations YOU have faced in your organization :)

    Full story

    Comments (0)

  • Agile: Handling Security with Scrum or XP

    So as with every financial institution, we're particularly concerned about security and faced with MANY tools and processes that are in place regarding security I found myself sitting face to face with one of our consultants and being asked the question "Where does security fit into your framework? your methodology?"

    I found this an interesting question, and I answered "The team should decide" quite proudly.

    Of course, he pressed on, wanting to know my own personal opinion about the subject. To which, everyone knows, I felt 'obligated' to answer.

    Now, I don't really remember how I answered at the time, but I was just pondering it again this evening after a presentation of user stories at our local user group

    So, one possible thing to do, is make negative user stories like this:

    As a hacker i want to steal your user id so i can brute force your password.

    as a hacker i want to find out what version of operating system your server is running so i can exploit vulnerabilities in it.

    as a phisher i want to inject script into your website so i can get your password

    Ok, so that's all dandy, i have negative user stories that i want to "Implement", but how do we know to come up with these?

    Well, let's say you do a code review with a security consultant (or use a tool that scans your code). Everything it finds could be explained to your customer and the risk weighed and a story card generated.

    AND perhaps, having a code review and checking for secure coding practices is part of your Definition of "Done"?

    AND remember the real goal of xp and scrum is knowledge transfer! So the more often each member of the team works with 'secure coding practices' the more they learn and the more they know for next time.

     

    Full story

    Comments (0)

  • Agile Leadership: Accountability

    Chris Leon brings up an interesting point about being a "manager" for self managed teams.

    First of all, it got me to thinking... why do we need managers if our teams are self managed?

    Maybe we don't need them at all, maybe we just need Shepherds or Leaders. Ken Schwaber likes to call them 'prick' (or scrummaster)

    Kent Beck (Extreme Programming) calls it an agile coach

    Allistair Cockburn calls it "Coordinator", effectively a very lightweight project manager who who helps the team adhere to the principles and practices of crystal.

    Secondly, what do all of these roles have in common:

    They all protect the team from outside influences/interruptions, they guide the team as subject matter expert on agile practices and principles, they provide some of the same things a project manager would to the organizations they work in, they work for the team (not vice versa) by removing roadblocks, they act as counselor and teacher more than commander in chief.

    Lastly, how can we track such things? How do we introspect to become better leaders of self managed teams?

    Maybe we should be asking their teams.

     

    Full story

    Comments (0)

  • Jerry talks innovation

    http://certellus.blogspot.com/2008/07/technical-installment-advise-week-4345.html

     

    Full story

    Comments (0)

  • XNA Game Studio 3.0 Release

    XNA game studio 3.0 came out... and finally... it can be used with regular visual studio instead of only the express edition.

    If you want to learn game programming in a fairly easy environment, XNA is pretty cool for that (albeit i haven't touched it since 1.0 beta).

    I'll be checking it out soon and maybe let you know more!

    Full story

    Comments (0)

  • Microsoft Goes to Sun for some help

    How's this for irony... microsoft asks sun to help promote MSN search bar.

    My thought is that Microsoft is worried that Sun will go out of business and then they'll be the target of more Anti-trust laws. Sortof like how they extended a helping hand to Apple Computer a while back by investing 150 million dollars.

     

     

    Full story

    Comments (0)

  • Automation server could not create object in visual studio 2008

    I was trying to start my much procrastinated book on C++/CLI from apress in my newly installed visual studio 2008 pro. Then i ran into this error "Automation server can't create object" when trying to make any C++ project (CLR, ATL, Win32, any of them).

    So i looked around on the internet and basically the solution was to reinstall windows scripting host (WSH 5.6 or 5.7).

    Well the HUGE problem there is that I'm on windows Vista and there are no installers available from microsoft for WSH on windows vista!

    So, I had to install windows vista in upgrade mode over top of my existing windows vista. (i went from home premium to ultimate).

    I should have taken this as a hint that I need to downgrade back to windows XP, but i'm just so damn impressed with the Vista search functionality and directx 10 in games that I can't imagine going back.

     

    Full story

    Comments (0)

  • Layered and/or Tiered architecture and "When"?

    So we know technology changes.

    What do we do about it? How do we prepare for it architecturally?

    Layering software is a technique to abstract away from a particular 'thing' so that you can gain some lessened coupling (or negate it completely).

    Take for example data access. You don't want your Application's business entities (business or domain objects) coupled directly to the schema in your database or to the technology of your database.

    For example, in data access you might have code like this:

    using(SqlConnection connection = new SqlConnection(settings.ConnectString))

    {

    connection.Open();

    .....

    }

     

    You don't want this type of code directly in your customer class definition because what if you start using an Odbc database? What if you start using an XML file? What if you start using a web service?

    Layering software for me in the past simply means having a class/interface library that is shared/common between two layers of class libraries.

    For example:

    I would have BusinessEntities.dll and SqlDataAccess.dll. Well for BusinessEntities to talk to SqlDataAccess.dll i will want some 'common abstractions' between the two.

    I will call that DataAccessInterfaces.dll and I will put things in it like this:

    abstract class CustomerDataProvider{}

    or maybe

    interface ICustomerDataProvider

    {

    ICustomerData GetCustomer(string custId);

    }

    and

    interface ICustomerData

    {

    string FirstName{get;set;}

    string LastName{get;set;}

    }

     

    You're probably thinking, wow this adds a lot of architectural complexity to my project. You're right...

    So when do you do something like this?

    Well I believe in YAGNI and Simplest thing that could work... so the very first time that you need to make a change like this is the time to architectural change it. If you're working in a fairly fast paced rapidly changing environment where constant refactoring and testing is possible this can work for you.

    Now, let's talk tiers though.

    From what I've seen, tiers are really no different than layers in how you implement them (especially with things like Windows Communication Foundation and web services because you can use the same layer definitions and just add a little webservice code into them and turn your ICustomerProvider into a web service class)

    So anyhow, why do we use tiers?

    Tiers provide us scalability for one.

    If my data tier is on a seperate machine, then I can offload all that disk IO to a machine that's build especially for that (i'm thinking NAS, SAN, or other high IO capable device).

    If my application tier (web services) are on a seperate web server (or server farm) then i get the benefit of connection pooling to the database (instead of 1 connection per fat client)

    If my web server tier is on a seperate web server, then i get added security of protecting my webservice, connection strings, and enterprise data from being in the DMZ.

    Then finally my client application is on my customer's machine (web browser or thin client). This allows for a very thin install, rapid change of the user interface without being muddled with business rules (business rules would be on the application tier).

    It allows me to change business rules without impacting any presentation (so long as i've got a way to handle cross cutting concerns like validation :) but you should read elsewhere for that).

    Anyhow, food for thought...

    Please comment on how you've seen multi layered and tiered architectures used.

    Full story

    Comments (0)