Posted on 8 February 2007 under
General,
How to get promoted,
Management
This is one of those chicken and egg problems. You are a nerd working on a team and you think that you’d all do well if there was someone responsible for the architecture (or design or builds or tests or…). In fact, you think that you are the perfect candidate. There isn’t a job opening. Nobody has announced the need. What do you do?
Should you talk to you boss and suggest that you starting doing it? What if she says that she can see that such a role might be needed but that you don’t have any experience? What if she says that your teammate Max would be better at the job and calls him into her office?
As you might guess I think that the best thing to do is to starting doing the job on the side. It will probably mean extra work. It will probably mean needing to convince co-workers that your ideas are worth it. However, the best way to show that you can do something and that its needed is to do it. Be careful not to be sneaky and be sure that you aren’t stepping on anyone’s toes too hard. Unless you work in a toxic environment your efforts will be appreciated and rewarded even if you aren’t successful in changing you role.
Posted on 5 December 2006 under
Management
I’ve just started leading an internal workshop on Incremental Development. In the workshop I describe and delve into the difference between orienting development vertically (by use case) versus horizontally (by software layer or service). By use case is the clear winner since it allows progress to be tracked in a user meaningful manner and encourages a smooth flow of client value.
Johanna Rothman describes the different orientations as implementation by feature and implementation by architecture. These are clearer phrases.
I think I’ll be making a few minor edits tomorrow.
Posted on 3 December 2006 under
General,
Management
Software development training courses are a waste of time, money and effort and don’t equip people to do meaningful work. Supposedly they pass on new skills and knowledge to developers. In reality training courses are about:
- padding resumes,
- allowing managers and staff feel like they can tick the “staff development” box in a yearly evaluation form,
- sucking money from companies,
- giving people a 3-5 day break from work,
- letting developers off the hook for not doing their own professional development, and
- “rewarding” developers in a low-effort (for developers and managers) way.
In my experience as both a nerd and manager of nerds I’ve never attended a training course that has taught me anything that I hadn’t already known or that I couldn’t have learned in a fraction of the time with a little bit of effort. When I’ve sent developers on courses they often admit the same thing.
Lets look at some of the things wrong with training courses:
- Training courses are aimed at the lowest common denominator - this is why they are so mind-numbingly slow, otherwise the guy in your course who can’t turn on his computer will complain and the training company will lose money.
- Training courses are often inconveniently timed - how often is the right course run? Probably not when you need it.
- Training courses are often a poor match for the actual need at hand - ever seen a course about the replacement of a Java servlet application with a PHP-based blogging tool to provide a corporate intranet? Me neither. But I have seen plenty of kitchen sink courses with lots of irrelevant junk.
- Training courses are generally expensive. ’nuff said.
- Training courses have a short retention half-life - unless you teach yourself or put into genuine practice things you learn you will forget stuff. Quickly.
Instead developers should be given time and resources (the Internet, books, self-paced learning CD’s, mentoring and guidance, access to others, etc) and a goal relevant to their upcoming work and asked to teach themselves. Does this take more effort? Sure. Is it more effective? That’s the wrong question - it will actually be effective where training courses aren’t.
We all need to stop pretending and bite the bullet. Managers should create customised training plans for developers that provide a combination of on-the-job activities, self-paced learning and guidance from existing experts. Developers should expect that they need to apply effort. Its okay to ask for help to create your training plan but its up to you to do it. You are a professional and its your career. Sitting in a room with a bunch of other bored developers really isn’t going to do the trick is it?