Archive

Archive for the ‘Software Engineer’ Category

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:

http://uk.linkedin.com/in/trishagee

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.

James Bowkett – Startup Developer

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.

Career Path
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.

Follow

Get every new post delivered to your Inbox.