15000 a year

Entourage snapshot

After a year of working at my current job, I have received 15,000 emails. This doesn’t include any automated ones (which I delete), spam, etc. I don’t feel like I get a lot of email, so I worked it out:

365 - (2*52) - 10 = 251 working days per annum
15000 mails / 251 days =~ 60 per day
(8 * 60) minutes per day / 60 emails = 1 every 8 minutes

I wonder if that’s a lot? That doesn’t count personal e-mail, which is in a separate system. Anyone else get lots more? I remember getting a lot more in previous jobs, but it might have been a perception thing.

Self-development Window

MJ recently blogged about identifying one’s own strengths. I thought it would be useful to share a tool that I’ve used over the last seven years as a herder of cats (read: software development manager). I call it the self-development window (or the career development window, as I often use it for that purpose). It looks a bit like this:

Self-development Window

(The astute among you will notice some similarities with SWOT Analysis).

To use the window, just fill in something in each of the first three boxes. Don’t worry about filling them in in order, just put them in whatever order occurs to you.

Strengths

This area includes the skills you use on a daily basis, or that people come to you ask questions about. Often (especially with software folks) we think in terms of technical skills – i.e. the skills where we actually do something or produce something, so don’t forget the so-called softer skills: communication, planning, leadership, etc.

Areas for Improvement

Things that you want to get better at. This might be particular skills that you want to learn, or some area of other knowledge you want to acquire. Many people find that they want to improve in many things, so sometimes this area gets crowded – don’t worry, that’s normal.

Goals

Goals differ from Areas for Improvement in that they are things that you can check off to say you’ve accomplished. For example “Learn to program in Objective-C” is an Area for Improvement, but “Write a commercial app in Objective-C and sell a copy to someone I don’t know” is a goal. Also, goals tend to include things that are much longer in time span than Areas for Improvement – e.g. “I want to become CEO of a company with more than 100 employees”. Make sure it’s easy to measure that you’ve accomplished them – ‘checkbox’ style items work best in my experience.

Tasks

Once you’ve finished with the first three sections, put a time frame on the Tasks section (I usually say three months) and then put specific tasks in there that you can accomplish in the next three months. These tasks must help you improve in one of your Areas or help you achieve one of your goals (or both!). Often you use your Strengths to help accomplish these tasks.

OK, so now what?

I get each of my team members to do this every three months. Then every two weeks we have a chat about how things are going (those chats are not solely about this Window, but it does come up – my job is to help them achieve all their tasks) just to make sure there aren’t any roadblocks and that all the tasks still make sense. If you’re doing this for self-development, it’s probably worth looking at this every week to see if you can accomplish any Task in the week, or work on it. Make sure you:

  • check off any Task or Goal that gets accomplished
  • do the exercise again after your allotted Task time elapses (i.e. every 3 months in my case)
  • move Areas for Improvement into Strengths once you’ve learned what you set to learn
  • look back over your Windows for the year to see what you’ve accomplished and to help motivate for the next year

I’m not sure if the form-factor of a Window actually makes any difference: it evolved from my need to write it all on a whiteboard. I do think it’s useful to have all four areas up on the board at once because sometimes your mind goes blank and writing other things helps jog your memory.

IT industry questions

mj writes:

  • are university degrees worth the bother?
  • are universities correctly servicing the IT industry (and specifically the games dev market) with skills, knowledge, toolsets?
  • why have IT graduates decreased from 1900 in 2004 to 600 in 2007?
  • are we seeing a knock on effect from technology failures in the province, e.g. Nortel, Seagate
  • with the improvement of toolsets, a lone hobbyist can create ‘flickr’ or ‘facebook’. Is this relevant?
  • will we see an upsurge again with demand from Citigroup, Aepona, ATG etc?

Degrees are only useful to get you your first job. If you’ve got your first IT job without a degree, then you don’t need one. After that, it should be possible to achieve what you want with a bit of hard work. At least that’s what I’ve found.

I don’t think universities can be blamed (too much) for not servicing the industry, just given the nature of each. A degree takes 3-4 years to complete, and the content of it is usually created before the degree starts. 3-4 years is a long time in computer terms: 2-3 generations of processor speeds, anywhere from 1-4 major releases of software/language/OS. Really, the best a degree can hope to do is teach good guiding principles and a reasonably relevant language (and yes, I do think Java is probably the best language to learn at Uni).

As a recruiting manager, I’ve found that IT graduates are decreasing for two reasons: the pay is not what it used to be, and you can’t become a millionaire overnight any more. Ironic, given that starting pay has now gone up and some 2.0 companies *are* becoming overnight millionaires. This same trend in hiring is across the world, not just Northern Ireland.

Technology failures: maybe – however, both of those companies are large multi-nationals who opened an outsourced hardware plant in the province. To jump ahead to your last bullet point, these new companies are doing the same but for software/services, which (arguably) has a lower capital investment and, given the more dynamic nature of it, a higher chance of success. I think Northern Ireland really needs some more home-grown successes, and preferably ones that aren’t as staid as Lagan.

Toolsets: it’s semi-relevant. See my earlier post.

Learning and Fear

I just recently finished taking a course as a rescue diver. In it, I learned techniques for dealing with a panicked diver on the surface and underwater, dealing with unconscious divers, rescue breathing, CPR and many other things I’d never done before.

The instructor pointed out that I kept apologizing every time I did something wrongly. She pointed out that I’d never done it before, and that I was on the course to learn how to do it. This seemed obvious, as soon as she mentioned it, but it got me to thinking about why I was apologizing.

There’s an old saying about not being able to teach an old dog new tricks. People apply this to themselves as they get older as a way to say they can’t learn anything new.

The conclusion I reached is that I was apologizing for being incompetent. I’m used to being good at the things I do: whether it’s professionally or personally, after 31 years on the planet I’ve become reasonably competent at a whole bunch of things. Trying to learn new skills makes me incompetent again, and there’s a fear of failure that goes with that. It’s a lot easier to deal with now that I’ve acknowledged it – this fear is purely a fear of appearing foolish or incompetent.

Next time I’m learning something new, I just need to acknowledge that it’s OK to be incompetent :-)

Green fields and how to sow them

Here’s the scenario: you’re writing a green field web application. This application will be used to power more than one e-commerce site, which means that it must be easily tailored. You can use any toolset you like, and the requirements are fairly standard (e.g. exporting data to CSV, modern UI, payment gateway, etc.). What do you choose?

  1. Off-the-shelf e-commerce engine
  2. Open-source e-commerce engine
  3. Build your own

So, it seems you’ve got three options (anyone think of a 4th?). Of course within each of these options there are any number of competing solutions, especially in “build your own”, where you could potentially use any language, web server, etc.

I think with any software developer, the preference is to build one’s own. That way you get ultimate flexibility and intimate understanding of the code, which makes it easier to expand and customise. The downside is that you have more work up-front in order to get running.

Off-the-shelf (i.e. commercial) software tends to have a lot of features that your accountant and fulfillment department would like, and often gives you the ability to customise using one of a few popular languages or their own pseudo-language. The real advantage is that you can have a store quickly, or so you might think. Often, shoe-horning your data into their proprietary and closed-source format makes this option longer and more expensive than building it yourself.

All of which leaves open-source engines. You can be up and running quickly (like with commercial apps) but you have access to the source code if you decide you need to change things the way you want them. Potential downsides are lack of support and lack of particular features you might need (e.g. a particular payment gateway).

So, which would you choose?