Tag Archives: personal

Personal

On pigeon holing

If you haven’t come across them already, I strongly recommend you take a few minutes with this HBR blog: In Defense of Polymaths, and also Adam Savage’s commencement address to Sarah Lawrence. Both are insightful pieces on the fallacy that is the tendency to believe that specialism in a narrow field is the answer to a fulfilling life experience, and ultimately to ‘success’, whatever that means – usually money, possessions and peer recognition. I thought I’d add my 2c to the conversation.

I spent a lot of my youth rather confused about what I wanted to do, because there were a bunch of things that I was either good at or had an interest in, and those things were often in flux, yet I felt the expectation that to succeed, I had to pick one and specialise in it for the foreseeable future. Life has taught me that this is just nonsense, and that unless you have a singular all-consuming passion that lasts for 40 years, you should expect to switch things up sometimes, at least if you want to stay happy.

I’ve switched up my ‘career’ (if you want to call it that) lots of times already and I expect to keep on doing it. Straight out of school I trained as an accountant before realising that didn’t interest me, but came out of it with some business, law and economics skills that I still use occasionally. I’ve trained on ‘big enterprise systems’, and for a while sought out the big, hard, complicated design problems. I also did a lot of graphics coding, from software engines to hardware accelerated, 2D and 3D systems, and ended up creating an open source project in this space that became very well known. I’ve written Mac software, currently in the developer tool space (git and mercurial). All of these things continue to be useful to me in some way, regardless of the tangental association with whatever the current project is. The Steve Martin quote that Adam Savage uses in his speech resonated with me:

You will eventually use everything you ever learned. ~ Steve Martin

However, every single time I’ve made a leap from one thing to another (I call them my ‘context switches’), I’ve had people say to me ‘But I thought you were the guy who did X!’. When I went from enterprise systems to graphics software, people thought this was odd – why wasn’t I following the natural progression (and job offers) from the previous 10 years of experience? When I moved from graphics into Mac software, some people seemed to think I must have done it under duress of some kind, and that I’d be desperate to return to my previous stomping ground. Some people don’t seem to get that it’s possible to be interested / enthused about more than one subject area, and that over time this already complex set can change. Why is that?

Well, people like attaching simplifying labels to things. It’s convenient for sure, but people are a naturally complex collections of skills, interests and desires that you really can’t pigeon-hole, even if you really want to to avoid dealing with the real depth and constantly shifting complexity that’s actually there, and how actually this should be considered to be a benefit, rather than an niggling inconvenience to your categorisation system.

There’s also a perception that you’re ‘throwing away’ all your experience when you jump into a different subject area or industry. This is just plain wrong too – you never lose any of the knowledge you’ve built up (besides poor memory perhaps but rusty knowledge is polished up quite easily), but the differential of this knowledge – how much you’re learning right now – decreases hugely over time. After 5 years in a similar subject area, you’re probably not learning very much anymore; maybe you’re considered an ‘expert’ now, which maybe some people like from a prestige point of view, but to me the lost opportunity of learning far more in a new subject area outweighs that considerably.

I think the tragic thing is that a lot of people end up pigeon-holing themselves because it feels like that’s expected of them, because society appears to reward only the specialists. I can’t help thinking that a lot of mid-life crises are attributable to this dynamic.

Development Personal

Why I’m a software developer

How often do you stop and think about why it is you do what you do for a living? Maybe it’s a mid-life crisis thing, but of late I’m acutely aware of the finite nature of time, and that there are an infinite number of ways I could spend that time. I’m also aware that ‘software developers’ are a quite diverse bunch of people, despite the persistent stereotype of math geeks huddled around technical toys talking in obscure acronyms (OK, we do that too). So I put some thought into why I choose to spend my time making software.

