Recently a new director of my department came in and expressed his wish that we become a "center of excellence". I expected that since he is my first boss who actually has a programming background that there would be some description of this. However, it was left at that.

As I reflected on this over the last few days, I am coming up empty on what a CoE actually means beyond just "being effective" at delivering the product. Here are the main items I am struggling with:

Is this just a term that is thrown around by management types?

What qualities make a group of software developers and testers excellent?

A "Center of Excellence" is a chewy & delicious centre of coders, in the middle of a crunchy management candy. ;)
–
FrustratedWithFormsDesignerJun 3 '11 at 14:56

8

Have you asked him? I mean... the description may not be there yet, but I'd definitely ask him what he wants to see in developers and testers to call the department a centre of excellence. Otherwise you are just stabbing in the dark with little chance of succes and a huge chance of frustration.
–
Marjan VenemaJun 3 '11 at 15:29

@Marjan, I haven't asked him as he is a few levels up and I don't have a lot of face time (and haven't had any since). Be sure that I will the next time. I just would like to inform myself from trusted third-party sources first :)
–
RandyJun 3 '11 at 17:16

Thumbs up for that. Always good to come prepared with what you think a centre of excellence means...
–
Marjan VenemaJun 3 '11 at 17:18

6 Answers
6

Yes this is just a term that is thrown around by management types but if you strip away the management language what he's saying is that he wants a department that is seen as using and embodying industry best practices in a way that others aspire to and is doing so to deliver great solutions people like.

(This last bit is important - if you're not actually delivering it doesn't matter how great everything else is and your manager won't be around long).

The complexity comes in two main ways:

1) Does he want this because he understands that it's the right way to develop software and that this is how you produce great products, or does he want it because he wants to be able to brag about it?

2) Will he accept the up front cost (time, money, credibility and risk) that comes with implementing best practice? It's fine to say "let's go agile" but he's laying his reputation on the line that it will improve things and is going to have to spend a lot of time selling it into the organisation. Almost always the benefits are long term, the costs are short term and that's the tough bit. Ultimately is he really serious about it?

In terms of what would it look like, well, that depends what you're doing but you need to be thinking in terms of what your development and project management processes are, what tools you're using, what kit people have and so on. The Joel Test is always a good place to start and in particular I'd want to see a really solid version control process, really good bug tracking and really good build processes.

I'd also look at whether agile methodologies are right for you (SCRUM in particular), to what extent automated testing could help (without starting a religious war there are differing beliefs about the point at which the complexity of the tests outweighs the benefits they provide) whether you've got the necessary tools and kit to do the job. Generally I'd suggest that you want tools to be on the leading but not bleeding edge. It's worth stressing that this isn't about having toys, it's about giving everyone in the team the tools to be as productive as possible for as much of the working day as possible. The most obvious example is bad PCs - is it really excellent to pay developers to watch a cursor while their project takes 5 minutes to build when they build it half a dozen times a day?

A few other things that are probably going to be visible in a centre of excellence: I'd suggest a software centre of excellence has likely got a pretty good training programme - maybe not formal courses but certainly book budgets, study time, mentoring and the like.

And I'd suggest that it's probably also doing a small amount (at least) of R&D. By that I don't mean completely blue sky stuff, but giving the developers room to try new things out and evaluate new tools and languages without the continual pressure of delivery to the client. That's how you move forward and stay good next year, the year after and so on.

How can you measure it? Ah, the age old question. Ultimately measuring software development is hard, if not impossible and measuring excellence in software development is similarly hard.

The only thing I can really suggest that I think would be useful that is widely adopted by a lot of companies is customer and staff satisfaction. It's an indirect measurement but my take would be that if you're not excellent, it's unlikely that you'd be getting really great levels of customer satisfaction and really great levels of staff satisfaction.

My problem with buzzwords is that they all too often seem intended to be an effective replacement for actual thought regarding the thing they represent. I do try not to judge too harshly when I run into buzz-word guys though, because sometimes they're just the manager equivalent of programmer nerds, caught up in a different universe of verbage and not realizing they sound silly to the rest of us even though they actually do have intellectual integrity and are effective, approachable, etc...
–
Erik ReppenAug 3 '12 at 14:13

This is the problem with weasel words; they sound like they mean something... but they really don't.

From context, it sounds like your company produces a product, and that your director just wants your department to be as efficient and effective as possible. IME, it means that they intend to do one or all of the following:

Hire new people with "strict requirements" on the hiring (usually higher degrees or certifications or industry recognition)

"Trim the fat" - get rid of peolpe that they think are not producing

Inject money into the department for tools/processes/people/training

So, to directly anwer your questions:

yes

I don't have a solid answer for this. There's many metrics that can be used to quantify awesomeness.

In answer of your point number 1:
The answer is definitely Yes, it's a term that is like by experienced Bullshit Bingo players. That doesn't mean that the term is meaningless, though.

Let's move on to number 2:
Taken from Wikipedia: Center of Excellence: a formally appointed, and informally accepted, body of knowledge and experience on the subject area.
Lets forget about formally appointed and informally accepted, and focus on the body of knowledge and experience. I would see knowledge as theoretical background, end experience as something that comes from practical application. In order to achieve excellence, you need both. Aside from those (quite obvious) qualities, I think that a third one is essential for achieving excellence: The ability to question yourself, to reflect on what you are doing and seeking ways to improve.
Knowledge you learn as a student, but you need to constantly work on it, keep up with latest developments etc. Experience you gather be experience, that one is nearly unavoidable. The most tricky part from an management point of view is to create a culture of reflection and self improvement (good luck to your boss with that one ;-)

As for your question number 3:
I think that you can't. I am talking about more than just bringing projects to success here (which is already difficult to measure, among other things because of a tendency to declare even the most botched up project a success because it looks nicer in the PowerPoint presentation). True excellence comes from the attitude off all members of a team to give their best, to improve themselves, their tools, their processes etc. Your best shot is to find a way to measure the effectiveness of some predefined continuous improvement process

The first person that comes to mind when I think about "Software Center of Excellence" is Uncle Bob Martin

Uncle Martin is a long time advocate for excellence in software development in the form known as Software Craftsmanship. As wikipedia described it

Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability.

Listen to him on the following podcast as he explains what Software Craftsmanship is:

Sounds to me like he just saying he wants to have a culture of quality over quantity, then again he could just be talking out his @ss. As programmers i think we have a tendency to over think what people say. At least I know that I do. As far as how he said, its just corporate speak but don't over think it. As others have said, ask him.