Monthly Archives: November 2012

Another post-Agile methodology

Following on from my previous blog about Programmer Anarchy, I was doing some more research into post-Agile concepts and came across a new methodology called “Programming, Motherfucker” by Zed A. Shaw. Here is a link to his site.

Zed’s methodology is a new way of programming which focuses on pure coding as the main form of development, and rejects the utility of most management roles in the same way that “Programmer Anarchy” does, but does include space in the team for Management, Asshole (which I had also concluded was the primary weakness of Programmer Anarchy).

The “Programming, Motherfucker” philosophy solves problems, tests its code and completes tasks on time and under budget all using the same methodology: “Programming, Motherfucker”. At the same time “Management, Asshole” takes responsibility for tasks like finding out what client wants by asking them, providing the programmers with the right tools to code and then feeding back to the development team when the client is happy or not with the product.

In the words of Zed:

It’s awesome because it does the one thing that actually gets software up and running.

Makes sense to me. If you think so too, or want to learn more about implementing this post-agile methodology in your office, visit Zed’s site (and maybe even buy a t-shirt).

What is Programmer Anarchy and does it have a future?

A developer I know recently told me that he wasn’t interested in any new opportunities in the short term because his team were about to adopt Fred George’s post-agile concept of  Programmer Anarchy. Having piqued my interest, I started to explore and thought I would share my findings.

From what I’ve found I think he’s a bit mad, but he thinks it’s a good idea and at least 2 major UK companies are using it, so there must be something to it.

* Frequent visitors to this blog will notice that I use the term “Programmer” here a lot, as opposed to the usual “Developer” – that’s simply because Fred George uses that term, and he probably uses it because he’s American.

WHAT IS this Programmer Anarchy?For those of you who don’t have their ear pinned to the techie ground, Programmer Anarchy is a concept that has been around for about the last year, is considered “post-Agile”, has so far been evangelised by Fred George and says that software development is more productive when programmers are “self organised”.

So Programmer Anarchy is…

  • At the start of the day the programmers choose their own work during daily stand-up meetings
  • There are no PMs, Iteration Managers, BAs, QAs / testers or “managers of programmers” – all the normal rules of managing software development in a professional environment are gone. This is on the basis that formality and rules are constraining to creativity and productivity
  • It runs on the concept that with no managers to give power to their programmers to go ahead and develop (managers “empowering” their teams), programmers go ahead and take total responsibility for the success of each project in a form of self-organised “anarchy”
  • Integral to this is the adoption of the mindset “what if you were guaranteed not to fail” and the idea that disagreement and failure is expected, and both are ultimately productive outcomes. They want programmers to lose the “fear of failure”
  • Programmers work directly with the customer, which builds more trust and understanding about how the SDLC is affecting delivery
  • And to top it off Programmer Anarchy is still Agile Manifesto compliant:
    o Individuals and interactions over processes and tools
    o Working software over comprehensive documentation
    o Customer collaboration over contract negotiation
    o Responding to change over following a plan

For more detail here is link to a presentation Fred George gave, and a link to the slides.

What has Fred George done with it?

Fred George’s experience of Programmer Anarchy has been at an internet advising company called “Forward” where they got “40 geeks together” and instituted the new methodology. They work for a number of high profile clients, including “Search” a big energy company. And they report not only happy programmers but also some impressive statistics:

So this “programmer’s Nirvana” is going to be the next big thing then?

I don’t think so. I think it’s a great idea, but ultimately I can’t see it being a game-changer.

Agile is a big tent concept that allows lots of different implementations under the same name and has been widely adopted for different reasons. On the one hand it’s a good PR tool that breaks down the wall between producer and user, and on the other hand it improves productivity when correctly implemented. I also don’t think it’s any co-incidence that the popularity of Agile really picked up at the same time that the big tech reliant companies started to make their offshoring models work successfully. Paired programming can produce higher quality code when people work collaboratively, but it takes up two developers’ time and that can be hard for some projects to justify.

