About GDC Careers
GDC careers is a sub project of the Graduate Developer Community. Our aim is to help graduates and undergraduates with their career planning, to discover new roles or industries they may not have considered and to help them get a better feel for what it’s like to put their computer science (or similar) degree to use in a particular industry.
One of the major projects we have created is a series of career interviews with different professionals within the IT industry, with the aim of passing on things they wish they’d known when they started out their careers and hopefully giving some pointers to people just getting started. These interviews are with people that have been in the industry for a while or who may have taken the road-less-travelled to arrive at their career goal.
One theme we have found from speaking to different people is that there is no one standard career path, to highlight this, why not start with a mindmap of different (and by no means, exhaustive) routes for software careers
James Bowkett and Barry Cranford
Trisha Gee – Software Engineer
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.
Introduction
Title – What is your job title?
Senior Developer
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.
Career Path
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?
Yes, definitely.
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.
Experience Timeline
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:
Charles Wicksteed – Architect
Charles has over 30 years experience in consulting, he started out as a developer, moving between various projects before becoming an architect. The projects he has worked on have varied widely; starting out on developing in assembler and writing low-level device drivers for railway signalling equipment to more recently being an architect on large government projects.
Introduction
Title – What is your job title?
Technical Architect
What is your role about?
I worked for a software house, designing large software systems for clients. Each system is built as a project, lasting perhaps 18 months, where we go through the whole lifecycle: specify requirements, design the system, write the code, test, integrate, test again, train the trainers, put into service, support. A large project may have over 100 people on it, though not all developers. Sometimes I would join or leave a project part-way through — typically a project has more staff in the middle. At specification time, if I am not actually writing the specification, my work involves doing feasibility studies and starting the design, and monitoring the requirements to make sure that they are clear and not impossible to implement — checking that the chosen software packages will do what is asked.
The design is done iteratively, adding more detail as we go. The exact method of documenting the design tends to vary from project to project, depending on the views and experience of the senior staff (both client and supplier). It is a mixture of descriptive text and diagrams. The next stage is writing the code and unit tests. I tend to get given peripheral tasks, as I am a bit expensive to be given standard coding. But for peripheral tasks I am good value because I can be relied upon to complete the work with minimal supervision. For example I spent about 8 weeks in one project generating test data for performance testing. Then we integrate the software in staged releases, and get a whole system working. Again I sometimes do peripheral tasks like once sorting out the configuration of the proxy servers. Then the developers tend to move onto a new project, but some of us stay to nursemaid the system, diagnosing problems and fixing them.
At the detailed level the work is varied: sometimes sorting out a mess created by someone else, sometimes doing constructive work. There is a lot of learning — the requirements (sometimes hundreds of pages), how the planned system works, how the products work which make up the building blocks. The output from your work is almost always a Word document as well as code. We are team based, but you usually do the individual tasks on your own.
Almost all projects were either Microsoft-based or Java-based. I went down the Java route. I used Perl for ad-hoc programming.
What are the best/most positive parts of the job/industry?
Doing a design and writing code and seeing it all work. Working on something which is going to be useful in the real world. Working on something large.
You get a lot of variety in a software house, moving from project to project. There is a lot of design work as well as programming, and you may be using several programming languages. The work is always challenging — if it starts to get repetitive, you write a program to make the computer do it.
What are the negative parts to the job/industry?
I never like doing unnecessary work, eg spending twice as long getting something done because a foolish decision was made previously. We all make mistakes, but it still annoys me. For example senior technical architects who know less about the technology than I do, and don’t get on with the things which really need doing, and don’t admit what they don’t know. Poor requirement specifications caused by an unwillingness to accept that they were taking the wrong approach. Incompetent staff generally. Having a whole project scrapped, though I was lucky that this didn’t happen to me very often: in one case I was pleased it was scrapped, as the main architect was going in completely the wrong direction.
Career Path
What is the standard career path/qualifications?
In my company there was a tradition of having no formal job titles. There was no formal promotion, just a pay rise most years. You only needed a job title for your business card for external use, and in later years they were dropped on cost grounds for staff who were not primarily customer-facing. Generally a project is staffed up with a bunch of people in a pyramid, ie more people at the lower costs, with a range of skills. The people are assigned as required to tasks as the project progresses. You often learn a new skill rather than getting someone in from outside, because you need someone who understands the system being built, which is often very complicated. I called myself a Technical Architect eventually as that was the generally accepted term for someone in my position. I never got a qualification after my BSc.
A lot of programmers become team leaders who manage a team of say 5 people, and do technical tasks as well. More senior managers manage full time. There are many other roles, eg requirements, standards, managing the reviewing process, testing, development environments, training, security, purchasing, hardware.
What are the prospects?
Sometimes it was difficult for me to get onto a project because I was too expensive as a developer, but not experienced enough as an architect. You often do better going into management if you have the skills and enjoy it; I had neither. But in later years I built up a reputation and I was kept fully employed, though earning rather less than others of my age.
In your experience are you aware of any differences your role has between industries/sectors?
I don’t know — I stayed with the same company too long.
Reflection and The Future
What was it like coming into the industry?
I started as a hardware engineer, and it was difficult to find out at interview time what I would be doing. The managers who interviewed me didn’t know where I would be deployed, and couldn’t commit themselves. But I had a good first year. The project was half way through, and they were commissioning the prototype hardware — I held the oscilloscope probe and the senior engineer looked at the circuit diagram and the oscilloscope screen, and told me where to move the probe “The input data looks OK, check the clock on pin 6, yes that’s OK, now the output on pin 10, no that’s stuck at zero” then we would pull the board out and get the magnifying glass out and remove a solder blob. This was a good way of seeing real example designs that worked.
Then I moved into writing specifications, and then into software, almost entirely self-taught.
Do you have any thoughts on the future of your role/industry?
Software houses always play down the amount of bespoke code in a system, because of the perception that bespoke code is more expensive and less reliable than COTS (Commercial off the Shelf) products. But there is, in my experience, always loads of coding to do. So there will always be a place for programmers in one-off systems as well as software products.
What advice would you give someone entering your industry?
My advice is to do what you enjoy. Keep your ears open, make friends with everyone, and you can move in the direction that suits your skills and temperament.
The main mistake I regret was in my last year at university: the professor suggested that I do a special project for/with him, and I turned him down because I thought it would be easier to get a top mark with a taught course. I didn’t realise that the professor would have given me a good mark whatever happened as long as I made an effort. But I expect I would have gone into industry anyway (the alternative was to be an academic).
Have you come across anything or anyone that has helped you move forward in the industry?
Some of my colleagues were inspiring. But mainly I just learnt about the things that I found interesting, and always tried to produce good work.
Martin Anderson – Architect
Martin Anderson has worked in IT for the last 13 years across industries as diverse as online advertising and news to investment banking and gambling. He came to the industry from a slightly unusual direction since his first degree was a BSc in Physiology. After a brief stint for a pharmaceutical company he went back into academia and it was during his PhD, which involved the computerised analysis of EEG’s, that his interest in computing really took off.
Title – What is your job title?
Software Architect
What is your role about?
The best description I have ever read of what an Architect should be can be found here. The main responsibility of my job is that I am expected to cross the divide between technology and business while being expected to be able to answer all the technical questions. Principally I am a developer but my responsibility to be aware of so many different projects makes it difficult to directly contribute code very often.
What are the best/most positive parts of the job/industry?
That it combines the best of the worlds of startups and big industry. The problems we have to solve are generally the really interesting ones: how do you offer the best service to your customer while balancing the demands of performance, scale, security, regulators but we get to solve them in a way that is not normally seen in a major company.
Your Saturday afternoon becomes very different when you realise that you have up to 4 million customers betting many millions of pounds on your applications and to do this they are hammering them to pieces. For example, we see up to 88,000 requests per second across the entire betfair.com estate at peak times so your application can’t just work, it has to be fast, reliable and deal with load at internet scale.
What are the negative parts to the job/industry?
How changeable things can be. The industry is at the whim of regulators so some of our solutions have to make compromises that you would never design in if you had complete freedom to do it your way.
There is also the fact that some people see the gambling industry with a slightly negative cast. It’s not for everyone but what is?
What is the standard career path/qualifications?
The standard technology career path at Betfair is: Intern – Associate Developer – Developer – Senior Developer – Technical Lead/Principal Developer/Software Architect
As far as qualifications go, we do have a graduate scheme and like most large companies we prefer graduates and respect the amount of effort it takes to get degree but given that some of our best employees did not go to university (or in some cases not even finish secondary school!) we also look for other signs that we think signifies quality.
What are the prospects?
From a company perspective they are as good as you want them to be! Betfair is one of the UK’s dot.com sucess stories since it is just over 10 years old and still expanding: we currently serve 140 territories in 17 languages and this will only increase. We deal with cutting edge technologies at a scale that most companies can only dream of and this experience makes you very employable.
From the more general perspective of an Architect, they are also very good. To get to the role normally requires several years exposure to how things actually work. Not just the code or development knowledge but also the knowledge about your hardware and your network can be just as important. The business knowledge is critical too since you have to be able to understand the hot button topics of your company. Luckily the types of issues tend to be similar across all companies: performance, scale, ease of use, cost of development v maintenance, reliability and disaster recovery, compliance, audit and regulatory to name a few of them. This makes architects very valuable for many businesses.
In your experience are you aware of any differences your role has between industries/sectors?
The role of Architect can vary hugely and not just from industry to industry but also within different sized companies within the same industry. In the worse case scenario, you have the ‘Astronaut Architect’ who make technical pronouncements from upon high without actually working closely with the developers who have to turn the abstract into application. In the best case you have Architects who are directly invested in the success of a project, from concept to cash, and who work side-by-side with their developers. The role of an Architect is that of an influencer but in a technology company that means he/she can become very powerful.
What was it like coming into the industry?
I was several years out of University before I started working in IT so I had no illusions about what I was getting myself into. For me the worry was that as a self-taught programmer I would be missing chunks of knowledge about development. I found that the enormous knowledge area of development meant that everyone is far more collaborative than competitive and this meant that I could contribute immediate while being made aware of what I didn’t know and what I would have to learn. I love what I do with a passion and wouldn’t want to do anything else – except possibly be the next David Attenborough!
Do you have any thoughts on the future of your role/industry?
Cloud is taking centre stage more and more but this is more a reflection of the combination of two things – performance/scale and flexibility. As the industry becomes more mature we now have to delivery faster and to a wider audience that ever before. Cloud allows us to do this in that it allows simple prototypes to be rolled out to a platform that is inherently scalable should the application be a success.
Dealing with teams in multiple locations and in multiple timezones is another topic that is important and becoming more so. The world is a smaller place than it used to be and getting smaller. We are also in competition with a larger population of developers than ever before and in a knowledge based industry like ours, the smartest and hardest working will win.
What advice would you give someone entering your industry?
Follow excellence. It doesn’t matter what you are doing if you are doing it the best it should be done. This more than anything else will define your career.
You should never feel that you become stereotyped as a certain type of developer – it’s up to you to take control of your career and you do that by learning. You should have a hunger for new knowledge and everyone should have a list of things that they want to try or learn.
Have you come across anything or anyone that has helped you move forward in the industry?
Having a great mentor is a must. I’ve been lucky in that I’ve met several people that have taught me so much. Also, you should never underestimate a constant drive to improve.
On a practical note – nothing beats getting involved. Get a github account, fork someone else’s code and get stuck in. Start contributing to open source even if it is documentation but get in the game. Not only is your CV improved for it but you as a developer are much improved for it.
Al Davidson – CTO
Al Davidson started coding at 8yrs old, and has been doing so professionally since graduating in Physics in 1996. He specialises in web applications, covering areas as diverse as social software, e-commerce, machine learning, network analysis, and natural language processing. He’s led and grown dev teams for various agencies and startups, and is currently CTO of iTrigga.com
Title – What is your job title?
Chief Technology Officer, usually abbreviated to ‘CTO’.
What is your role about?
The requirements of the job vary massively depending on the company you’re in, but you could probably sum it up as being the public face of the tech team to everyone else – both internally (the board, the investors, the finance people, the sales team) and externally (the customers, job applicants, the press), so you need to be able to speak the language (and DSLs) of the other areas of the business as well as your techies. You’re responsible for everything that the tech team does, and all the tech decision-making, so you need a broad knowledge of everything from web development to database scaling and linux sysadmin, plus the people skills to be able to manage a team. I’m in a small startup, so I still get to do a lot of hands-on tech work too. In an average week I probably spend a total of 2 days coding features, maybe a day on infrastructure work and tech planning or research, a day speaking to clients, a day planning and managing the team and our projects, and the rest is taken up with internal meetings.
What are the best/most positive parts of the job/industry?
There is always, always, something new to learn, and the nature of startups means that it attracts a certain kind of person – someone with an entrepreneurial streak, who enjoys testing themselves to see how far they can push their limits. In contrast to large companies with hundreds of developers where you can feel like a very small cog in a very big machine, in a startup every day your work has a directly visible impact on the fortunes of the company. Your mistakes are painfully visible, but the triumphs are entirely yours too. When you do a good job, it has an equally visible positive impact on the company. Decisions have to be taken fast, and the whole direction of the company can change frequently until you find a business model that works. I love building and growing teams, and the friendships you make in a small team with big ambitions, amongst people you trust and respect, will stay with you for a long time to come.
What are the negative parts to the job/industry?
In startups particularly, budgets are incredibly tight. You virtually never get a training budget or any structured skills development, and there is often no-one to turn to if you get stuck – you constantly have to think on your feet and if you don’t know how to do something that urgently needs doing, you just have to find out – and you’d better be a quick learner! But I kind of like that, it keeps me on my toes and stops me getting bored. You need to be highly motivated, and anyone who says ‘..but it’s not part of my job description to do that!’ does not belong in a startup. It’s also possible for sucessful startups to grow too quickly – I worked at Freeserve in the first dotcom boom, and every cliche that was going round on joke emails about “you know you’re at a dotcom company when…” was painfully relevant. My team had 4 developers and 8 managers, and with repeated takeovers I sat at the same desk for two years and worked for four different companies. I went back to small companies after that and have never gone back.
What is the standard career path/qualifications?
I arrived at a CTO job through a random walk of increasingly senior developer roles, and I kept getting the senior dev roles through consistently having strong ideas about how things could be done better. In large companies there can sometimes be a “them and us” attitude between the tech team and the other areas of the business, and techies can sometimes have little respect for their managers, but this mainly comes from a belief (misguided or not) that the manager would not be able to do the technical job – so having worked my way up from junior dev helps a lot. I remember very clearly the point where I realised I’d become a manager, when I got to Friday afternoon feeling exhausted from a frantically busy week, but I hadn’t fired up my IDE once – there was no denying it by that point!
A CTO needs to have a good understanding of many different areas, from the very technical through to the very commercial – business/finance and industry trends, plus you also need to be able to understand your clients businesses. So a varied background is a big plus. A few years at at least one development agency, where you get exposure to many different clients and business models, is a great way to learn.
What are the prospects?
Everyone in the startup world is hoping for The Big Exit – where your company is sold or floated for a big pay-off, and your hard-earned share options can be cashed in for a big lump sum payoff. However, for every Google or Facebook there are hundreds or thousands of small startups that didn’t make it and went out of business or just stagnated into anonymity – so make sure you take your jobs for the right reasons and enjoy your work in its own right, treat the prospect of a lucrative exit like entering the lottery rather than a certainty or even a likelihood, and you’ll have a great time along the way whatever happens at the end.
In your experience are you aware of any differences your role has between industries/sectors?
In startups, particularly web / tech startups, the CTO is able to (and/or has to) stay more connected to the technology than in larger companies or other industries, where it is a much more “strategic” and/or financial role.
What was it like coming into the industry?
I got my first coding job on graduating in 1996, and was hired specifically because I studied physics and hadn’t studied software engineering. The boss believed that trained software engineers needed to “unlearn” a lot of what they’d been taught in university in order to adapt to the “real world”, and that physicists had more transferable problem-solving skills. I don’t know if I’d necessarily agree with that these days – it’s a long time since I was at University, and the advent of Big Data has brought academic CS rigour to the fore recently – but I would say that the ability to get things done and get things finished is rarer than you might think. I’m now at the stage in my career where some of the tech problems I’ve tackled in the last few years have made me wish I’d had some more formal software engineering / comp-sci formal training, but it took me ten years to get to that point. The most useful lessons I learned from my first job where things I didn’t even realise I’d had to learn until reflecting back much later – general business things like how you’re expected to behave at work, how to take minutes of a meeting, how to handle difficult customers, how to cope with pressure, and how to get someone to tell you what they actually need from this system you’re building for them rather than what snazzy UI tricks they saw on some website and really want on this internal invoicing system…
Do you have any thoughts on the future of your role/industry?
The hot skills right now are mobile app development, “new-wave” front-ends (e.g. HTML5, CSS3, and Javascript applications) and Big Data techniques like map/reduce. However, they are tools not ends in themselves, and no one solution is right for every situation.
The state of the industry right now is similar to that of the first dotcom boom, around 1999 – the rapid growth of new models and technologies has led to a “democratization” of the sector, where it’s been possible for small companies and one-man-bands to move quickly and outpace the larger companies. It’s perfectly possible at the moment for a single person to make a good living writing, say, mobile apps in their bedroom, but this wasn’t always the case and it may not be for too much longer as the bigger players catch up. Also we’ve had some recent big IPOs (stock market flotations) of companies like LinkedIn, to mixed results – the imminent Facebook IPO will be watched closely as an indicator of the health of the marketplace. But it’s certain that whatever happens economically, smart pragmatic tech people will always be in demand.
What advice would you give someone entering your industry?
Treat all people fairly and with respect, whatever you may think of them in private – it’s a surprisingly small world, people change jobs frequently, and the same names keep coming up again and again. It only takes a minute to gain a bad reputation, and unless you’re lucky you might never lose it. Don’t try and blag your way into something, you’ll be found out quickly unless you’re very smart – be honest about your skills and limitations, sometimes “I don’t know (…yet!)” is the right answer.
When I’m hiring developers, the most important thing to me is not “what skills do they have?” but “do they think in the right way?” – it’s far easier for a good coder to pick up a new language than to teach someone who knows language X how to be a good coder. Don’t get to attached to any particular methodology or approach, as the community changes direction frequently and today’s hot ticket will be tomorrows legacy code that everyone hates. Try different approaches and iterate the ones that work.
Ultimately the best way to learn is through doing – someone who has written and released their own project, whether it’s a small library or a mobile app or even just a hand-coded web site is always going to stand out over those who haven’t – so get coding! Participating in open-source projects is also great experience. Test-driven development is a very good habit to get into sooner rather than later, and I would highly recommend internships as a way to learn how things are done in industry and why they are done that way, along with how to work as part of a development team.
Have you come across anything or anyone that has helped you move forward in the industry?
Two great books to read are Joel Spolsky’s “User Interface Design For Programmers” and Steven Skeina’s “The Algorithm Design Manual”. But most importantly, read the blogs relevant to your chosen discipline, blog and/or tweet about your interests and the tech problems you face, and ask intelligent questions. Be interested in everything, and you’ll be surprised at the connections you make.
Chris O’Dell – Software Engineer
Chris O’ Dell is a Software Engineer with 8 years experience favouring server side web development such as REST APIs and Services and who is passionate about developing clean, maintainable and tested code. Chris has a BSc in Computer Science and is a member of the BCS and the ACCU. You can find her on Twitter @ChrisAnnODell or her (“rarely updated”!) blog at www.chrisodell.me.uk
What is your job title?
We have a very flat structure at 7digital and believe that working as team removes the need for having individual titles. So, I could call myself whatever I like, but I’d probably choose Software Developer.
What is your role about?
I’m part of a team of 8 people working on 7digital’s public API. We work in an agile manner aiming to pair program as much as possible, using a TDD approach. We break down our work into the smallest releasable feature (also known as a Minimum Marketable Feature) and use a Kanban board to track progress. Each morning we have a 15 minute stand-up where we talk through the items on the board, as a team, and update each other on our progress. At this point, we can raise any problems we’re having and even swap pairs with the aim of spreading the knowledge of implementing the feature throughout the team. The pair working on a feature will analyse the requirements and note down the Acceptance Criteria for the work to be considered complete. Then, we go through a Ping Pong Pair Programming pattern, where one person will write a test, based on the Acceptance Criteria, and the other person will write the code to make the test pass. It can be very demanding to work in this manner, but we found that the overall quality of the code produced is far higher and far less likely to contain bugs. We also have the build and deployment system fully automated, so on average we will release a feature to Live at least once a day. This makes us very responsive to change and also, as a developer, it feels good to see the changes you made going to Live regularly and having an impact.
What are the best/most positive parts of the job/industry?
As I stated above, I enjoy making an impact; seeing the changes I’ve worked on being useful to others using the API. Also, I enjoy the fact that a programming role encourages you to keep learning and pair programming has taught me a lot about how others work and think – there’s a lot you can learn from you teammates and a good discussion is always welcome. I also enjoy the ability to be able to tinker with code. There’s so many Open Source and cool technologies out there that you can easily just pick up and start playing with – in fact, I find that I want to play with many that I often don’t know where to start!
What are the negative parts to the job/industry?
There is a tendency in the industry to see software development as something that you can just chuck more people at and crank out solutions, no matter the cost to quality and time and often resulting in burnout – the infamous Death March project. I’ve had a role just like this, it was one of my first development roles out of Uni and hence I was fresh-faced and eager to impress. The timescales of the project were woefully optimistic, the specifications lacking and allowing for huge amounts of scope-creep, and a constant threat from “above” that if the project failed that we’d all be out of a job. I remember working 80 – 90 hour weeks, including weekends and overnights all in the vain hope of meeting the ludicrous deadlines. It’s a strange position to be in; you can see the failure happening, everyone around you can, but you are urged to push on, no matter the cost, even bribed with promises of bonuses that never materialised. Before long you are in it to help out your teammates (how can you go home and leave them working?) and this then reinforces to the management team that this dreadful pattern of working is acceptable. We worked on the first project in this manner, and a second one, by the time the third project came round the whole development team had quit. It took me months to once again enjoy coding, but I am far more aware of the warning signs of a Death March project and will not allow myself to be in that position again.
What is the standard career path/qualifications?
I think people can get into Software Development with all kinds of backgrounds – it’s the passion which is important. I personally started off with the “standard” route; I took “A” levels and then a BSc in Computer Science, but my first role was not a development one but a junior project management role. It was not what I wanted, but I was happy to have a job straight out of Uni. My time in that role reaffirmed my desire to be Software Developer and soon enough I moved into the Development team in a Junior role. My Team Lead was helpful and he took the time to get me up to speed with programming in a commercial environment. I also read books, blogs and travelled down to London regularly to attend User Group events – I learned everything I could and I believe it is this desire to keep learning and better myself which enabled me to get the role I have today.
What are the prospects?
There is a strange perception that in order to progress, one must move out of development and into a management role of some sorts (either people or projects), but I feel that this is incredibly wrong – programming is what I love to do and it is what I am good at. I could of course move into a management role, but I have no desire to. Alternatives, are to continue to gain more skills; a deeper understanding in technical areas and become more of an “expert”. At 7digital, there is no pressure to move away from what you are good at, in fact becoming more skilled is the preferred way to progress.
In your experience are you aware of any differences your role has between industries/sectors?
One big difference is our ability to release often. As a web based client, we can push out changes with great regularity, with no need to package up the product and send it out to users. Also, our clients are very varied; from bedroom developers using the api to hack together a mashup application, to commercial users such as Samsung using our API to build their app into a wide range of mobile devices and we interact with both directly.
What was it like coming into the industry?
I didn’t know what to expect, and as I stated above, my first role was not in Development, but the advantage this gave me was to be able to see the role of a Developer in the industry before I moved into Programming. My first year as a Programmer was filled with a lot of learning and re-learning. I knew all about Object Oriented development, but I had no concept of Design Patterns. I could write code, but knew nothing about Source Control or how to effectively work in a team on a single project. I was afraid I would get it all wrong, afraid I would break something, or accidentally delete the production database (I’ve actually done this once – so, ensure you have backups!), but I had a supportive team and a desire to learn and so I read everything I could on the subject areas I was missing and soon enough I was a productive member.
Do you have any thoughts on the future of your role/industry?
There is a lot more scope in the industry these days for individual developers to create Apps, such as iPhone or Android apps, but I personally feel that there is a lot to be gained from working in a team. Also, Open Source is becoming a bigger part of everyday development, with more Open Source tools being used in commercial development.
What advice would you give someone entering your industry?
If I was to enter the industry today I would try to take advantage of all the resources out there to learn all of the bits that a degree does not cover (design patterns, pair programming, TDD, source control). There is so much information and code out there for people to look at that they can try to reduce the big learning hurdles in moving from Uni to the industry and feel far more confident in joining a role. Also, I would look for roles specifically aimed at Juniors with mention of mentoring, or at least pair programming which will get you up and running rather quickly. Also, take advantage of local User Groups – go along to learn new areas and to make contacts. Also, watch out for Death marches!
Have you come across anything or anyone that has helped you move forward in the industry?
The London .Net User Group exposed me to TDD and other technologies and are well worth attending. Also, the ACCU are a great group of developers who have generally been coding for a long time – they are primarily C++ coders, but I find it good to have a different perspective, which is another point I want to raise: try not to get sucked into any echo chambers. It is easy to find a group of like-minded developers and believe that theirs is the only way to view the world. Join groups using technologies and languages you are unfamiliar with, stay open to new (and old) approaches and try to read as many viewpoints as you can.
Jack Shirazi – Java Champion
Jack Shirazi is the founder of fasterj.com which publishes the popular JavaPerformanceTuning.com website and newsletter; he’s also the author of the successful book “Java Performance Tuning” and is an elected Java Champion. Prior to his career in Java Performance, Jack trained in Theoretical Physics and was a published researcher in the field of protein structure prediction.
Title – What is your job title?
I don’t have a formal title, I can choose whatever title I want as I run my own business. I’m considered to be a Java Performance Expert. I’m also a Java Champion, which is a formal accolade; you have to be voted on to the Java Champion list by Oracle. There are a few hundred of us Java Champions globally.
What is your role about?
I can choose where to focus my skills, and that changes over time. For a while I focused on short-term consulting, which meant you have to use your contacts and your online presence to generate customers who want you to consult about various aspects of Java performance: it can be very low-level implementation, or it can be troubleshooting their current performance issues, or reviewing the design and architecture of their systems. For a while I focused on training, which means building your own training courses and advertising to gain customers and provide those courses.
Right now I’m focused on long-term consulting assignments, which means I will be at a customer site from half a year up to several years, working on the performance of a specific project and seeing it through to the deployed production system. That tends to involve a lot of performance monitoring of the system, a lot of performance testing (it’s part of non-functional testing that is increasingly recognised as crucial to the success of a project), and often tuning and troubleshooting. I also spend a proportion of my time researching and writing for my newsletter (published every month without fail for more than ten years) and occasionally writing for other publications.
What are the best/most positive parts of the job/industry?
I love the troubleshooting and tuning – you have challenging problems which need all your skills and experience to figure out and fix, and then the outcome of seeing things running smoother, faster, smaller and trouble-free after fixing is very gratifying. Most software developers seem to prefer developing greenfield projects (i.e. helping build a system from scratch), but I love being thrown into already existing projects and fixing other peoples code. It’s probably important to enjoy that aspect if you want to be a successful roving troubleshooter – fixing other people’s code is quite different from fixing your own and many people find it difficult to get into. You need to be quite non-judgemental, it doesn’t matter about the existing code quality or whether or not you feel it
lines up to good coding practices, your only target is to fix it so it achieves the performance targets, leaving maintainable code.
My favourite issue is a concurrency bug in using HashMap which randomly results in infinite loops occurring. Because almost all developers use HashMap as their default map, and it is used so extensively in code, it can easily get used in multi-threaded code by accident (it is not supposed be used like that, HashMap is not thread-safe, you should instead be using something like ConcurrentHashMap). When this happens, there is a small chance that the concurrency bug will get hit, and it’s not obvious when analysing what is happening that it has been hit. I’ve fixed more than one production system where they were previously having to bounce a service because of occasionally hitting this bug.
What are the negative parts to the job/industry?
I don’t like the constant language wars we have in our industry, I have an opinion that you should use whatever is appropriate for the job, and the almost religious devotion to a particular programming language that many in our industry have is quite annoying. I also don’t like the wasteful way we keep re-inventing every aspect of the software industry. For example remotely executing procedures across machines has been re-invented again and again (RPC, CORBA, HTTP, REST, and those are just the most popular, there are hundreds of less popular ‘standards’).
On the “running your own business” side, don’t underestimate the amount of effort you need to put into generating business, doing the admin, avoiding messes. The buck stops with you; you gain the rewards of your own work, but you also have to deal with every aspect of running a business and that takes a lot of effort.
What is the standard career path/qualifications?
You don’t get to be an ‘expert’ in anything without first becoming very competent at it. There are no formal qualifications – when I’ve interviewed for people to do similar work as I do, I don’t care about what qualifications they have, I’m looking for an in-depth understanding of how and why programs are behaving and misbehaving. You need to understand which tools let you see what is happening in a running program; how to interpret the output of those tools to infer what is happening and why, and then understand how to test changes to fix the issues you identify.
My experience is that developers who are considered competent by their peers, and who have
worked for a while in some specific area, have been highly interested in that area, and are willing to focus in that area, are then capable of becoming an ‘expert’ in that area. To extend that to become recognised as an expert by more than just your colleagues, you have to then disseminate your expertise to many organisations, possibly by publishing written work that people read, or some software that becomes widely used, or some techniques that are followed by many in the industry, etc.
What are the prospects?
If you become someone who is considered an expert in any niche IT area, you can usually choose what you want to do. You can focus on training, consultancy, working for an organisation or for yourself, speaking at conferences, these and more options are all open to you.
What was it like coming into the industry?
I didn’t realise at any stage of my career what I was moving into. Each time I shifted up my career path, I was open to new options, and willing to take the risk involved – sometimes monetary risk, sometimes the serious risk that you might dead-end by not having relevant or recent experience for your next role. It can be pretty scary to just stop money-earning work and spend time developing something different (as I have done several times such as when writing my book, when developing training courses, etc.). My advice – always be open to potential new things, investigate them when they crop up, and be prepared to be adaptable. Sooner or later options come your way, and it’s better
to have the choice to choose that option should you want. You’ll only have the choice if you are open and adaptable and prepared to change.
Do you have any thoughts on the future of your role/industry?
In the medium term, the JVM is a fantastic platform to be working on, whichever language you might be using. I use Java. I often look for new languages because Java is not the ‘perfect’ language, but I haven’t yet found one that is better. When one comes along that is better, I’ll move to that language – I’m pretty sure it will run on the JVM though.
Information technology hosts the professions of the future, the use of software is only going to increase for the whole of this century. More and more, the software engineer’s job will be to integrate technologies that are available, to produce the precise solution needed for a given task. So you’ll need to know what’s available and how to combine things so they work to your will. Most software engineering will become more like engineering – the things you build will be mostly other people’s components which you slot together and then maybe 10%-20% of your own bespoke code to transform the components to what you need.
What advice would you give someone entering your industry?
My advice to those entering is to try and get competent in programming and understand how to integrate resources on the internet into whatever you are doing.
Have you come across anything or anyone that has helped you move forward in the industry?
Be willing to help out others without expecting reward – eventually this will come back to help you out one way or another. And keep yourself up to date by continually reading about what is happening in the industry and in your area of work and skills – I.T. is a-fast moving continually evolving industry and it’s important to keep your skills updated or you fall behind and become less employable over time.
Alex Darby – Games Developer
Technical Course Leader on Birmingham City University’s Gamer Camp scheme, Alex Darby, has over 15 years experience in the games industry as a programmer, and was one of the founding members of FreeStyleGames, creators of DJHero.
Alex has played a key role in the development of Gamer Camp (www.GamerCamp.co.uk), a postgraduate (MA/MSc) training scheme for aspiring game developers that simulates a graduate’s first year in the games industry. Due to start in September, the Pro version of the course is endorsed by the likes of Sony Computer Entertainment Europe, Rare, Codemasters, Blitz Games Studios and FreeStyleGames.
Title – What is your job title?
My official job title is Course Lead – Technical on Gamer Camp, which is delivered at the New Technology Institute in Birmingham (part of Birmingham City University). I have 15 years experience of working in the games industry, as both a programmer and a designer, and I guess that my role would map to somewhere between Lead Programmer and Technical Director if I were still making games for a living.
What is your role about?
Gamer Camp is the brand name for an innovative new suite of industry driven courses developed by BCU at the NTI that are designed to bridge the skills and, most specifically, experience gap between traditional higher education and the day to day work environment within the games industry. The focus of Gamer Camp is on “learning by doing” in a realisitic simulated game development studio environment – working to schedule to create finished game products on current gaming hardware (e.g. PC, iPhone, and PS3) from realistic briefs, within specified deadlines, as part of a team.
My role as technical Course Lead is to drive the design and delivery of Gamer Camp’s technical curriculum, and to mentor and assess the students on the Gamer Camp courses. Most of my time is taken up with the year long Gamer Camp Pro MA / MSc programme, but I am also heavily involved in the 1 month Gamer Camp Nano courses that we offer. Our aim is that a student who completes Gamer Camp Pro should have the same skillset and experience as a graduate who has been working in the games industry for a year.
What are the best/most positive parts of the job/industry?
The games industry is a very dynamic, innovative, and interesting industry to work in; the landscape of technology – in terms of both hardware and software involved – has changed radically in the 15 years I have been making games. It looks set to continue in that vein for the foreseeable future too; physical media such as DVDs seem to be on the way out, digital distribution and social networking websites have transformed (and no doubt will continue to transform) the way in which games are delivered and played.
Overhearing random people talking about how much they like a game that you worked on is a pretty great feeling.
What are the negative parts to the job/industry?
Like any hit driven industry the games industry has its ups and downs, I’ve been made redundant twice and worked for one company that went bust – and I’m one of the lucky ones! As well as a certain lack of job security, hit driven industries bring the threat of extreme overtime when pushing to meet deadlines for release dates (I once worked 200 hours overtime in 6 weeks) – an unpleasant, and generally unpaid, phenomenon that the industry has come to call “crunch”. However, to put that into perspective, I never once in 15 years woke up and thought “I can’t face work today”.
What is the standard career path/qualifications?
For programmers the typical way into the games industry has been a traditional Computer Science degree. However, it seems that the vast majority of Universities are no longer teaching C++ – by far the main language used to make PC and console games – as a core component of their CS courses; and so more and more “Games Programming” courses are springing up. Typically the basic career progression for a programmer would be graduate -> Junior Programmer -> Programmer -> Senior Programmer.
What are the prospects?
To move beyond Senior you would typically have to move into management (e.g. Lead Programmer -> Technical Director) or become a what most companies call a “Principal Programmer” which broadly translates to “Needs to be more highly paid than Senior in order to be retained, but not interested in Management”. It is entirely possible, though defintiely not common, to become a freelance – typyically freelance programmers in the games industry have exceptional skill at some monumentally crucial part of development – e.g. debugging release build crashes from disassembly and registers.
It’s also entirely possible to start your won video game company – and with the current digital distribution boom and the rise of very cheap high quality game making tools like Unity 3D, Torque 3D, and the free version of the Unreal UDK this is increasingly becoming the way that people decide to take their careers forwards.
Reflection and the Future What was it like coming into the industry?
I had no idea what I wanted to do when I was young – other than that I didn’t want to be a doctor like my dad. I decided on my degree Joint Honours Psychology and AI / Computer Science primarily because I had always been interested in computers, an intrest mostly driven by games.
As I came toward the end of my degree course I had no idea what I was going to do with my life, and had almost resigned myself to the fact that I’d spend the rest of my life working on application software unless I could get a research post and do further study in AI.
It had never occurred to me that working in games was an option, as I had always heard games were written primarily in assembler and I didn’t have any experience of it. However, the Sony PlayStation had came out in late 1995, and C was the primary programming language used to make games for it.
My AI tutor had a friend who worked in games and had said his company was on the lookout for AI graduates. I signed up with a recruitment agency specialising in games and after a few interviews I got offered a position at Codemasters.
Whilst the CS aspect of the degree course I had been on was very practical by academic standards, it left me woefully underprepared for the day to day working environment I was about to enter. Many ‘best practice’ techniques I was taught at university could land you in a whole heap of trouble in the speed-of-execution-is-everything resource limited world of console development.
Also, I had decided maths was rubbish after being taught vectors and matrices during AS level maths and had purposefully ignored maths as far as possible since then. D’oh! Luckily for me, I am a very fast learner and I met some exceptionally bright people at Codemasters who helped me quickly fill in the gaps in my knowledge.
The industry has changed so much in the 15 years since then. There were only about 25 people working in the development department of Codemasters in December 1996, and they were working on maybe 5 games between them. Nowadays big budget games can have upwards of 200 people working on them.
I was lucky enough to start in the industry at a time when team sizes were small and job roles less well defined. I moved between design and programming roles for the first 6 years that I worked in the industry, and then settled down to concentrate primarily on programming when I helped to start FreeStyleGames in late 2002.
Do you have any thoughts on the future of your role/industry?
The games industry has always been a very dynamic and changeable one. This is more true now than ever – current trends for downloadable games, games for mobile phones and tablets, and social games delivered via social networking sites like Facebook seem set to only increase in popularity.
Even more interestingly, several new ‘cloud gaming’ systems are currently emerging that allow users to remotely play games that are running on bleeding edge PC gaming hardware – one even achieves this within web browsers.
However, even with all this it seems unlikely to me that the traditional console model will be entirely superceded. Even if the games you play do eventually run entirely in the cloud, I think that there is a good chance that people like Nintendo, Microsoft, and Sony will still be selling you the hardware which allows you to access it all.
What advice would you give someone entering your industry?
Whenever I give talks to younger (16 – 18) students I always tell them: Now is the best time to make a game.
There are several very high quality game development tools available incredibly cheaply (or entirely free!), and they are all supported by lively online communities of users. Some of these tools allow a single game to run across all modern gaming hardware – iPhone / iPad / Android / Windows / Wii / X360 / PS3 etc.
Games made using these tools can make real money for people, and the low barrier to entry for this sort of thing has lead to a renaissance of creativity and freedom in games.
Have you come across anything or anyone that has helped you move forward in the industry?
I owe a massive debt to Richard Darling for giving me my first break, to Dr. Richard Ogden for teaching me about vectors and matrices, to Dave Thompson for teaching me many valuable lessons about programming, to the other founders of FreeStyleGames for letting me share with them in achieving our dreams, and to Oliver Williams at NTI for giving me the chance to be part of Gamer Camp and to benefit others by passing on my knowledge and experience.