Skip to main content

Qualifications on IT projects. Random thoughts

Projects exceed their estimates both in cost and time. Why? Bad estimation would be an initial thought. If you know your estimates will be off by a wide margin is it possible to minimize the range? Common practice dictates to get better estimates which means get the problem broken down to smaller measurable units, estimate each of them, aggregate results and add a magic number to the total estimate. What if instead of trying to get more accurate estimates we focused on getting more predictable work outcomes?

What are the common causes of estimation failure:
  • Difficult problem to solve / Too big problem to solve
  • Problems in comunication
  • Late detection of inconsistencies
  • Underqualified staff
  • Unknown.
I'd wager that having underqualified staff is perhaps the most underestimated cause of projects going the way of the dodo. If a problem is too complicated why tackle it with 30 interns and just one senior developer? If it is not complicated but big enough why try to dumb it down and feed it to newbies? I suspect this kind of projects don't follow DRY principles (don't repeat yourself). Even if the problem really is big enough I wouldn't try to solve it completely at the same time but in an iterative schedule with little increments. Such projects probably yield results faster with a smaller team of just a few highly qualified engineers and perhaps just an intern or two.

Problems in comunication means also that the team is lacking skills, not technical ones but people skills. Once again having lots of newbies will bring a project to it's knees just trying to understand the problem domain, software methodologies and practices, tooling and team inner workings.

Late detection of any issue is perhaps an extension of problems in comunications but there are cases where the hairy stuff really hides. It takes a really good analyst, designer or any other role to be filled in order to find this kind of problems. Which makes my point valid again, you need people who can look at something from various angles, playing various roles and detect any anomaly as fast as possible. It may not be him who solves the problem but first detection is always criticaly timed. Either it is found when there are lots of options to choose from or when there is little that can be done on a reasonable time.

As for unknowns perhaps you are already seeing where I'm going to. Yes, qualified staff is the only real choice. An unknown means that maybe there is no real solution now, but they just may be able to create one from scratch.

Now, the point where I begin to wonder is: what does it mean to be qualified? It does not mean to have a masters degree or PhD in computer science, even a bachellors degree is not what I mean. I belive being qualified to fill a role means being able to tackle the challenges required by that role, known and unkwnown. Who is able to do that? The ones that are good thinking on their feet. The ones that like the role and keep updating themselves, finding new techniques, tools and not sitting on their ivory towers regurgitating whatever was cannon knowledge 10 years ago.

I really don't have a clear conclussion to this train of thought but I fear that software houses here in my country are not striving to have more cappable engineers but instead they are contempt with just more 'engineers'. I will confess that I have not read 'The mithical man month' but it seems that neither did them and they haven't even heard about it yet.

 Disclaimer: I'm no SCRUM expert nor project manager, this are my views and attempts to get this problem fixed. Perhaps I am  reinventing the wheel but this is my take on this.

 Some afterthoughts.

Training does not equate to capability

Projects need cost reduction.

I say: bite the bullet. Raise quality engineers to decrease project risks and scheduling blowups.

Popular Posts

Logffillingitis

I'm not against of leaving a trace log of everything that happens on a project what I'm completely against is filling documents for the sake of filling documents. Some software houses that are on the CMMI trail insist that in order to keep or to re validate their current level they need all their artifacts in order but what is missing from that picture is that sometimes it becomes quite a time waster just filling a 5 page word document or an spreadsheet which is just not adequate for the task needed. Perhaps those artifacts cover required aspects at a high degree but they stop being usable after a while either by being hard to fill on a quick and easy manner by someone with required skills and knowledge or they completely miss the target audience of the artifact. Other possibility is that each artifact needs to be reworked every few days apart to get some kind of report or to get current project status and those tasks are currently done by a human instead of being automated.

Are we truly engineers? or just a bunch of hacks...

I've found some things that I simply refuse to work without. Public, Centralized requirements visible to all parties involved. I is ridiculous that we still don't have such repository of information available,  there is not a sane way to assign an identifier to the requirements. Then we go with the 'it is all on Microsoft Office documents' hell which are not kept up to date and which prompts my next entry. Version control. When we arrived here quite a lot of groups were working on windows shared folders... now it is a combination of tools but heck at least there is now version control. Controlled environments and infrastructure. Boy... did I tell you that we are using APIs and tools that are out of support? Continuous deployment. First time here, to assemble a deliverable artifact took 1-2 human days... when it should have been 20 minutes of machine time. And it took 1 week to install said artifact on a previously working environment. And some other things that

Job interviews

So after my sabatic period I started to go to different job interviews (most of them thanks to my fellow colleages whom I can't thank enough) and after most of them I feel a little weird. Everyone tries to get the best people by every means possible but then somethin is quite not right. Maybe they ask wrong questions, ask for too much and are willing to give to little in return or just plain don't know what they want or what they need. Our field is filled with lots of buzzwords and it is obvious that some people manage to get jobs only by putting them on their résumé. Then there are some places where there is a bigger filter and filters out some of the boasters. But still it is a question of what do they really need and what questions are needed to weed out those that do not cover minimal aspects required by the job. Don't get me wrong, it is really hard to identify good developers on an interview. It seems that almost no one knows what to ask in order to get insights abo