For me, it’s really simple: I like making things that people enjoy. That’s a pretty broad definition, but creation and connection is absolutely at the core of my motivation. It’s not really about the technical or logical challenges for me; at least, not any more – that might have been more of an issue earlier in my career. There’s something indescribably satisfying about creating something from nothing, sculpting and refining it from an image in your head into a functioning, tangible product. It doesn’t really matter what it is, just that it didn’t exist before, and now it does, purely because of your will. “I made that” is a satisfaction universal to all languages and cultures. That I’m a software developer rather than a sculptor, writer, musician or painter is down to a combination of circumstance and natural tendencies, but I don’t think my motivation is limited to this technical sphere at all. In fact, I think we all have this creative spark, it just gets drummed out of a lot of us after childhood.

I also think that you have to make things that speak to you first and foremost. Obviously you hope they will resonate with others too, and it’s pretty much guaranteed that they will (it’s just the degree that’s variable). I’ve made products entirely for other people before, indeed I spent a large portion of my career doing that, and it’s a bit of a lucky dip whether that turns out to be enjoyable and fulfilling or not. I’m at my happiest when I’m scratching my own itch, eating my own dog food, and building a community of people who feel the same way. It’s where both Ogre and SourceTree came from, which are the pieces of work I’m most proud of, and are also the most successful products I’ve created so far. That can’t be a coincidence, right?

