360 evaluations : is it really the best way to actually become better ?

February 6th, 2010

After taking a look at the results of a collegue’s 360 evaluation, I wonder whether it is an actual way to have  people become better (and thus, make a better company).

By continually getting feedback and improving pointed weaknesses, the end result is that you get better over the time

Simple, isn’t it ? So simple that it is clearly understandable and unchallengeable. Of course it is true, and those who do not think so should just burn in hell ! Or.. shouldn’t they ?

360 evaluations are not tainted by political issues and personal preferences !

Let’s take a similar different example: politics. Theoretically, thanks to the power of voting, parties should continually get better to be (re-)elected. Hum ! Who feels like political parties focus on the real issues ? Does it have to do with the fact that real issues are unpopular and unlikely to get them re-elected ? Here is a short excerpt from Les Cowboys Fringuants – 8 secondes :

Mais l’monde oublie vite c’est pas grave
Suffit de faire un bon budget
D’parler d’santé pour que les caves
Vous réélisent l’année d’après

But 360 evaluations do not have anything to do with politics, really !

The same way parties shift their focus from the real,  unpopular issues, I believe that listening too much to 360 feedback will just make you focus on the wrong things. Either you are too X, or not enough Y.  Either you’re too concrete or too abstract. Either you have too much self-confidence, or need to higher your self-esteem. Either you do not show enough leadership, or your leadership does not leave enough room for others. Oh, and sometimes, something is both in the “strengths” and “weaknesses” columns. wao !

It truly makes me laugh when I realize that my collegue’s evaluation strengths include both :

  • “Less jokes in the messages” [understand: you got better since last 360 evaluation by reducing the amount of jokes in your messages]
  • “Great sense of humour”

Hum ! hum ! So.. what is going on exactly ? Should he continue to do jokes and develop his sense of humor, or should he stop doing so ? .. It might simply be that different people perceive things differently, so the only true way to accomplish a perfect, no-fault, 360 evaluation is to be nothing more than a moderate lemming that has no real strengths and no weaknesses. 101 guide to having a good 360 evaluation :

  • Take a few un-risky initiatives to show that you do have some leadership, but make sure you do not address the risky, unpopular issues !
  • Criticize things moderately and constructively, but make sure you only criticize things that others would criticize too.
  • …  [hint: do not address the real issues, as those are the most risky, address the popular ones)

If you have real strengths, then they usually come with their set of weaknesses ! Not everybody might be happy about them, but in my humble opinion, erasing them would definitely not make a better company in the end.

What if the problem was the unability of people to understand the situation correctly ?

All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident.
Arthur Schopenhauer
German philosopher (1788 – 1860)

So, what do we do ?

Always make sure to bring this question when you raise an issue. Even if you do not have any answer, this shows your willingness to contribute positively instead of just openly criticizing ;-)

Google Click-to-call: a smart way to increase ad revenues !

February 6th, 2010

Simple article on the new click-to-call [french] mobile ad strategy that google is pushing. Hum! interesting…

Mockito, EasyMock and jMock

January 24th, 2010

So, you’ve started to embrace the Test-Driven Development approach while doing Java Development. You’re trying to improve your tests, try to write them well and make them readable,  and you are now looking for the right mocking framework to assist you. Here are a few hints that might help you choose the right mocking framework :

  • If you are an absolute TDD-lover, think that Ruby is awesome in every aspect, that RSpec is THE WAY to go, agree with every single principle of TDD, never write a single line of untested code and believe that  sex cannot be good unless you have written a test case to explicit the conditions of success before going to bed, then jMock is the tool for you.
  • If you’re a duct-tape programmer, think that Joel Spolsky rocks, and favor pragmatism over purism, then Mockito is the right tool for you. Mockito is very similar to EasyMock but is just newer and simpler to use.
  • For everything else, there is Mastercard.

Salary policies are a JOKE

January 21st, 2010

On wages is an excellent article clearly describing why most all companies’ salary policies are a joke.

Anyone interested in wage transparency and paying value for value ?

git housekeeping tasks

December 26th, 2009

Every once in a while, it is necessary to perform a few housekeeping tasks to keep your git repository clean and efficient :

delete unused local branches

git branch -a

git branch -D unused_local_branch

delete unused remote branches

git push origin :unused_remote_branch

delete unused remote-tracking branches

If you use a shared-repository approach (several people have commit access to the same remote git repository), it will happen that someone else deletes a branch on the remote repository. Git does not automatically delete your local remote-tracking branches. To do so, it is necessary to :

git remote prune origin

clean-up unreachable commit objects

git prune

efficiently pack the repository objects

git gc –aggressive

That’s it :)

Declarative code

November 18th, 2009

While reading david’s article about JUnit’s @Theory, I realized that the power of declarative code is often underestimated. JUnit’s @Theory feature is a kind of declarative-style programming that clearly shows the benefits of this paradigm for testing. It greatly improves code maintainability by clearly separating out the assertions from the data set creational logic. It’s important to realize that not just tests can benefit from declarative-style programming, and here are a few concepts that you might be interested in :

  • The Specification pattern. This pattern can be used in a wide range of situations, from abstracting domain constraints to making complex data driven tests more readable thanks to the “outsourcing” of the test data creational logic out of the testcase.
  • Constraint Oriented Programming
  • DSLs can be used to declaratively specify what you’re interested in, rather than how you want to achieve it
  • SQL, XPath, XSLT are all declarative programming languages that focus on the intent

10 reasons pair programming is not for the masses

September 22nd, 2009

Here is a wonderful article about pair programming, written by Obie Fernandez, from Hashrocket. The article doesn’t just cover a few politically-correct, well-known principles about pair programming that everybody already knows and nobody cares about. No, he goes WAY FURTHER than that and dissects why it works at hashrocket and doesn’t in most software shops.

As a result, he covers hiring, hardware, salaries, skills, etc… really, really interesting  !

A little excerpt :

This reason is related to #5 in the sense that most software shops don’t have enough good people to take responsibility for the truckloads of work that they’re expected to do. You can’t put idiots in charge of important projects, therefore pair programming requires double the amount of “good” people as not pair programming. 

A good example of why code quality will never be objectively measurable

September 13th, 2009

I like this refactoring example a lot. As pointed out, trimming down functions to do “only one” thing is a widely known best practice, but one man’s “one thing” might be someone else’s “two things”.

So… come on with your metrics, guys! they’re probably never going to match the “WTF/min” metric of a human-being senior developer.

Convincing/evangelizing is a turn off, so what’s the key ?

September 13th, 2009

I came across this interesting article about agile evangelism (thanks to Mathieu for sharing the link).

The conclusion of the post is that if you insist too much and try to convince others that your way of doing something [in this case, agile] is superior to their way of doing the same thing, you end up being seen as a freak. So his conclusion is to let people “learn from themselves”. So, in this scenario, I guess darwinism will then help determine the best alternative, as the inferior solutions will eventually die. awesome !

Now, let’s say you have some kind of interest in the success of the projects (involved in the project, somehow)  using an “inferior” solution that you consider threatening for the project.  What are your options ? The ones I see are :

  • Debate forever in the hope that the others will rally in favor of your solution. In his article, Grant Joung seems to think it’s just making things worse, and I can understand that religious debates do not lead anywhere, as nobody is likely to rally (have you ever seen a muslim convert to Judaism just because someone made a point against  islam during a debate ??)
  • If a few others also support your solution, and depending on whether it’s worth it, you can always attempt a putch on the project and just let the unsatisfied people go away, and end up dealing with those that agree with you
  • Quit (which ends up being the same solution as Grant Joung suggests). You definitely do not want to be part of something that you know will fail

Hmm.. It looks like none of the options I see is ideal… Does anyone have a suggestion ?

Linux is not ready for the desktop

May 18th, 2009

Take look at : Why Linux is not (yet) ready for the desktop.

This is the first article I read on this subject that is actually giving strong, valid points. I totally agree!