Agile is implemented in a wide variety of ways, from a kind of religious dogma, to a model that is fairly close to waterfall but with stand-ups and scrum masters through to the “Thoughtworks approved” approach. One thing I have found as a recruiter is that it takes a team of very high quality developers to make a truly Agile methodology work successfully. I know a team at Credit Suisse that have successfully implemented something fairly close to this (a team of 20 developers, one BA and one PM) and they took a long time to recruit the team because their entry criteria was so high. You don’t just need a good programmer, you need one with good communication skills, one that understands the business enough to work with it productively and one that is savvy enough about why tactical and strategic decisions are made.

And so, I suspect, it is with Programmer Anarchy. Fred George’s experience of Programmer Anarchy was probably so positive because he was working in a team of high performance programmers, who, like him, could cope with the demands of self-organized development. The advantage of Waterfall and the less purist versions of Agile is that they can accommodate lower performance team members and still be productive. Take the example of a tester, or a 3rd line support analyst – in the main their ranks are filled with the below-par programmer. They help the process by reduce the programmers’ work load and don’t cost as much to the CFO’s bottom line. So if you get the division of labour right, you can produce the same result for less money and spend less time recruiting the team in the first place.

But I guess the real problem with Programmer Anarchy is that it takes away the central “leader” figure. Often in big projects not everyone contributing has dedicated their lives to the success or failure of this project. Programmer Anarchy presumes that everyone in the team is totally passionate about the project’s success, but in reality it’s often only a few members of a team who wholeheartedly take on the successful delivery of the project as a top priority in their lives. You find that many other members of the team prioritise their private lives more when it comes to spending time in the office, or that their minds are somewhere else when they are sitting at their desks. I wonder if Programmer Anarchy presumes everyone on the project is a natural pig and forgets about the chickens.

With a central leader figure you also get one person who has staked the next part of their career on the success of the project and they become the driving force behind it’s delivery. Programmer Anarchy presumes everyone is their own leader, but again not everyone is like that. Lots of people don’t want to take control or drive through the delivery, they just want to do a day job.

Finally I suspect that Programmer Anarchy has a tendency for “perfectionism-by-the-back-door”. On the face of it it has a kind of hacky feel, where programmers produce lots of work because they are all developing at their optimum rate. In practice I suspect there’s a bit of a bun fight for the best bits of work, with the least interesting bits going to the least outspoken members of the team and without a central “leader” figure no-one to enforce tight deadlines. And who organizes the stand-ups in the first place? In an environment where formal power has been removed, anyone with some measure of control over the process will start to exert their power. With a central leader there is someone who divides up work and ensure that deadlines are hit.

I also bet “Programmer Anarchy” is exhausting as 100% effort is expected all of the time, when in fact normal development isn’t like that. As with any job there is an ebb and a flow at busy times and slow times. I would like to see a comparison between the productivity statistics that Fred George gives for his “Programmer Anarchy” team, and the same criteria for an Agile team who are working flat out to hit a tight deadline

I suspect that Fred George’s experience of Programmer Anarchy was successful because it’s the right methodology for him, with his level of professional and commercial experience and with his independent mindset. And I think that some teams will take this up and it will work very well for them, but in general its not right for everyone.

So I don’t think we need to start learning the words to any Billy Bragg tunes just yet.

OK, so what would you do then?

I think the most powerful idea in Programmer Anarchy is the idea that programmers take personal responsibility for the success of each project, the rest of it feels to me like a mix of good intentions, some feel-good Californian vibes and a heavy dash of Marxism. I think that any kind of team will always need a division of labour, a leadership structure to organize and motivate the team and a support function to allow the core part of the team to focus on doing what they do best.

A rough guide to Polish Universities

I have been doing some digging around recently into which Polish Universities have a reputation for turning out good Java developers, and as a rule the top 5 seem to be:

  • University of Warsaw
  • Jagiellonian University in Krakow
  • Politechnika in Wrocław
  • Gdansk
  • Poznan

In general all Polish Universities seem to have a high bar and I think that is reflected by the generally good standard of Polish developers in the UK.

Most cities seem to have a University and a Politechnika, which are divided on the same lines as the UK – the former providing more theoretical focused courses and the later more technical ones. Saying that the Politechnikas have a much, much better reputation than the British Polytechnics, and often the two institutions vie for the top place in that city. So for instance the Politechnika in Wrocław has a better reputation than the University of Wrocław. Politechnika tend to run courses that are more “electrical engineering” based and will have resources like micro processor labs onsite.

The top university in Poland is the University of Warsaw. Its got a reputation for teaching its students core computer science concepts and quite a lot of its students go on to do a PhD in algorithms or the JVM or similar. During high school students take Olympiad exams and the highest scoring students get to choose which University they attend, and many will choose the University Warsaw, with those who don’t opting for another top uni because it is closer to home. Students at the University of Warsaw also tend to score consistently well in global competitions like TopCoder and IBM’s ACM-ICPC, often beating the USA’s prestigious MIT. This institution is not to be confused with the neighbouring “Cardinal Stefan Wyszyński University”, which seems to be the “Oxford Brookes” of Warsaw – a good university in its own right, but not at the prestigious level of the city’s main institution.

For Gdansk and Poznan there is apparently not much difference between the Universities and the Politechnika – each have good reputations. I also don’t know much about the Jagiellonian in Krakow, other than it very prestigious and many Olympiad winners also choose to attend.

On an aside, it is interesting to note that there is no major Polish tech company. Most countries today where computer programming is a strong industry tends to have at least one global IT corporation but Poland doesn’t. I suppose that’s because for the last 20 years Polish programmers have tended to leave Poland to build their career in countries like the UK or USA in exchange for higher salaries, a higher standard of living and a more international working environment. Today Poland is catching up on all 3 of those factors, which I imagine will steadily work to stop the “brain drain” and we should see a major Polish tech company appear as that happens. Putting my money on the table, I am going to predict one appearing in the next 5 years.

Malaika Arora and the morning after…

During last night’s Diwali party I was introduced to the concept of the Item Girl and Malaika Arora:

For the un-initiated an “Item Girl” is a hot girl who comes on screeen during a slow part of a Bollywood film to wake the boys up – undoubtedly dragged there by their wives, girlfriends, mistresses etc. From what I can tell the Item Girl has nothing to do with the storyline what-so-ever, she is simply there because she is hot and can wiggle. A fantastic concept I think should be introduced to the western movie genre asap. He is another picture of Malaika in situ:

To see Malaika in her full glory click here.

Otherwise I think its fair to say that my Diwali experience last night was not exactly traditional – we only had 2 Dias – however we did have a very good time. We had some singing (starting with “Bipasha Basu” and then we had “Amay Rakhte Jodi” and “Tumi Kobe Ashibe” by Atul Prashad Sen) and then things went Bollywood-crazy. All in all quite a night! Thank you.

CV tip: what to include in the technologies list

It’s just occurred to me that a lot of java developers get the technologies list part of their CVs all wrong.

In each description of the jobs they have had they seem to want to tell their potential employer what all of the technologies their team was using… what’s the point of that? Rather than telling them what you are good at, all you’ve done is invite an interviewer to ask you questions about technologies that you don’t know much about. It’s much better to simply list the technologies that you are skilled at. And I think a good rule of thumb is, if you wouldn’t rate yourself as a 7 or above on a skill, you shouldn’t include it in a job description – that way your CV is giving a true representation of what you are good at rather than making you look like you’ve got an ego problem. If it’s an interesting technology that you have some exposure to, it’s much better to put it in your Technical Skills box at the start of your CV. In this case, less really is more.

Less is more

Take this technologies list I found in an old CV for a 3 month contract:

Java 6, Flex 4, Parsley 2.2,  Spring Framework 3, Spring Security, Spring-Flex, Hibernate 3.5 (JPA), Weblogic 10, Tomcat 6, Oracle 10g, SUSE Linux, Maven, Nexus, Team City, SVN (Subclipse).  LDAP security integration (Spring-LDAP), Reuters IDN-SELECTFEED (RFA), Fidessa (live streaming), Cairngorm Granite ActionScript generation (GAS), Ehcache, BlazeDS, Dozer, Apache utils (commons, math), integration with Oracle Coherence caches, Web Services, remote databases (SQL Server, Sybase, DB2), data streams.  Fully automated unit and integration testing using TeamCity, Spring TestContext Framework, JUnit, Mockito, HSQLDB.

