Wednesday, September 30, 2009

Can Project Management survive Anarchy (aka Scrum or KanBan)




Anarchists are those who advocate the absence of the state, arguing that common sense would allow people to come together in agreement to form a functional society allowing for the participants to freely develop their own sense of morality, ethics or principled behavior. (via http://en.wikipedia.org/wiki/Anarchy)
Question: Can Project Management survive Anarchy (aka Scrum or KanBan)?
Short answer: A good Project Manager Can

I am (always have been) very pro-Agile, especially those who adhere to the base Agile Alliance Manifesto. (http://agilemanifesto.org/). Who wouldn’t support it? I mean really support it?
Short answer: Those who feel threatened by lack of control…

In my opinion, a GOOD project manager is a person who helps in any way to ensure business value is being provided. For those who feel some form of anarchy is needed to shake off the shackles of corporate over management, I’m with them. HOWEVER, in my experiences, those who push the most to shed the chains of corporate oppression often have their own chains in the making, something to be very wary of when supporting such a movement. The best approach is to uncover the underlying drivers and realize that at the end of the day we’re all humans and we all tend to make the same decisions as those before us (in other words, people who seek freedom of choice often try to bind others to their preconceived choice).

What is this blog post about? My on-going discomfort with where Scrum, KanBan and like movements are going, more about putting a certification business model in place than actually providing a path for improvement. I always get comfort in reading Kent Beck or Ron Jefferies posts, they seem to keep to the original goal of the Agile Manifesto where others tend to seek monetization for a recycled idea with a different sounding name.

Tuesday, September 29, 2009

I got the Wave

http://www.cnn.com/2009/TECH/09/29/google.wave.beta/index.html
http://www.pcworld.com/businesscenter/article/172822/google_invites_more_testers_to_ride_wave.html


Evolutionary more then revolutionary and I think (once I get use to it) that it will set the pace and direction for other major communication tools.  I've always felt that IM and Email are basically the same, and any way to easily track communication, continue the conversation and add to it would be GREAT! Google Wave moves in the right direction.  There's potential for some information overload...but it all comes down to how people use and adopt to it.

Monday, September 28, 2009

WOW – Twit.TV/Floss Weekly with Linus Torvalds

Floss weekly hosted by Randal Schwartz and Jono Bacon is kicking up some great shows. This week’s show is an interview with Mr. Linux - Linus Torvalds. As Jono Bacon said ‘…opinionated without being an ass..’. Not a deep insightful discussion on Linux, but a GREAT discussion with a leading software developer and some of what makes him who he is. A must listen to for anyone interested in IT.

Sunday, September 27, 2009

Alan Turing - hero

Thank you John Graham-Cumming for bringing Alan Turing's story to light and petitioning the government to do the right thing!

Friday, September 25, 2009

Kent Beck on FLOSS Weekly

For those of you who don’t know who Kent Beck is, well its time to learn: http://en.wikipedia.org/wiki/Kent_Beck. Basically he’s one of the founding fathers of the Agile movement and the person behind Extreme Programming (XP) and all that goes with it…a real IT hero.

Kent was recently featured on FLOSS Weekly a great podcast about the open source community: http://www.twit.tv/floss87. This is a must listen to show, topics range from his view on Agile, Test Driven Development (TDD) and open source…all interesting and controversial points. What really caught my attention and reenergized me was his comments about a programmers need to take responsibility and to be accountable – plain and simple, something that every developer should reflect about in regards their dealings with others. His focus was more on the soft skill arena (psychology) and how it plays into the maturing of a programmer…

Wednesday, September 23, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 6 – Wrapping up
I did not cover all the layers (not even thinking about down to the linux kernel) and did not go greatly in depth into any one of them…I just wanted to provide an overview of the layers I encountered/put-in-place in the development of a prototype that may someday become the next open source project management tool. My overall feeling is that frameworks FORCE you to code in a standard way providing FREEDOM/FLEXIBILITY to focus on the product being delivered and those corners of the code where 80% of the complexity is (which sometimes needs to be handled outside of the various framework/layers). I w as happily surprised overall with my ability to decouple and with the reduced coding required to accomplish what it is I desired to do…

Monday, September 21, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 5 – ORM
What is it? I don’t think there’s any definitive answer, but basically ORM (Object Relational Mapping) abstracts data into objects (or attempts to) – so multiple tables providing data to represent a single project is treated as a single object with in the code: project name, project tasks, project notes, etc. each stored separately in the database (RDBMS) becomes a set of related objects within the PHP code…what my hope was, was that DataMapper would provide the interface to define the data layer and then kick back a hierarchical single object (Project) that would provide methods to access the underlying related data (project notes, etc.)…well, it did make accessing and manipulating the data easier – the top-down object hope was not there (could be my misunderstanding of ORM OR the difficulty in providing it). Once again following a framework forced me to setup the various data tables in a standard format and it did handle all of the underlying SQL/DB requirements and probably reduced my code by half (at least). Without having a LARGE database, its difficult for me to say what the performance impact is…I would assume there’s some impact…but I’ll leave that to others to provide the insight on…next, wrapping up

Saturday, September 19, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 4.5 – the PHP Framework
Before moving on to the data layer, I first need to discuss the PHP Framework. I’ve moved from no-frameworks to frameworks for everything – WHY? Simple, it forces you to code to specific standards making the code cleaner and more maintainable. Frameworks also reduce the amount of code that has to be done – the less coding the fewer bugs. The first real framework I’ve used since web coding was CodeIgniter (http://codeigniter.com/) – about a year ago I decided to try a MVC framework (Model/View/Control) and did enough research to determine that CodeIgniter was stable enough and flexible enough for me…so far I’ve been very impressed with it and the associated community (a very important thing to look for – without support the best framework is useless). SO, to move on with the story, without thinking twice I used CodeIgniter for the PHP framework, the one dissatisfaction I had was the data model layer, I wanted something more than creating SQL code and returning array bound data…I wanted ORM (Object Relational Mapping) which I was hoping to use to reduce the amount of manipulation to set up the arrays to feed to the json encoder. It didn’t take long to find DataMapper (http://stensi.com/datamapper/) – an add on for CodeIgniter providing the ORM layer I was looking for. ..next step – ORM

Friday, September 18, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 4 – json
Json is basically a universal standard way of formatting data (http://www.json.org/) which provide some benefits over XML (still being argued somewhere)…why not XML? One reason was that jQuery directly handled json and another was that everyone is talking about json….simple as that. In Part 3 I discussed how I started the json approach using static json data pages, the next step was to move from static to database/code provided data. Creating a json output in php is relatively easy (depending on the PHP release that you are on) – there’s a simple function json_encode(data) where data is typically a series of arrays/sub-arrays containing the data you want encoded. So, json encoding was the easy part, the difficult part was getting the data in the the array/sub-array/sub-sub-array layout that you wanted…next step, the data layer.

Wednesday, September 16, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 3 – decoupling
To keep the layers decoupled as much as possible, I decided not to have any PHP code directly populate data within the page ANYWHERE! No matter how easy it is, the complexity and maintainability is impacted when you do this – you end up with HTML/jQuery/PHP code all over the place in the same code file…some people use Smarty or like frameworks, but all they do is basically add another layer without reducing the coupling. SO, I decided to use json…I started with some static json data pages and used jQuery (THE BEST) to read the data, parse and populate the page, overall a very pleasant experience compared to what I thought it would be. The toughest part was properly formatting json, once done I was satisfied that for the most part the presentation layer to the application layer were decoupled…next step, json

Monday, September 14, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 2 – there’s no end like a front end
I wanted to focus a bit on the user interface, my prior attempts using trees and such were ok, but just ok. I knew I wanted to use base html/jquery (no Flash), so I started at jquery.com, looked at some of the addons and took a swing: http://www.itprojectguide.org/projectmatrix/ci171/matrix. I only focused on what I considered the main screen, the project page and overall I think it’s reasonably user friendly (something that might change once I add in all the base project related fields). The layout is basic, using tabs for projects and sliding panels for project details…seems like a simple/clean design. The biggest challenge was uniquely identifying fields by project, so from tab to tab the changing of a ‘start date’ field for instance would only be updated for that specific project. As a new project is added, a new tab created with the project identified fields…as always jquery made most of the work easy and coding amount/time small….next step, decoupling

Saturday, September 12, 2009

Dr. StrangeFramework or how I learned to stop worrying and love the layers

Part 1 – the setup
I haven’t had a heads down coding position in years, however I continue to develop small websites and ‘play’ with code on side projects and hobbies. A good part of the fun is pushing myself to learn new technologies and approaches, the days of happily coding in C, C++, VB or classic ASP are long gone.

I’ve worked on two open source project management tools (info can be found here: http://itprojectguide.org/main/products/Home) the first a branch from another open source group and the second an attempt to provide a better interface and a better code base. I learned a lot from both, but was left unsatisfied, mostly due to the design, but also the cumbersome underlying code, PHP can be pretty messy if you let it. One of the things bothering me the most is the coupling between the different layers (DB to PHP to HTML) and the need to refresh pages to display updated data (loading a heavy page of about 80k to add 100 additional characters seemed a bit to much).

There are MANY options to writing code for a web site, PHP being the most popular since its probably the easiest to learn and abuse…I often hear Python/Ruby coders trash PHP all together, the way I see it, any language can be distorted, some languages make it easier than others, but it’s the developer who makes the difference, I’m more than confident that a good programmer can make clean, effective and maintainable PHP applications – as clean as Python or Ruby can be….next step, the front end

Thursday, September 10, 2009

When you plans are right, but have nothing to do with reality


I’m just starting the book ‘The Guns of August’ by Barbara Tuchman – about the planning and first month of WW I. The most interesting point so far is that the French Plan (Plan #17) took no account of actual intelligence gathered about what the Germans planned. The French basically developed a plan based on current theory and molded what the Germans would do to fit into that theory (‘no way the Germans would march through Belgium and attack out exposed flank…no way…’). Sounds familiar right? developing a plan based on some current theory, regardless of what facts about known…probably a good example that project managers encounter every day is the time required for testing – break/fix. Forget about the last 10 projects that required the same effort to QA/break-fix as what the coding took, let’s assume this time the QA/break-fix effort will only be 25% which is perfect since it will allow us to release the product in time for the big holiday season….yep, planning and execution are truly different when you refuse to take fact into consideration.

Tuesday, September 8, 2009

Seeking the just good enough?


I recently read through issue 3 of PragPub and found the article Clone Yourself (http://www.pragprog.com/magazines) – the focus was suppose to be on (I think) building a better career through following the pattern of perfect process…one section deals with the idea of not getting the best person for the position, but a person that’s just good enough given that you have the right processes in place to ensure their success (if the process is good the person can be mediocre). I’m not sure if there has been any subjective research on this matter – but I would have a difficult time agreeing to it. The author references some past experience where they got the best and they didn’t work out, I would say that perhaps the definition of best was incorrect, what do I define as the best person for a job?:
  • someone who is enthused about what they are doing (gotta love the job)
  • willing to do what it takes to get the job done
  • great communicator
  • team player, but not a compromiser
  • independent worker
  • intellectual capacity for the job (knows and/or ability to learn)

Some traits I would think disqualifies a person for a job:
  • inability to work with others – at any level
  • very narrow skill focus – unless the skill is so narrow that it requires such a narrow focus
  • to many preconceived, unshakable, predefined concepts
Overall, the idea that a person is only needed to follow a set of processes leads me to think that the job is probably not a real development position where something new is being developed, but where the job is no more involved than a data entry position from the 1970’s. No matter how hard PMI or Agile Alliance or any other group tries to define a set of steps to ensure success of a building process, they have not yet succeeded and as far as my theoretical thinking can take me, can never succeed since they would have to finitely define every potential step for every development effort that has or WILL take place…even Madame Marie on the Asbury boardwalk cannot make that assertion.

Tuesday, September 1, 2009

Another example of open source knowledge

http://www.scribd.com/doc/8545174/Whys-Poignant-Guide-to-Ruby

If there's no incentive to selling books/knowledge (talking $ here) then people who have a tendency to want to write them will find other avenues (aka the web) - this is one great example of that. Not only is this is a great into to Ruby its a great read...