Ten Things I Wish I'd Known at the Start of My Career

Originally published on my old blog as a four-part series, "Learnings", in October 2014, expanding on a list I'd posted on Twitter a couple of months earlier. Combined into one post and lightly edited; notes added in 2026 are marked.
A while ago I posted a list on Twitter of ten things I have learnt in my career: things I wish I'd known at the start of it. This expands on each of them.
1. Short-term fixes will, 90% of the time, become long-term production processes
Much as we like to believe that a quick fix will be just that – that we'll come back to it when we have time and fix it properly – it is rare that we ever find the time.
This isn't about intentions or anything else. It comes down to two facts:
- The problem isn't an irritating enough itch any more, so you aren't compelled to scratch it.
- Once it is in production it becomes business critical, and it becomes far harder to change.
Which makes an excellent argument for fixing it properly the first time. Alas, in a business-driven environment it is hard to commit the resources to doing it right when "good enough" meets the business need.
2. You will never have full requirements; if you do, they are out of date
TL;DR: agile and similar iterative processes are the right way to do things. Business and technology change too quickly.
When I learnt computer science in the early 90s there was no agile. Waterfall was the normal method taught, and people used it – and projects failed.
Not all projects; that would be silly, and it wasn't a total failure. Just enough failure that projects didn't fit changing business needs particularly well.
With the advent of drag-and-drop UI builders and languages like VB (much as I hate the language), apps were quicker to develop and fairly consistent in their UI.
Extreme programming and agile were an extension of this. They didn't have all the answers, but they changed the model from up-front design to incremental improvement. You could put a mostly working app in front of a user in a few hours, and the user could start to understand what you were describing.
This accelerated the pace of the IT industry. We now see an MVP as an integral part of most startups' business plans, and the only people still doing waterfall or similar methods are mission-critical application developers (flight systems for aircraft and spacecraft, process controllers and so on) and government contractors, who are lagging about 20 years behind – although it is nice to see that changing.
2026 Note: My thoughts on this are a little more nuanced now. Upfront design is definitely worthwhile where the failure modes are critical. ie. Where risk of life, or massive monetary outlay are significant risk.
2a. Design with change in mind
This wasn't in the original set, but I think it's important.
If you design and build tightly coupled systems, then sure, you'll get maximum performance out of them. The problem is that change becomes difficult: changing one part of the system ends up requiring changes elsewhere as the interfaces and data structures shift.
With this in mind, I now recommend loose coupling through well-defined interfaces. Using interfaces like REST or message buses, and interchange formats such as JSON (and XML if you really must), you can avoid having to make changes in multiple places as business requirements change.
3. People will be nice when they perceive things going their way
Everyone loves good news. It lifts their mood and makes them far more hopeful about the future. They also tend to be easier to get along with, and more generous with their time, money and other resources.
This includes you!
4. Things won't always go your way
The old adage "make hay while the sun shines" still holds true, but you should also be prepared for the times when things aren't going your way. Hold back some cash. Have a plan B (and a plan Z), and generally keep your options open.
5. Great people will help you reach your goals even when things aren't going their way
The most successful people I have ever met are not the ones willing to stab someone in the back to get ahead; they are the type who see you fall and go out of their way to make sure you're okay.
That produces a lot of goodwill, and it tends to come back to them many times over. People remember the kind word when they were low and the helping hand when they were on the ground.
Sure, some people will try to take advantage of this, but they'll be in the minority.
6. You don't need to suffer in a job
It has taken me a long time to realise it, but the most important things in life are not how much money you bring home or how many hours you spend at work. You won't be lying on your deathbed thinking "I wish I had spent more time at work".
What's important will vary from person to person, but I'd guess it is likely to be one or more of: family, friends, physical health, mental health, or perhaps certain good causes.
As someone who has both been hurt in a car accident and burnt out and come back, this has been a hard lesson, but it is something I do believe.
7. Don't be afraid of change. Change is where learning happens
If you do the same tasks the same way every day for ten years, you are unlikely to learn much. To learn, you need to be exposed to new ideas and to change.
The one thing that stops us changing things, and by extension learning, is fear; fear of the unknown and fear of breaking things. We can solve both to some extent through culture.
Pairing up can reduce the fear of the unknown; you have someone else to reassure you and provide support when you need it.
Fear of breaking things is harder, but not impossible. Understanding that failures happen no matter what, having processes to deal with them, and not dealing out blame during or after the event all go some way towards making change less frightening.
8. Don't be too quick to change something that is working until you understand why it works
We all understand that change is necessary in business. The outside world isn't standing still and we need to adapt to it, so changing things is an everyday task – one we need in order to keep our market fit and improve the business.
The problem is that if we are too accepting of change, we'll keep changing things that don't need it, even when doing so is to the detriment of the business.
I have seen this in many places: people who need to change something to feel they've contributed to a problem, people who like to shake things up a little, or even people who like to make others uncomfortable because they can.
What all of these have in common is that they are changes without a good reason or a plan. There is no testing and no rationale for why the change will be a benefit; it is just change for change's sake.
9. Business decisions should not be taken personally
Getting fired always hurts one way or another. It hurts you – you won't be getting paid for that job any more. It hurts your boss – it isn't pleasant knowing you are putting someone in that position. And it hurts your colleagues.
However, try not to take it personally. The decision should have been made for the good of the company, and the company is more important than any single person (if it isn't, you have other issues, but we won't dive into those here). Maintaining a healthy working environment, with work getting done and money coming in, is the primary need, and anything that upsets that balance has to be dealt with, even if it puts you in a bad position.
Perhaps it isn't getting fired; perhaps it's a change in hours or on-call pattern. Whatever they ask, you can always say no – as in number 6, you don't need to suffer in a job.
We live in a world of increasing job mobility, and that isn't likely to change any time soon.
10. Never shit on your peers
Of all the startups I have worked with and for, the most successful were the ones whose founders and management weren't playing games to squeeze every last bit of work out of their staff. Earn some goodwill and your staff will work miracles when needed; screw them and they'll do their hours and leave it at that.
The same goes for colleagues. Screw them around too much and they'll only do things for you that don't disadvantage them at all.