On changing languages, frameworks and teams.

“Learning is a treasure that will follow its owner everywhere” – Chinese Proverb

Hi. I’m Ben Bradshaw, I’m a geek, coder, Firefly fan and a bunch of other things including the newest Rabid employee in Wellington. It’s been close to 4 months since I started here and in that time I’ve changed programming languages, frameworks and teams not to mention offices, clients, and generally everything.

Why did I do this? There’s something awesome about the challenge of learning new things and that’s part of it, but what drove this has really been my desire to mix doing good in the world with my need to pay rent.

Rabid has a social focus in their work and that’s what first attracted me to work here. Right now, I’m in the middle of my transition from being a solid PHP developer using Drupal and Backbone.js to being a solid Ruby on Rails developer with a bit of Ember.js on the side. This has been a big transition for me and I’ve learned a lot as a result.

Importantly, I wasn’t asked to write on this topic and I’m not trying to sell you on joining Rabid. I know from experience that changing jobs is a big thing, so I thought I’d write down some pointers that helped me transition.

Identify company culture

The culture of a company should have a big influence on the choice of where you spend the majority of your waking hours 5 days a week. Is the environment physically (sunlight, volume) and mentally healthy? Try to meet your future colleagues before you sign your contract and make sure the environment will encourage you to grow. If there are areas that are lacking, how can you balance those with out of work activities to keep yourself happy and healthy?

This could be a whole blog post by itself, to be honest; there’s so much that goes into culture.

Be yourself

Let’s say you’ve found your job – entering a new workplace is challenging. It can be tempting to fake it on the first few days – don’t do it. You’re going to be here for a while, your colleagues will turn into friends and they’ll see past the act, so just be yourself and be honest.

Introverts like me will know that meeting new people can be fun, but also tiring. Pick the best moments to meet your new colleagues if you can. If you like coffee, go out for coffee. It’s important to know the people around you – relationships are worth more than code.

Expect change

It’s obvious, but worth stating. You expect the environment, code and people to change, but the more subtle things like culture influence a great deal in a company. Even little things like when you eat lunch might adjust if you want to eat with your colleagues (which I recommend).

Take notes

You’ll be taught a lot in a short space of time. I promise your brain won’t remember it all, but you can write it down. Post-it notes, memory joggers, bookmarks to helpful online guides and text files – all of them are useful for storing what you’re learning. I prefer to have my permanent notes online, so I can read them from anywhere.

Give yourself time

Don’t be disheartened if things take longer than you’d hoped. Give yourself time to absorb everything and know that it’ll take at least 3 months to feel somewhat comfortable and 6 months to be really productive with new technology. Prioritise learning early on through reading books, doing tutorials and asking questions.

The same goes for building friendships – things might be awkward at first, but they’ll get better as you find overlapping interests and get to know people. If you can introduce yourself on the first day and break the ice that’s a great place to start.

Have a mentor

I can’t recommend this enough. A mentor can help you through your entry to the company and offer advice and support to smooth the way early on. Buddy systems are great, but you’re assigned a buddy, you choose a mentor. I had the advantage of already knowing who I would ask, but if that’s not an option for you, find someone you trust who can give impartial advice and ask if they’ll mentor you for three months.

Have fun

Don’t forget to enjoy yourself 🙂

Bring your best

This is where you get to give back. You’re the newest person in the company – this means you have the freshest eyes. You’ll see things others don’t and you have your own experience to draw on.

Actively choose the best knowledge and attitude you want to bring with you and what to absorb from your new environment. Drop the rest. Know that by being in a space you can influence it positively. If you have good ideas share them for the benefit of all. If your idea isn’t taken up, don’t be disheartened, not all good ideas are.

Find out how to go with the grain of the code

Your previous language or framework made some things easy and some things hard. The new systems you’re working with will make some previously harder things easy and some easy things harder. The best thing to do is to ask questions and understand what you get in exchange for following the standard practice and ‘going with the grain’.

Ask the experienced people why the framework is a certain way. If there’s no good reason for why then it might not benefit you. Other times you’ll find that there’s magic you get for free or a big pitfall you can avoid by sticking to the standard ways your colleagues recommend.

Every good adventure has a challenge

I like a challenge – it’s what makes an adventure. Some days the challenge is harder – that’s when I go home, get a good night’s sleep and come back the next day for another try. Some days it’s easier, but it’s never boring and I like that.

“A smooth sea never made a skilled sailor.” – English Proverb

My final piece of advice if you’re thinking about changing jobs is this: make the choice. Go for it, or not. Stay where you are and find things to appreciate or strike out to new horizons and try something, but pick your path and walk it. Don’t waste your time and energy on the “what if”.