James Bowkett is a software engineer with over 10 years experience of working in small-medium software houses and consultancies dealing with systems ranging from real time pricing to fraud detection in retail banking transactions. He has a BSc in Computer Science from Sussex University and for the last 4 years he has been the main engineer at a startup hedge fund, spending a large portion of his day coding and making the tea.
Title – What is your job title?
We’re too small to have formal job titles, if I had to pick one, it would be Software Engineer/developer and Systems Administrator.
What is your role about?
I was the first employee at a small hedge fund. I’m responsible for engineering/architecting our software platform and services and also for keeping the servers and batch processes running, and everything inbetween including testing, debugging and release management. Mostly I spend my days designing and coding on my own, I know the broad direction the software needs to take so I’m pretty much left to my own devices to fulfil those business goals. We’re a small company (three people, including me), so we have to be able to change direction quickly, as a result, the software needs to be able to change direction quickly, so it has to be designed in such a way that components can work together easily, so we use good OO design principles (e.g. dependency injection) and the lighter agile methodologies (e.g. continuous integration with Maven/Jenkins, test driven development using JUnit and JMock).
What are the best/most positive parts of the job/industry?
I have the freedom to code how I want to and to use any toolkit that is appropriate. That said, one has to ensure that current and future functionality can still be delivered as we don’t have budget to spend time on coding anything that won’t be used, or that will become a maintenance headache.
Working at a startup is great though, you get to wear many different hats – last week I was spec’ing a new server and then this week I was shifting furniture around the office!
What are the negative parts to the job/industry?
If you work for a startup, you have to accept that you’re not going to have the same access to resources as you would at a larger company, there won’t be a dedicated training program, or budget for the latest piece of kit and this can get quite frustrating. Also, there’s not the same job security as in a larger company, when we first started, we were subletting office space from an adult education college, and we came in one day to find that the building’s owners had changed the locks! Situations like this (or occasional cashflow problems – I’ve heard stories of people in other startups getting paid late) can certainly be unnerving, and they’re not for everyone.
What is the standard career path/qualifications?
I think people find themselves at startups through all manner of different routes. I ended up here because I had worked with the founder previously, and we bumped into each other at a company reunion. I think the main qualification is that you are someone that knows how to get things done (see Joel on Software on getting things done). My background is that I have a computer science degree and served time in different roles from junior software engineer, to technical lead, which seems to be a reasonably standard career path in any department doing software development. As for the hedge fund side of the business, for us, my lack of knowledge in this area wasn’t a problem, however I think a more usual approach in some of the larger, more famous funds would be for someone to first get exposure to finance before they are welcomed into a hedge fund. This would often be done on things like graduate training programs in an investment bank, or perhaps an internal transfer to a trading department, I’ve found that the more senior you get, the more difficult it is to find an employer that is willing to train you on business skills (and “finance” is a massively complex subject), as the more they are paying for someone in terms of salary, the more they will want and expect that person to come in and start being able to talk to their business leaders in their own language.
What are the prospects?
For my role as a startup developer – who knows! That is one of the main things I love about working at a startup, you just don’t know where you’re going to be in a few years time, it all depends on the direction the business goes in. What I’ve also found in working at smaller companies, is that the management are usually very amenable to people trying out a role, or cross-training into another role, I’ve seen people start out as developers and move into project management, department management and product management. Working at a smaller company, you are quite often able to set your own goals and (if it’s a great company) work with your managers to help you achieve those goals.
In your experience, are you aware of any differences your role has between industries/sectors?
There are definite differences between working as a software engineer at a startup to working in a more established company (say, older than 5 years), mainly, (depending on the company, of course), the access to resources would be much greater. In smaller companies it’s a lot more likely that you will be asked to do things that are bigger than your level of experience or skillset, that said, those achievements are more likely to be recognised.
There are also differences between being a developer where the end product’s users sit in the same room as you, and the end product gets shipped on a CD somewhere else. When your users are in the same room, you are far more answerable for your own design decisions (and mistakes!), because the impact is more visible, and therefore quite often has a tangible cost associated with it, so there is far more responsibility and accountability.
Reflection and The Future
What was it like coming into the industry?
Once I graduated, I found moving into the software industry unsettling, because I thought that I would be asked to do things beyond my capability and I thought I might flounder. This turned out to be true, however, I didn’t flounder because I didn’t appreciate that I would surrounded by bright people that would help me figure out some of this stuff. Moreover, this has remained a theme throughout my career, it’s one of the things that I now enjoy – when you’re constantly being challenged, it forces you to keep on learning. This has helped me enormously with working at a startup.
Do you have any thoughts on the future of your role/industry?
I think the software industry has definitely changed over the last few years, when I came into it, it seemed there weren’t very many smaller software houses out there (at least not in London), because a lot of development was going offshore. I think that trend has declined, with a lot of big companies bringing development back onshore because they need people not only in the same timezone as the business units they serve, but also in the same geography, so they can walk over and speak to that person if there’s something they don’t understand – email and instant messaging will only get you so far. Also, I think the “app” markets (Android, iPhone et al) are changing things a lot as well, it has opened up massive consumer markets to single developers or small teams, and we are seeing lot more smaller development shops opening up on the back of this, meaning that if you want to stay purely technical, you can, whereas a few years ago, it seemed the main route was up into consultancy/management, now there’s a wider choice.
Hedge funds, and the wider finance industry, have been through a stormy couple of years, so I think because of the increased scrutiny they have come under, they will focus on being more professional with their software engineering practices. This is following a wider trend in the software industry, it seems there is – quite rightly – a heavier focus on methodologies and tools to help make software production more deterministic in terms of bugs and timescales.
What advice would you give someone entering your industry?
I landed my first job on the back of an internship in the summer between my second and third year, so I cannot stress strongly enough that internships are a great idea, and well worth investing the time to find one. If nothing else, it gives you a feel for what it’s like to work with software every day, and helps you realise what you might like and not like about the industry/role, before you commit to a full time job, so gives you more context when you’re applying for full time jobs once you graduate. An internship also gives you more to talk about when applying for jobs once you graduate, and sometimes the internship itself turns into a permanent job offer. The GDC is a great place to start when looking for internships, as they maintain a list of companies and available internships.
In terms of skills, I think it’s important to realise that staying in a development role will mean that you constantly have to learn new tools and practices. One of the best things you can do is learn how to use your IDE (Eclipse, Intellij, Netbeans) effectively, they are extremely powerful and take care of a lot of the boring bits of software development.
In terms of working within the software industry, something that took me a while to realise is that there’s a difference between companies where software is the main source of revenue, and ones where software is a support function to the main source of revenue. It has knock-on effects for the culture of the company and how engineers are paid and rewarded for their work. Hopefully hedge funds bridge the gap a little as a lot of them use machines and algorithms to make the trading decisions, so software is more fundamental to their bottom line.
Have you come across anything or anyone that has helped you move forward in the industry?
Being a developer without a team, communities and online groups have been very helpful, notably stackoverflow.com. Also, I often read the Joel On Software and Coding Horror blogs, because they put technical comment in a business context, which I think is something that distinguishes a good developer from a great engineer.