This may sound like woolly, new-age thinking, but what feels right normally is right. I’m convinced that when you spend your time doing things which sync up with who you are as a person, better outcomes are more likely.  Have you thought about why you do what you do lately?

    Personal

    The folly of crystal balls

    “So, where do you see yourself in 5 years?”

    I’m willing to bet every person reading this has had that question posed to them at some point, most likely in a job interview, but possibly during an appraisal, or if you’re really unlucky, by a potential father-in-law at a dinner party. I’m going to call it out right now – it’s one of the stupidest questions you can be asked. It’s a test, of course – does this person have a plan? Are they committed to their career? Or, more accurately, can they make something plausible up on a whim, by accurately judging the kind of crap that I, the questioner, want to hear?

    OK, so maybe there are some people out there who genuinely plan their career out 5 years in advance, but I also imagine they’re rather dull people to be around. I can’t recall for sure, but to my regret I think I may have asked this question myself in interviews many years ago, embedded as I was in an environment of conformity and convention which demanded certain inexplicable behaviours handed down from forefathers whose underlying reasoning (such as it was) was long forgotten. If I asked this question of a recruit now (and I wouldn’t, but if I did), I’d only be asking it as an ironic anti-question, since I now believe the only honest and vaguely correct answer is “How the hell should I know?”. At which point I’d probably give that person the job just for being honest and we’d figure out what to do next on the fly, which is what we’d have done anyway of course.

    Because when it comes down to it, plans (of any kind) are one part fairy tale and one part straight-jacket. Not only are things not going to turn out the way you think now on any time scale beyond the life of your average housefly, leading to the very real expectation of self-abuse for not delivering on ‘The Plan’ (choral accompaniment), but by being fixated on past expectations you’re very likely to be less adaptable to change, and to pass up alternative opportunities that you didn’t expect. And that’s not a minor issue: the best opportunities I’ve ever had have always been unexpected, and my primary successes have been universally unplanned. Looking back, choosing and setting a direction in life at any point in time was important, but planning specific goals was not, because all the best stuff just kind of happened along the way.

    So, if you do interviews, please stop asking this question, it’s meaningless. Everyone has a current direction, but let’s not kid ourselves about the immutability of that vector, or that the destination is knowable. If it was, life would be pretty boring anyway, right?

    Health OGRE Personal

    Health update: December 2010

    I’m still getting the odd comment on my post in April about my back & why I was retiring from Ogre – thanks again to everyone for the best wishes. I haven’t posted any updates since then, both because I don’t want to ‘count my chickens’ too early, because I’ve been busy, and because I don’t want to be too self-indulgent; but it’s been 6 months now, and I figure some people might like to know my status, because it really has changed a lot.

    I’m glad to say it’s good news. :) In the 6 months since I announced my retirement, my back has improved a huge amount. Withdrawing from my multitude of (over)commitments was hard, and I felt guilty for quite a while (as well as reducing my income since I switched to less stressful projects of my own), but it was absolutely the right decision. Literally every month that passed has made a small difference, and it has thankfully accumulated – right now it’s better than it’s ever been. I’m not in pain on a daily basis any more (only occasionally if I overdo something), and I feel a lot more confident that I’m not going to injure myself doing normal everyday things. You’ve no idea how much it means to me to be able to go to bed at night without dreading how much it’s going to hurt to get out of bed the next day – such a simple thing, but it’s a huge deal to me after 2 years of pain.

    My physio’s theory (after being very puzzled because the problems I had were symptomatic of a major trauma, of which there was no evidence) was that the problem was a vicious circle of stress and excessive time being desk-bound that had caused a long-term shortening of the tendons / muscles in my back, coupled with a general age-related degradation of discs, which then (because of the pain) caused me injure the nerves far too easily, causing more stress and making exercise to alleviate the problem long-term very difficult to do. In hindsight, while I was skeptical for a long time it appears he was right – it’s just that to break that cycle required a massive change in lifestyle over a sustained period of time, and being consistent with that change even when it didn’t seem to be working early on.

    I’ve always believed that success is just a factor of effort and consistency, and that there’s no such thing as a ‘quick fix’ for anything important. I think if there’s any experience in my life that has reinforced this philosophy (and also tested my ability to follow it), it’s this. Plenty of people (particularly in the USA) told me I should be looking for a surgical solution. I never wanted that – the spine is a ridiculously complicated structure and I had very little faith that such a fix would last (even if it worked short-term), particularly while the original cause of the problem wasn’t explained. I’m glad that the culture here is to operate only if there is no chance of natural rehabilitation, because even if there had there been a viable ‘quick fix’, without the lifestyle change I’m sure the problem would just have reappeared later anyway.

    It also seems that there was a combination of physical and psychological factors contributing to this, which again undermines the surgical option. I’ve historically had quite a high tolerance for stress and work-related pressure – in fact I’ve done some of my best work in the crucible of ridiculous deadlines and seemingly intractable problems. My general attitude that I could ‘push through’ any difficulties, reinforced by the inevitable high in the aftermath, pretty much set me up for this kind of problem – because when my health started to falter, I took the same attitude. Obviously, it doesn’t work. Stress and frustration cause tense muscles, which exacerbate the problems of discs compressed by too much inactivity and make stretching them out to their proper state again even more difficult. So in addition to changing my work habits, I’ve had to learn how to relax again. It sounds ridiculous, but because of stress and a reaction to pain (which is to tense up), I had literally forgotten how to relax a certain bunch of muscles in my lower / mid back. I had to be taught how to do it again using breathing exercises and gradual, millimetre-by-millimetre changes in posture over time (too much at once would cause me lots of pain).

    So, it’s been a long road and it’s not finished yet – nor will it ever really be finished, since I’ll need to continue with my new lifestyle for the foreseeable future. I have a newfound appreciation for keeping my stress levels lower and being more realistic about what I put my body through in the pursuit of work / hobbies. In many ways the old Steve is gone (the workaholic, coding at 3am Steve who created Ogre). The new Steve has a working back though, and frankly, that’s far more valuable.

    OGRE Personal

    Dude, there’s an Ogre on my mantelpiece!

    In a complete and total surprise, my cousin presented to me yesterday the result of a grand conspiracy in the Ogre community to commemorate my time as project lead – a specially designed, unique Ogre statuette! Thumbnails below, click for more detail…
    Receiving the statue Sinbad holding the statue
    Front of statue Back of the statue

    I literally had no idea this was going on, or that my cousin had been asked to make the delivery that day (I thought we were just meeting for a social). I was completely taken aback and very touched that the people in the community would go to the trouble of doing something like this for me. :-o There’s a thread in the forums going into more detail on how they organised it, including the many, many different designs they mocked up and considered before voting for this one. I’m humbled and flattered.

    My sincere thanks to everyone who was involved in organising this, and very well done for creating such an excellent statue and managing so successfully to keep me in the dark about it! You guys are just awesome.

    Development OS X Personal

    Taking a bite of the Apple

    Giving up the leadership of OGRE was a sad moment for me, but in hindsight it has also been rather liberating. For 10 years I’d spent most of my energy on OGRE or on projects that were related to OGRE. There was an implicit understanding both from the community and from myself that everything I embarked on would in some way tie into OGRE – and indeed my business has always been based on a constant balancing act between how I can make a living while also promoting and advancing OGRE. I’d tended to major on the latter rather than the former most of the time as it happens, because I had an emotional attachment to the project and a feeling of responsibility and custodianship that I took very seriously. So when I finally admitted to myself that my back couldn’t take the ongoing demands of being an open source leader as well as making a living, the big question was: what next?

    Over the years I’ve learned a couple of things about choosing what projects to work on – follow your gut, and work on things you’d do even if there was no money in it. Yes, you need to do a business case and convince yourself that there’s a viable market for what you have in mind, but all that’s irrelevant if you don’t feel strongly about what you’re doing, because it’s passion and enthusiasm that will get you through the difficult times. So I sat down and gave some thought to what really excited me these days, what I liked using and what technical directions piqued my interest. I still find 3D and games fascinating, but they’re far from my only interests.

    So, I realised that one area that I’ve been dying to get my teeth into properly for ages but had never found the time before, was coding specifically for Mac OS X. In 3 years I’ve gone from a total newcomer to the platform, to a staunch advocate of it. However until now I’d never really had time to play with developing on it, beyond porting cross-platform C++ code and providing / using intermediate libraries. One thing I learned in those 3 years as a user was how much better applications designed for OS X felt to use compared to those that were just ported via a common UI layer (like wxWidgets / Qt), and I’m convinced now that while cross-platform infrastructural code is great, user experiences are far better when designed with the specific platform in mind – increasingly that means OS and physical device now of course. Sure, cross-platform UIs save the developer time, but the result is often a watered-down experience – early on I liked OS X applications that felt like Windows, or ran the same on both platforms – now I  do not. Such carbon-copying applications were helpful while I was unfamiliar with the platform, but now it’s just glaring to me how basic their compatibility with the OS typically is, and how the UI styles clash with the expected standards.

    So, I decided I wanted to learn how to target OS X specifically, and had a couple of ideas for projects I could do with it, which meant learning Objective-C. At first, I hated it and tried to escape via more familiar technologies like Objective-C++ and PyObjC. Ultimately I found shortcomings and limitations of those routes and returned to Objective-C, and the more I used it, the more my animosity toward it diminished. In the end I realised the problem was that I needed to adapt to the environment, rather than try to adapt it to my previously learned styles and behaviours. Sure, missing elements like namespaces might still nag me, but on balance the blend of static and dynamic language elements works very well for the intended use. And besides, I really didn’t want to be ‘that guy’ – the programmer that having decided one language / tech is ‘the best’, then tries to apply it everywhere, regardless of suitability; I like to think I’m a bit more flexible & multicultural than that.

    I’ve also learned that Cocoa is a very, very smart system. Mad as a bison if you’re used to other systems beforehand, but persevere with it and resist the urge to hide it under some vanilla layer that you’re already familiar with, and you discover it’s really very powerful. Not to mention the Core Animation and Core Graphics frameworks are a lot of fun.

    It’s funny, I’ve spent so many years concerning myself with providing compatibility across multiple OS’s, multiple GPUs, multiple render APIs, and multiple drivers, it’s a genuine joy to actually forget all that for a while, and concentrate on an end goal with a finite number of permutations for a change – and not to shy away from using platform-specific features.

    While I’m still very much an advocate of open systems, I look at things slightly differently now – that data & protocols should be open, and that we should all re-use & collaborate on common, preferably open source infrastructure (like OGRE), but that the ‘last mile’ to the user is the least suitable for generalisation, because the more specific you can make that interface to what the user expects on their OS & device, the better that experience will be. And at the end of the day to the user, that experience is the application, and thus all that really matters – and I feel that Apple gets that, in a way that very few others do.

    So, I’m having a great time learning to be an Apple developer so far, I’m going to see where this takes me for a while. My gut says it feels right, and I’ve learned to listen to my gut :) I love the platform, it’s a total change of pace and technology, it’s something I’ve had an interest in for a while, and the Mac has quite a thriving community of quality independent app developers that I can try to join – what’s not to like?

    Business Health OGRE Personal

    Refocussing

    lensSo, I’ve been a little quieter than usual since the new year, and that’s because I’ve been in  a rather reflective mood as I plan out how I’m going to spend my time in 2010. That’s right – planning! Talk about the final frontier ;)

    Basically, as you may have gleaned from my previous post, I’ve been looking to make some significant changes to the way I do things in 2010. I spent 2009 reeling from a back injury and trying to figure out how to deal with that given that I’m self-employed (ie I don’t get paid when I’m not working, regardless of the reason), and a leader of an open source project (with the inherent time requirements that comes with). This meant working out on the fly how to stay afloat financially, and still keeping my own interests and open-source plates spinning, without slipping back into the ‘permanent voluntary crunch mode’ style which triggered my back problems. I can’t stress enough how difficult that transition has been for me – it’s not like anyone was forcing me to work/live that way, I did it because I wanted to, but then it suddenly had to stop. When you invest so much of your time and perceived identity in something, backing away from it is very, very hard.

    Of course the economic climate wasn’t great either, meaning I spent a lot of time jumping around between many small projects, leading to more overhead dealing with admin & business relations. I ended up just going almost month-to-month on-demand, not  planning very much and just being grateful to be able to work a decent amount at all – which given how unwell I was at the start of the year was definitely something to be glad about. But, now I’m back on my feet and pretty confident of my future health again (within reason – I’m not going to be bungee jumping any time soon!), I’m ready to start being more pro-active again and to map out some plans.

    One thing is for sure, there’s no going back to how I used to do things. My days of saying ‘yes’ to almost everything and being at the keyboard until past midnight most days, and most of the weekend, are gone forever. I don’t regret doing it, despite the pain it ended up causing me, because OGRE wouldn’t be here otherwise and I learned a vast amount and had a ton of fun – but I’ll leave that to the under-35s in future; have fun guys ;) From now on, I’m being ruthless and somewhat selfish about what I work on, and concentrating on things that maximise my personal love-growth-cash triangle. It means I’m passing on a lot more projects, and concentrating far more on things that are strategically significant to me, rather than anyone else.

    I’m still planning to lead OGRE, so long as the community is happy for me to do so, but by necessity I’m stepping back a bit to let other people take more responsibility where they want to, and to refocus my time on mentoring and advisory roles rather than trying to be everywhere at once. We have some great people in the team and in the wider community, and I hope our MIT license will foster even more in future. Both I and the community have gotten used to perceiving me as the ‘go to guy’ in the first instance, with responsibility for pretty much everything, but in practice for some time now it’s been very much a team & community effort, just one that I happen to lead (and financially support where needed). In fact one of the things I’m quite proud of is the way so many others have picked up on the way I do things, and taken things forward themselves in a way that I wholly approve of. That’s open source in action, and I’m glad to be part of it, even if I can no longer have my fingers in absolutely every pie with an OGRE symbol on it :)

    Here’s to 2010 anyway. It’s going to be different, but change is good.

    Games Personal

    My work here is done

    I’m far from being a gamerscwh0re who mines every game for every last Achievment, but nevertheless they’re fun to get. I like the ones that encourage you to do something memorable rather than the rather less imaginative “complete game on difficulty X” or “scour the world to find all of item X”.

    Having picked up a number of games for Christmas I’ve had something of a boost recently, but last night while playing Assassin’s Creed II (which is a vast improvement on the original which had great atmosphere and free running mechanics but was riddled with tedious repetition and hence I never finished it) I completely accidentally landed on precisely 10,000 gamer points at the end of the night:

    10000gamerscore

    How can I possibly play anything else now? I’ll never, ever have a score that perfect again! ;)

    I’m not sure why my gamercard is currently in German (‘Bereich’), thanks dodgy XBL site localisation.

    Personal

    MMX

    Although many popular films and TV shows don’t seem to use the convention of using roman numerals in their copyright statements anymore, the BBC has, as far as I’m aware, always consistently used them. It used to be kind of fun to see who could figure out the roman numerals first, although my wife was always better at it. For anything made since 2000 (MM) of course, it’s become a bit boring, since you only need to know how to count to 10. For some reason this occurred to me today as I considered that, after this year, we won’t see as simple a roman numeral representation until 2050 (MML). This year of course, we have to live with the knowledge that our year is named after a SIMD instruction set. But hey, it was funky, right?:

    So anyway, 2010 is here. I’ll be keeping an eye out for black obelisks, but since we didn’t come up with an equivalent of Hal by 2001 I’m beginning to suspect the books weren’t that prophetic a vision of the future after all. It’s a new decade that we have to find yet another awkward moniker for – the ‘noughties’ was pretty rubbish but the ‘tens’ isn’t much better. Frankly, I couldn’t much care for the significance of entering another decade – after all, it’s all arbitrarily counted anyway, and after you’ve seen the passing of a new millennium (in all its vastly anticlimactic glory) it’s hard to get excited about any piddling small numbers any more.

    I can’t say I mourn the passing of 2009, which despite a few high points (returning to Canada on holiday, seeing the viral success of Torchlight, getting 1.7 out the door, and so on) wasn’t an ideal year for me. Better than the end of 2008, when my back injury was at its worst, but due to the economic climate and needing to recover my health, I’ve been juggling lots of smaller jobs in 2009, and as such have not felt a great deal of attachment to most of the projects I’ve worked on. I’ve also had to consciously hold myself back from over-committing for fear of putting my recovery in jeopardy. By nature I’m an ‘all or nothing’ kind of character, so I’ve found this deeply unsatisfying at times. It’s kept the financials ticking over, but it also comes with lots more admin overhead (= wasted time) and doesn’t motivate me as much. I intend to change that in 2010 – I can’t go back to the kind of hours I was doing in 2008 and before, but I intend to try to fill the hours I have with things I can feel more personally committed to. OGRE is one of those things of course.

    In the meantime, I wish everyone a happy and prosperous 2010!

    Development Personal

    Salad Days

    My friend Damien was blogging about his early experiences with computers & programming yesterday, and it reminded me of how I got started. Specifically, it reminded me of an influential magazine I read at the time called “Input”, which taught BASIC programming for the ZX Spectrum and BBC. It was a short-lived, esoteric British thing, but I was astonished to find that not only does Wikipedia have a page on it, but they also linked a TV advert of it which has been lovingly archived on YouTube:

    This brought back some serious memories. I remember that as well as the demo snippets there was an adventure game of sorts which was being published bit by bit in the magazine, as an incentive for you to buy them all. Like most magazines of this type there were regular typos that you’d scratch your head over, but in a way that was a good thing since it taught you to debug other people’s code.

    I was 10/11 years old when this magazine came out, and I can probably trace my programming beginnings directly to it. It’s probably a bizarre concept to the younger generation, now that they have instant access to almost limitless information on the Internet. What I would have given to have the Internet back then when I was learning, instead of scratching around for information in magazines like this. :)