Trisha is a developer at LMAX, a financial exchange in London. She’s been working in financial markets the last 6 years or so, but a fear of boredom and healthy amount of job-hopping before then has given a wide breadth of experience, in a range of industries, over the 10+ years she’s been a professional. Currently trying to get her head around low-latency, high performance coding whilst also her fingers in the other pies LMAX has to offer, such as continuous delivery and agile. Trisha is involved in the London Java Community and the Graduate Developer Community, she believes we shouldn’t all have to make the same mistakes again and again.
Title – What is your job title?
What is your role about?
I’m a Java programmer for a financial exchange, in a company that runs in a very Agile way. We’re a small-ish company, about 80 people, half of whom are in technology. Because we’re trying to create the fastest retail exchange in the world, technology is absolutely fundamental to our business.
We’re pretty much a pure Java shop, we do use some libraries and tools, like Spring and GWT, but fundamental computer science, domain driven design and mechanical sympathy are more important to us. What that means is we’re constantly challenging ourselves to write code the “right” way, so it’s easy to maintain and quick to run (turns out those two things are usually the same thing) – well designed, well tested code is key to creating the sort of platform we need.
We use agile techniques like pair programming, which keeps us honest. It’s quite tiring, and sometimes goes against what you want to do as a developer – sometimes you want to sit alone with your headphones on and just churn out code. But pairing tends to lead to better thought-out code, and forces you to do the right thing like writing your tests first.
We’ve worked quite hard to create a culture where developers spend most of their time writing code – meetings are at a minimum, and interruptions are restricted to those that are vital, for example production issues. It’s also recognised that the bottleneck when creating good code is not the typing – it’s not about sitting and bashing out as many lines of code as possible. It’s normal (and encouraged) for us to spend time discussing design, drawing on whiteboards, and chatting to other developers who might know an area of code better – this works much better for us than having formal design sessions or meetings, but it does take a bit of getting used to. The office is not silent by any means, and you’re free to jump into another pair’s conversation if you have something to add – it’s a really great way to learn and develop but it takes practice to switch contexts and to be able to filter out what’s not important.
We generally work 40 hours a week. I’m involved in recruitment as well, because I’m obsessed with finding the right people for our team, but that means that sometimes I do stuff out of hours like attending LJC/GDC events, but this is as much for my own development as for my company’s development. One week every two months I have to be on call, which does mean phone calls late at night, but it’s voluntary and we get paid extra for that , so that’s a sacrifice I’m willing to take.
What are the best/most positive parts of the job/industry?
I love the coding, the problem solving. There’s nothing more satisfying than seeing a test go green, or the output you expect on the screen.
In this place, I love the guys I work with. There are about 18 developers split over 4 teams, plus BAs, QAs and systems guys. Regular rotation between teams means not only do you get to know lots of different areas of the system, but you get to work with everyone at some point. Everyone here is really smart, and you can learn from all of them – the senior guys always have experience that I can benefit from, and the juniors are great at asking questions which actually get you thinking about your assumptions – is it really the right way to do something?
In general what I like about working in financial markets is that most companies in this area really understand that technology is a differentiator to their business – having smart people working with the best tools can directly impact the money the company makes.
What are the negative parts to the job/industry?
One of the things I don’t really like about many companies in finance is the arrogance – sometimes they think simply because they do have smart people and money they are naturally doing thing the best way possible. In fact, quite often they are producing code/products as fast as possible, which leads to a maintenance nightmare.
Something I wish I had understood much earlier in my career is that it’s quite different working for a company where you are in the IT department (i.e. technology is a supporting role to a business that does something else, like manufacturing or media or banking) vs working for a company where technology IS the business (for example, a software firm, a technology start-up, a gaming company). If you’re lucky, you can find companies in the first category that really understand the direct impact technology can have on their business. But if you work for the second category of business they have no choice but to work out how to leverage technology to the full potential, it’s their business differentiator. The reason this is a good place to be is that the technology part of the organisation can a) see how their work is valid and b) is empowered to have conversations about better ways to do things, stuff you can buy/do to increase developer productivity etc.
What is the standard career path/qualifications?
My career has been:
Undergraduate placement -> Graduate -> Developer -> Senior Developer
I’ve had a number of titles over the years (“Web Engineer” – what’s one of those?? “Principal Consultant” – which means very different things at different consultancies).
As “just” a developer you don’t need anything to get started. A degree in a technical-ish subject (e.g. Computer Science / Computer Science with …) is useful, but your degree will not prepare you for the Real World. In fact, it was only when I started working at LMAX, nearly 10 years after I graduated, that I started using the real Computer Science knowledge I learnt back then.
I have friends who have started as developers or systems guys straight from school, and there are only a few companies who will discriminate against you for that.
I think the *most* important thing that set me up for my career was my undergraduate placement. Some companies offer paid internships / year-in-industry jobs, I did mine at Ford – I worked for them for three months between first and second year at uni, and I worked for them for 15 months between second and third year, taking a year out. My course was not a sandwich course but most universities (like mine, Sussex University) will allow you to take a break, especially for work.
I learnt far more about how to manage my career at Ford than I did at university. I learnt the difference between theory and practice; I learnt that being a great coder is not enough (sadly), you need to *show* people you’re great somehow; I learnt that you need quite a different discipline to be able to code 9:00-5:00 on a weekday rather than in the hours you feel creative. I was lucky because Ford takes investment in their undergraduates (and graduates) very seriously, so we were encouraged to make time to network, to meet people, to be mentored. There was very little in the way of formal training, but that’s how work usually is. Instead, they gave us the tools for building our careers – that usually involves connections with real people, not going on training courses and passing exams.
What are the prospects?
I graduated in 2001 and I’m still “just” a developer. I’ve been a team lead, I’ve been a consultant, I do evangelism, but in all that time I only ever had a formal promotion once, from Senior Consultant to Principal Consultant (it’s just the amount of money they can charge for you). But for all that, every job I’ve taken has also given me a pay rise. So you can continue with the same role but earn more, simply for being better at it.
I can do anything I want though – I can start my own company; I can be a contractor; I can go back to consulting; I can stay permanent but work at any number of companies (big/small, in pretty much every business domain you can think of); I can step back from the code and move into architecture; I can progress through team lead to management; I can move sidewise into business analysis or automated testing. The only caveat I would say though is that if you don’t drive your career in those directions, you will probably continue to be some form of developer for as long as you enjoy coding.
Making the leap into any one of those other areas needs you to try that out a bit (many agile teams, for example, let you pick up some responsibilities that aren’t coding), see if you like it and push that side of things on your CV or within your organisation. Sometimes this needs you to invest your non-work time in it, whether it’s by reading books, joining user-groups and meetups, attending conferences – anything which will let you find mentors in the area you’re interested in.
In your experience are you aware of any differences your role has between industries/sectors?
The biggest difference that I’ve noticed (and I mentioned this earlier) is being a developer in an organisation where their business is not technology vs being a developer in a technology company.
For example, at Ford I was in the IT department. Ultimately the company makes cars, and our job is to support the company in making high quality cars efficiently and sell as many as possible.
In a company like a startup where the technology is the business, a developer has a fundamental, direct, and usually visible, impact on the business – a new feature on the application, functionality working faster, improved usability etc.
To me, the difference between these types of roles is that at the end of the day, when you work in an IT department, you need to do what “the business” needs. There is scope for innovation if it will clearly improve the business, but you’re quite far removed from the people who actually give money to your company (e.g. customers who buy cars). When technology “is” the business, there is much more of a demand to try out new stuff and think of ideas which will drive that business.
Personally I prefer working for a technology firm, and not because companies with an IT department are bigger. I’ve worked for small firms where technology was an enabler but not the core business – these are cool because your users sit in the same office as you and you have scope for innovation, but it’s still not as cool as seeing the feature that you worked on being directly responsible for bringing in more customers/money/etc.
Reflection and The Future
What was it like coming into the industry?
This actually deserves a blog post on its own, so I can’t do it justice at all.
Being a programmer is not sitting in a darkened room coding alone for hours. It’s not munching pizza and talking geek, although actually that’s a perk I rather like if I can get it. It *is* being sat at a computer for 8 hours a day, which was not my idea of fun when I was 17 and on the basketball and athletics teams. But then, accountants, architects, marketing gurus, customer service people… they’re all chained to their PCs these days too. The only people who get a respite are managers, and that’s because they’re forced to sit in meetings all day.
I didn’t realise programming was collaborative – it’s a team game. I didn’t know that you need people skills to get on in this job. I had no idea that actually, because your output is limited to the little box on your desk, it’s *more* important than a lot of other roles that you go out there, make contacts, meet people, and look good at your job – whether that’s because you’re inside a massive organisation where the people who decide your promotion don’t even know your name, or if it’s because your small organisation needs you to go into the wider world to shout about what you do to bring in sales or new recruits. Most importantly, you need to do that to nab your next Perfect Job. Or Good Enough Job.
Do you have any thoughts on the future of your role/industry?
Not really. I like to wing it – if I’m not enjoying myself, or not learning anything, I try something else. There’s always new technology and always new companies. You’ll learn the next big thing when you need to, that’s what we get paid to do.
What I’m saying is, although I am aware of some of the current thinking about The Next Big Thing in technology (e.g. cloud, functional programming, other JVM languages etc), I don’t have a view on where the industry is going or plans on what to learn next to future-proof my career. I prefer to let my current role determine what I’m going to focus on, rather than learn the next fashionable thing. That’s not to say that’s the correct thing to do, it’s just that personally I think technology changes so much, and the requirements of your current role can change so rapidly, that it’s a full-time job to stay current let alone worry too much about the future.
But that’s my personal approach. I guess it doesn’t stop me getting a feel for trends, by attending conferences, being part of user groups, and reading blogs. But I don’t have any clear thoughts on what the future might hold for me or for the industry, I’d rather deal with it when it gets here.
Once upon a time Hibernate was the Next Big Thing. But I’ve managed twelve years of professional coding without ever having to use it (purely accidentally). I’m glad I never used my own time to learn it, because that would have been a waste of my precious spare time. But I do know what it is, what it does, and why you might want to use it. That’s enough for me.
What advice would you give someone entering your industry?
I wish I knew earlier that all jobs are not created equal. My Java Developer job at Ford was very different to my Java Developer job at Touch Clarity. Interviews and probation periods are for both you and the company – you’re there to see if you want to work for them. And do not be afraid of moving -there’s always another job, another thing to try.
Have you come across anything or anyone that has helped you move forward in the industry?
Yes, lots of people. Some are colleagues I met along the way, some are people I met at the LJC, some are friends of friends. Books, blogs and conferences have also inspired me. People, whether they’re your peers, mentors, or people you are mentoring, are more important to your career than any technology or skill you learn.
Apr 2011 – Present: Senior Developer, LMAX Ltd
Jan 2011 – Apr 2011: Senior Consultant, ThoughtWorks
Feb 2009 – Jan 2011: Developer, LMAX Ltd
Oct 2008 – Feb 2009: Senior Developer, BSkyB
Jul 2008 – Sep 2008: Travelling in the US
Feb 2006 – Jul 2008: Principal Consultant, Detica (formerly Evolution), London & New York
Nov 2005 – Feb 2006: Business Application Engineer, Egg Banking
Apr 2004 – Nov 2005: Developer, Touch Clarity
Mar 2002 – Apr 2004: Analyst/Developer, Ford Motor Company
Jun 2001 – Feb 2001: Web Engineer, Common Purpose
Jun 2001: Graduated University of Sussex, Computer Science & Artificial Intelligence, BSc Hons (1st Class)
Sep 2000 – May 2001: Analyst/Developer, Alpha Thames Ltd (part time contract during third year uni)
Jun 1999 – Sep 2000: IT Undergraduate, Ford Motor Company
Jun 1998 – Sep 1998: IT Undergraduate, Ford Motor Company
Oct 1997: Started University of Sussex
For more details of the sorts of roles I’ve had, feel free to check out my linkedIn profile: