
This is something I've been introspecting a lot about recently, it's interesting to try to distil the latest thoughts down into written form. I've deliberately shot for the moon, on the theory that it's useful to have reference points on either side of the right answer, and build up from what's plausible and down from what's ideal, rather than only assume that you must take baby steps forward and never reach. But I'm ashamed if that makes me sound really arrogant :(
1. Hard things
Trying to synthesise what I enjoy doing and am good at, I think I like doing hard things that work. Both learning new hard things, and putting into practice hard things I've already learned. Probably slightly more to towards the practical than pure academic research, but in that direction compared to most jobs. I like understanding hard things, and putting that understanding into action.
Which all fits programming very well, yay! Other ways programming is well suited to me is that I don't like flying without an undo, and I don't like nebulous things where it's not clear if they worked or not, and you get those in programming, but lots of programming is about avoiding them.
I like building complicated systems, and then looking and them working and saying "wow".
This doesn't have to be programming. If there's a surplus of good programmers, and a dearth of good managers, entrepreneurs, UI designers, economists, politicians, artists... I could maybe do some of those things, which do involve hard, accurate thought and building systems that work. The thing I am best at and enjoy doing isn't automatically actually in demand! But on balance, I hope that actually the best programmers are sufficiently in demand that it's a worthwhile contribution to society (both in terms of contribution I make, and what I might expect to get in return).
My fantasies are still embarrassingly adolescent-mathmo, of people saying "we just couldn't figure it out, and then Jack thought very hard, and then explained it to us and now it's fixed, yay!"
And not necessarily alone, I'd like to lead creating a larger system than I can manage myself, but ideally if the work is primarily in technical design, not in communication overheads and management.
2. Making something that perpetuates
This kind of blended through from the previous point, but is different. I'm not sure how much it's something everyone would like but isn't arrogant enough to hope for, and how much it's just me. But I always want the idea of looking at something worthwhile and saying "I did that". And ideally that would go on being worthwhile when I'm not there doing it any more!
I want to make something awesome, not just do worthwhile things that get absorbed.
3. Worthwhile
Worthwhile, both in the sense of having a measurable impact, and in being socially worthwhile. I probably can't hit both of those poles 100%, but I'd like it if I could. Currently I think I'm making software which is useful, and not actively anti-social, which is generally a plus to society, but I the more my work is immediately needed (by anyone) and makes a real positive difference to people's lives, the more I would like it (although I've not really expected to be able to do that without giving up #1, unless I do it in a completely different way).
4. Respect
I'm embarrassed to call this out specifically, but it would be nice if other people recognised the other points, and generally had an attitude of "thank goodness Jack's doing this, yay" not "ugh, more Jack".
And ideally about multiple different things, not just "here's a black box with Jack in where we throw equations and coffee in and get answers out, but we refuse to discuss whether those are the RIGHT equations, or we're working towards the right goals". Like, maybe I could work with other people who are competent at other things, but are able to explain them enough in broad outlines that I can trust them, and know where they interface to my areas of expertise, and occasionally make constructive suggestions based on my work.
Like, fame would be nice but not necessary, but it would be nice if when I told people what I'd done they said "wow, thank you" not "boring" or "why bother".
I'm embarrassed to list this because it feels like I shouldn't care, and that it's not something you're entitled to ask for, just to get or not. But this is list of things I'd like, not necessarily things I deserve.
5. Financial security
Talking it over with Liv, I don't want more money in the short term, my lifestyle has mostly reached a level I feel sufficient. I only want a larger salary because it represents respect and job security: that people should pay you what you're worth, and if they don't, and there's no specific reason for that, even if it's not bad for it's own sake, it's a pointed reminder that you don't have as much control over your own life as you aspired to...
And, linked to the previous point, respect from friends and peers, not just employers, which shouldn't depend on money, but I feel like everyone always assumes I'm a loser because I don't have anything obvious holding me back, I don't have an obvious disability, I don't have a family, I didn't deliberately make a trade-off to do something I thought was worthwhile, and yet, I'm not wildly financially successful :(
However, there are ways earning lots of money would make a lot of difference, not in terms of getting a better lifestyle, but in terms of preventing it getting worse. Enough of a cushion that if I lost my job, I wouldn't need to worry at all, or that if I decided that I'd rather spend two years developing some piece of software I thought was worthwhile without being beholden to investors, I just could. Enough that if some other disaster happens, to me personally or my financial situation, I can ride it out. Enough that I don't need to worry about my lifestyle when I need to retire, or if my parents need a lot of support as they get older. Enough that if Liv needed help I could give it.
And lots of small ways that a superfluity of money would not enable me to be decadent, but would make lots of things easier. Maybe I'd like to spend a month every spring or summer working from the med coast. Maybe I'd like to spend six months living in a completely different country to see what it's like. To split my time between Cambridge and Keele however I liked, or to be able to stay somewhere else for a week working from home without worrying about arranging accommodation, negotiating leave, etc. I'd like to not waste time on all the little things that waste time every week, if I could just buy my way out of them. Money can't be immortality -- but it can buy more life, by removing time spent waiting for buses, wrestling with bureaucracies, fixing problems, etc, etc.
6. Good process
It would be nice to work somewhere with a clear shared understanding of what we're trying to achieve, and measuring success working towards that. Including a clear sense of achievement and progress; clear decisions about what we're doing and not doing, not just assuming that everyone that some things will never be finished; that we'll be realistic about important goals and have stretch goals and actually MEET them, not always have too-ambitious goals that we fail every single time.
I work so so so much better when I've got something to work towards, not swimming in shared and unshared assumptions...
Moving from the general to the specific, from a software point of view, it would be nice to have all the obvious good practice:
* requirements
* unit tests and release tests
* coding standards
* clear procedure for committing, building, releasing
* nightly builds, fast builds
* DVCS
* agile-ish (but not too scrum-y)
* clear process for bug database
* as much communication as needed (hopefully daily), but not endless rehashing
* etc, etc
7. Low but not zero hectic-ness
I hate sudden disasters, especially ones that everyone thinks, or I feel, are my fault, because I didn't have enough control over how much advance planning to do. (That doesn't mean, I think everything should be polished until it's perfect, it means there should be a positive decision on how much to prioritise perfection and reliability, and if that's underchanged, we should budget for future problems coming to light, not just treat them as bolt-from-the-blue "oh look, Johnny McWeDidn'tAllowHimToTestOrTellHimTheRequirements fucked up again,")
But I do like a certain amount of handling real-time response, when I have the freedom to anticipate it and assign priorities, because I like the satisfaction of doing it well and not panicing :)
So, ideally, not big one-shot events which succeed or fail, nor constant fire-fighting, but maybe rapid and flexible release cycles? I'm not certain of what I DO want, but I'm certain of what I DON'T want :)
Specifics
If I put that together into a little story, how might it go? Someone comes to me and says "I was talking to a mutual friend and I plan to do [socially constructive thing], but in order to do that, we need to do [hard things] and it seems like your experience and ability to learn new things rapidly would be perfect. I've a lot of experience with [field] and with hiring good people, but not with building software. I'm thinking of several other good people, but I'd like your input on them. Can you handle a small team of committed techies? No problem if you think someone else would lead better."
"We don't have infinite money, but we have resources to tap for anything that seems important, and we don't want to scrimp on day-to-day comforts for the team. Most of the time you should probably work from Cambridge, but you'd have to travel occasionally and you can arrange it however you like. You'd have [some fancy job title] and a [serious salary], plus a significant stake in the success of the organisation."
"The code should probably be open source, because it might be useful in other fields even though the real advantage in what we're doing is the people not the code base. Is there anything else you think I should know?"
I also note, I'm mostly agnostic whether the organisation is a new department in large company, a start-up, a non-profit, or something else -- I think any of those can fit the role of "doing something worthwhile".