I mean, really??? Really?? In 3 months? Pull the other one. All this guy is doing is setting himself up for some tough interview questions on technologies that he’s only got a high level understanding of.

Happy Diwali!

Happy Diwali to all those who are celebrating today! I am off to a Diwali party tonight – my first ever – so I am looking forward to finding what it is all about.

 

Impounded Lamborghini Aventador

This yellow Lamborghini Aventador was sitting outside the Met Police station this morning. They have been displaying all the cars they are impounding for the past year and I think this is the nicest one so far:

Bad / funny excuses people make up to go to interviews

I seem to have spoken to a lot of hiring managers recently who are having a bit of a time with it with members of their teams taking time off work for spurious reasons… naturally as a recruiter I sympathise and appreciate that any excuse is better than no excuse, but some really seem to take the biscuit!

Dental / GP / Hospital appointments
I’ve just had my front door kicked off its hinges
Working From Home
Amazon Delivery
Someone stole the water pipes.
Diarrhoea / last minute illness
A tragedy in the family that is so terrible its too painful to discuss any details
My train is stuck in a tunnel and I have no signal
I fell asleep / my alarm didn’t go off
I woke up feeling confused
My car broke down
My child is ill
My wife has a headache
I had a particularly bad curry last night
I normally use wash n go but today I had to use shampoo and conditioner separately so it took longer to shower this morning so I’m late.
I was abducted by the carebears.
I’m locked in my house
I was attacked last night with a machete.
UPDATE: My dog’s tail got caught in the shredder and I had to take him to the vet

Image

November

How can you tell if you are working with a good recruiter?

I’m going to pretty heavily caveat this list because I think that different skills are required for recruiters to be successful in different markets. Its also quite common for recruiters to specialise in either permanent positions or contract positions, and most recruiters will tell you that there is a big difference between the types of personality that do well in one compared to the other. Furthermore I’d say it takes a different set of skills to be successful in a growing market (eg 2003 – 2007) versus a bad a market (2010 to now).

However I think as a general rule of thumb I would look for the following factors in a recruiter I was considering working with.

A good recruiter should:

  • be a specialist in something (development for financial markets for instance or high frequency trading for instance)
  • display a knowledge for what is going on in their market (who is currently hiring, what companies are good to work for, what sort of salaries are being offered at the moment)
  • be sincere. You’ve got to be able to trust this person
  • be able to give straight answers to direct questions. Try asking a few, see what happens.
  • be happy to tell you about what sort of clients they work with
  • have thought about why you might be interested in the job they are calling to tell you about and have a broad understanding of what the job is and why the company are looking for to fill it
  • sound like they enjoy their job, or at least like their job. Surprisingly recruiters who are unhappy with their jobs are not going to do a very good job at representing you
  • be reasonably attentive / a good communicator. How long does it take to get back to you answer phone message or email? Another way of putting this is what signs are they giving to show you that you are being treated like a priority
  • be accessible. Calling on a withheld number every time and never being there when you call (no-one is that busy) is bad sign, but then you knew that already
  • push back on you sometimes and tell you when you are being unrealistic about what you can expect to find. If a recruiter is a push over with you – just imagine what they will be like with their client when it comes to negotiating your financial package!
  • make sure you feel well prepared for an interview they secure for you and have done some investigation to make sure you are preparing for the right things
  • take an interest in meeting you in person.
  • be professional in the way they work with you. I mean like acting in the sort of way that means you might actually want to work with them again in the future
  • question you about the extent of your Java / technical skills and show some kind of understanding of what programming in a professional SDLC is all about.

To this I would add:

  • I don’t think choosing to work with a junior consultant is by any means a bad choice. If you have been contacted by a junior consultant I would suggest you think about whether you feel you can trust them and what clients their company works with. Junior consultants can be much better in some areas than more experienced consultants (enthusiasm, drive, accessibility and honesty about what is actually going on during the recruitment process for example). On the other hand there is likely to be another, more senior recruiter acting as a conduit between you and the client, so you might not get everything first hand. Its also worth bearing in mind that the more experienced a consultant is, the more they will know how to effectively handle unexpected situations.