Doesn’t sound like you!?
Mid-March, I found myself in the position of taking on a team which was considered failing (doing amazingly clever stuff, but not delivering to time scales). Great people and coders but not measuring up to expectations. Which wouldn’t have been so bad, but I was heading out on leave for 3 weeks in a bare two weeks time.
The team over the previous three weeks had lost a key member who really wasn’t happy in post either. When asked, the incumbent team felt they were being asked to do the impossible. The environment was dated (as were some of the approaches) and the team got together once a week to say they hadn’t been able to progress things.
In the two weeks before I disappeared, I assessed what was being asked and whether it was indeed impossible (burn charts are your friends here). Having the proof, I was able to secure more resources. The team leader I was replacing was not a happy bunny, to put it mildly. I re-factored the plan with the new team members and took the lowest priority (in terms of time of delivery) out of the immediate time frame. (The team may have got enough time back to bring that back in, it has all gone that well).
I started daily stand up meetings and disappeared skiing, like you do.
Standard project management stuff… so what?
Mmm, if only things were that simple. I have brought in continuous integration and published test plans (got caught out when told things were working when they weren’t, so we have formal, shared test plans now). We have software signing mechanism across the piece too against very standard mechanisms away from a home brew solution.
I like the wider team and their approach, but it’s felt difficult to progress when the incumbent members of the team still believe it’s impossible and are openly grumbling about the changes. Emotionally it is quite draining.
I have moved the project dramatically from a best efforts part time project to a fully focused software engineering standard one.
Mostly it has worked: in fact the person paying for the project is happy with the changes – more transparent, good progress and good interlock. It’s not perfect, but every step seems to be in the right direction.
The team themselves have stated they like the framework and find they have focus and the information at their fingertips so they have control over their work load. They have flexibility and the space to deliver. The plan is reviewed often and communicated out to the wider group. Which has allowed everything to progress.
Still not finding the issue?
Java – my fundamental issue is Java.
I first picked up Java in 1996 at university and thought, OK, quirky, not as portable as promised, but if I ever need to, I have a string to my bow.
In 2005, I moved in to the Research teams in BT and was looking at Java. Eclipse and Netbeans to be honest, producing graphical maps to enable heterogeneous data types to be accurately mapped and produce the transformations between the two data types. I became the expert pretty quickly.
The great thing about it, was I was starting the objects (Java is an object orientated language) from scratch and therefore able to control the entire environment from the ground up.
I am a test driven programmer, so I build a test harness (with the tests applicable to prove the result) and then get on with it.
Only, it was never quite that simple, and I quickly progressed to using Java beans in a Tomcat environment. I am still a big fan, 65% of my website is still programmed in JSP containers. Deployment is simple, what is coded in one environment may be proven there and run any where there is a compatible server.
It has to be said, I do very little out of choice in the command line with Java.
Let me guess, you’re programming in Java this time?
Only without any of the niceties. (This was the project I was told was working and basically didn’t. I got it built (yeah, small miracle) but found in Java 1.8 it had a VERIFY.ERROR against the JVM. Great, had to re-factor against the JCE provider, there’s best part of a week there.)
I have inherited some code built on JCE running from the command line. It was written in a couple of hours – not exactly ground breaking code, but standard protocols being used in the right place. It builds, it looks great but I cannot seem to set the security provider explicitly to ensure the right libraries and bindings are used each time. Not good.
So I went back to the drawing board and instead of using JCE, I tried a JNDI interface. Which worked beautifully and very reliably but I cannot bind the objects I want to use to talk to AD 2008.
I was missing a setting in my java.security (this is what I mean about containers, none of this is documented anywhere for the project!). When that was in place, it worked. Once.
I have even done a line by line comparison of everything I have done. No changes of consequence between when it worked and when it is not.
It’s annoying and a problem and I know I have the answer in my reach. But I look blind and stupid and I am really not.
Out of the whole team, I am the one holding everything up. [Except I am not: because I have worked closely with the test and delivery teams and made absolutely sure I haven’t].
I miss Tomcat too. Everyday. When I build something in Tomcat, it just works.
Right this moment, I am going away to get my mind off the problem. I have two weeks holiday to think about anything else. Must stop thinking: C# anyone?
Have a great evening 🙂