Recently I read an impressive description of mentoring elsewhere with respect to writing, production, and marketing for indie games. I was really impressed that they offer that and, as a person typically having served as a lead in the past, I’ve been missing that aspect of my work.
I’ve been programming professionally for games for more than 20 years now. I’ve probably been a lead for at least half that time, though I’ve never counted it up, mentoring and leading programming teams from three or four people up to more than a couple dozen. I’ve learned a lot about building games in that time and the skills required to be a good contributor and a good leader. Although I hope I’ll still be doing this for decades to come, I’m in a position right now to be a mentor outside of my daily responsibilities. And to be honest, it’s something I miss, as right now I’m the sole programmer on the project and have been for more than a year.
Here’s what I can offer:
- Help with the programming skills. I’ve been doing this a while, and I have learned the ways I’m most effective at the pure aspect of writing code. This includes things like code structure, algorithms, what-have-you. The software stuff.
- Help with the less tangible stuff. Things like scheduling, communication, productivity, working with both programmers and other departments, and how you might approach your work differently at different times of the project.
- Practically speaking: access to me via email at whatever frequency works for you. An hour or so video conference once a week. Maybe a longer session (or several hour-long sessions) in our first week just to get to know each other better and maybe set some goals.
- Code review. I won’t do this on a daily basis, but it’d be great to look over some code you’ve written or a project you’ve done and talk about techniques to improve it in various ways.
- An invitation to a Slack that I’ll create just for this; my hope is that as I continue doing this for more people, it’ll be a small community of programmers that help each other out. Admittedly, in the beginning it’ll just be you and me.
- Let’s start with six months of this; not an obligation but I think longer-term regular contact is probably beneficial. We can talk about continuing this level of intensity as we approach the end, and possibly extend, and similarly, if a few months turns out to be all you really need, we can slow down the level of contact/mentoring earlier too.
- Hopefully, a lifetime professional contact. I’ll be happy to introduce you to people I know as opportunities arise, whether at conferences (I attend sporadically, but expect to go to a few next year).
Here’s what I can’t offer:
- I won’t program for you. I’m more likely to ask you a bunch of questions than tell you an answer. You will know better than I do in so many ways anyway.
- I’m not an intermediary with your company. If you should end up having issues with people, they’ll be yours ultimately to navigate, though I’m happy to offer advice based on what I know.
- I’m not looking for who I next hire where I’m working. I mean, it’s not like it could never happen, but you wouldn’t necessarily have a leg up.
- I’m not a teacher looking to specifically teach someone language X or whatever. We may do some readings together and discuss them, but coding basics in your primary language I assume you’ve picked up somewhere else.
The ideal candidate I think has a few characteristics:
- Near the beginning of his/her/their career. Maybe in the first five years?
- Part of a team, whether AAA or indie. A lot of what I have to offer isn’t necessarily of use to someone who is working solo.
- Probably a generalist, game, or systems programmer — I will not be the best person to help someone with shaders, for example, or DSP programming for audio, except in a general way.
- Willing to share honestly the problems he/she/they face on a day to day basis, both technical and those that involve working within a team.
- Probably working in a C-adjacent language. Although language isn’t really super important, I’m going to be fairly useless on language skills to someone who wants to program all day in Haskell or Ruby or something. While I’ve used tons of languages and while I think a lot of what I have to offer is language-agnostic, there are still likely limits to what I can do to mentor someone working in something totally alien to me.
- Ideally, different from me. I’m white, cis, straight, neurotypical, able-bodied and male, which is to say I play life on the easiest difficulty level. I can learn from you if you’re different from me along those lines, and that’s important to me, too. I’d love to expand game programming in whatever small way I can, and reaching out specifically to people who aren’t just younger versions of myself I think would be helpful. Consider this a strong endorsement that people who are different from me should write in.
Reminder: matching up entirely with my “ideal” candidate characteristics is not disqualifying. I’m aware that under-represented groups will often take themselves out of the running earlier if they don’t match up perfectly with some list of “requirements.” These are just some things I’m looking for. It’s unlikely that every applicant will meet all of them. How you present yourself in your email introducing yourself will probably make a big difference to me. I’m not giving out a certain number of points or anything like that, this is more of a “feel” thing, I think.
How to apply: Send me an email at email@example.com with the subject line “Be my mentor”. I’m not especially interested in your résumé, really — I’m more interested in you telling me a little story about who you are, where you feel you are in your career, how you got there, where you want to go, and what challenges you face. Let’s talk. Even if you’re not the person selected this time out, maybe I feel like I have time for another in a couple of months. Hopefully we both get an opportunity to grow from this experience.