After a few years these become “implementation details” and really do not matter. By then you know how to learn.
If you read this and feel it’s a cynical rant: I have a great business opportunity for you.
These observations are based on experience, and should increase the chances that when you stick your hand into the barrel of snakes that is the normal corporate environment, you will pull out an eel, and know how to tell the difference between a snake and an eel.
The Dunning Kruger effect: Arrogance
You are almost certainly not a genius. A survey of developers would probably show that, as with car drivers, 90% of developers rated themselves as above average.
There are only a few Knuths and Turings in the world. Some geniuses, like Picasso, are not great humans. If you are a genius work on being a good human.
Young developers, and some older developers are likely to be arrogant. Arrogance creeps up on you and everyone around you will know you are arrogant well before you do. Like being dead or stupid only the people round you suffer. I am unaware of any arrogant zombie developers but have encountered one or two arrogant and stupid developers.
If you see others as arrogant remember we tend to project qualities we do not like onto others: you may both be arrogant.
Early success as a programmer can, through the Dunning-Kruger effect, breed arrogance. So can the praise of others.
You do not think differently from other people, that skill needs cultivating and could lead to insanity. You have the same cognitive biases as everyone else: Peer Pressure, Loss Aversion, Confirmation Bias and so on. Live with it.
The way you solve a problem, for example fixing a bug, is, at a high level, the way a plumber or electrician diagnoses and fixes a problem. You use different problem solving tools, ones that may be harder to learn, that is the only big difference, apart from not having to crawl around in confined spaces trying to get a nut to move. Your problem nut may be in a leather chair.
Don’t think you are smarter than a manager.
The mindset and skills needed to manage people are vastly different both from the skills a developer needs and the skills needed to drive a business forward.
Managing machines and abstractions like money is relatively easy, especially in the business world. Managing people can be like herding baboons and the manager needs to act like the troop leader.
Some managers were developers and know your tricks. Some managers are stupid, some on a power and ego trip and some have been promoted beyond their ability, and may be post turtles.
Your manager may be one of the rare good managers around (management is harder than it looks and good management is very hard), but your manager is never your friend. Always be careful what you tell him.
The higher up the organisation you go the worse the management gets. This is not absolute, but it is statistically certain. Higher management can see the wood but not the trees and definitely not the leaves. This can lead to poor decisions like cutting your job.
Think before you code. Coding is problem solving and plunging into implementing a solution without thinking is ONLY justified in an emergency or with a manager standing behind you. Emergencies are normally a sign of management failure. The other type of emergency is rare.
There is no such thing as beautiful code. Code may express beautiful ideas or a smart technique but no piece of code will ever be reprinted as many times as the Bible or Shakespeare. If you want to write your code in rhyming pentameters good luck to you
The half life of a piece of code is normally about 5 years. Paradoxically the worse the code the longer it survives as nobody dares touch it. It does not evolve, it is just replaced with code written from scratch – if not by Old Scratch.
There Is A More To Life Than Coding.
One day you may lose interest in programming and move to, architecture and design or leave the computer field entirely. If you do you may still love problem solving, in a different field, research and teaching.
Programming is good in moderation but can be, and often is, bad for mental and physical health. You can induce Aspergers Syndrome, lose your social skills, and ruin your body and relationships with others irreparably unless you look after mind, body and spirit.
Subsisting on coke, pizza and five hours sleep a night can result in diabetes and other disorders.
Talking about technology on a date is the best way to end up not getting a second date, unless you can explain what you do and what happened in a way that makes the other person laugh.
The same goes for parties.
There is no Programmer shortage
There is no shortage of programmers. Managers who want an excuse to send programming work to the poorest countries they can have perpetrated the Programmer Shortage myth perpetrated.
The number of programmers will increase as at present everyone and their dog are trying to get in on the game and the amount of work needed will not grow as fast. Automation and AI, even limited AI, will reduce the demand for mid level programmers. This means you are never safe in your job because your skills are scarce. If a skill can be automated it will be.
Have a backup trade.
Corporations tend to split into The Business and the rest. The Business controls the money and therefore has the power. The Business knows sales people bring in money and marketing people prepare the ground for sales people. The Business knows they need legal and HR to handle legalities and keep employees in line. The Business does not know what the rest do since the days of management by walking around are long gone,.
To The Business you are a cost centre to be replaced if possible with cheaper commodity workers. This happens to all skilled workers and has happened to weavers and print workers among others.
The Business does not – cannot – care if you die of overwork, go insane or damage yourself so much you cannot work again. It may take a while and a bit of money to replace you but the chances your absence will ruin a major project and endanger your colleagues’ livelihoods is minimal.
The Business knows the majority of projects fail but the remainder will more than pay for the rest.
You are a cog in the organisation, a worker bee and a resource sink. If you suddenly vanish or have severe problems your manager and maybe their manager will care if they feel their career is threatened. Otherwise they can’t afford to care.
The Business does not care about code quality as long as it does not increase maintenance costs, fall over in production thus losing customers, or get them sued. If they sell software to clients they consider code that lets them charge for upgrades or increase subscription levels to be perfect.
Your technical stack, was not chosen rationally – that is hard – but by the developer with the loudest voice advocating the technology that will most enhance their career prospects. Again this is not always true but exceptions are rare.
The software you develop will mirror the company’s structure, culture and communication systems. Looking at the legacy code in your probation period will tell you what to expect.
Agile is a worthwhile development methodology but is usually implemented to kill creativity and innovation and turn development into a treadmill. Creativity and innovation rock various boats and make life harder for managers. As in the army and in fast food chains creativity is only welcomed at the top: the grunts are not supposed to think, just do as they are told and to take the blame. Just follow the rituals and pretend you believe in them.
You are hired to do ONE JOB. Sometimes that job changes. You have to be flexible. You should not have dogmatic views about the tools and technology you use.
Managers hate you because they see your headline rate – what you get plus the 20 to 40% extra extra your agency charges them – and forget about details like pensions, sick pay and holiday pay that you don’t get. Above all managers hate the fact you can leave and get another gig in a reasonably short period. But they love the fact they can get rid of you easily.
Permanent employees hate you because you are outside office politics. Small mistakes you make are magnified into signs you are an incompetent fraud
Sometimes you are hired to be fired in order to protect the careers of various people and take the blame, at least inside the company, for the mistakes others make. You may be congratulated on your way out and vilified as soon as the door closes behind you.
If as a contractor you earn enough to drive a Ferrari, buy an old banger and drive that to work, so as not to upset the team and put pressure on the manager to terminate your contract.
Time sheets are vital. Most companies want to see five eight hour days on the timesheet not seven one day and nine the next: the latter confuses the accounts department – especially if you are working for a bank – and they may pay seven hours for seven hour days but only pay eight hours for nine hour days.
You almost always have to use a laptop the client provides. Keep a folder for work related material such as downloaded tutorials, electronic copies of time sheets, emails from your agent and management company or accountant, back them up to the cloud and your own machine regularly. On the last day of your contract delete that folder. If a secure delete is available use that.
On Day One of the contract wear a suit. You can then observe the dress code and dress accordingly on day two.
On your last day you may be asked to sign a document saying you have returned all the equipment you used and have not retained any intellectual property.
Resist the impulse to write “Nothing worth keeping” on the document.
ou are nothing special, you have special skills that may be in demand. You need good person skills and a nose for danger and bullshit. The code you inherit will contain the flaws and virtues of your client.
You need to look after your mental, physical and spiritual health and build good relationships outside work so that when you leave you will have at least one person on your side.
And remember, there is life beyond code.