I posted a video to my #GCAP21 presentation a little while back and I just remembered that I loathe video tutorials. So, to remedy that, I'm going to post the entire presentation, summarised down to tweet form. Here's the original:
This talk is about how you can become a better programmer. It focuses on the soft skills which can be just as important as your hard tech skills.
Curiosity about languages, HW, game systems, maths, music, physics, art, are all important. Curiosity leads to the pursuit of knowledge and knowledge leads to understanding and understanding leads to wisdom. And that Wisdom will help you to make better decisions in the future.
Communication is critical, and as its so important I've broken it down into a few slides:
Programmers need to communicate effectively with other programmers: 1 to 1, 1 to many. Via documentation, education, talks and blogs. Teaching your work clarifies your understanding of that work.
Programmers must talk to the users of their code. A user can be a player, an artist or even another programmer. Communication should be before, during and after implementation.
Explaining complex programming issues to a producer/manager who isn’t a programmer can be difficult. A programmer who can explain a complex problem in a simple fashion understands the problem better than one who can’t.
This one is easy to forget. Make sure you actually listen to people.
A programmer’s job is to relieve suffering. We automate and optimise things to make them less painful.
A good programmer should be compassionate in the traditional sense too. Aware of actual emotional suffering in others.
A big part of what programmers do is enable artists and designers. We build useful, useable tools and then stand back and let them do the art. Our art is in our code – no-one but us sees or appreciates that, but the art our art enables – everyone can appreciate .
Good Programmers understand the implications and potential ramifications of their changes. They also know that things go wrong, sometimes catastrophically. Good Programmers know that things break and are prepared for that.
Simple code is easier to maintain, easier to optimise, easier to work with. Simple is hard though. Complex is easy.
Good Programmers leave the code in a better place whenever they touch it.
Consideration is not just about code. It’s also about people. Can you see a programmer struggling with something? Can you help?
Good Programmers avoid the use of intentional complexity or obfuscation in order to restrict others from their field of expertise.
That is protecting your worth by hindering others to help yourself. You really don’t want to be that person.
Share your knowledge.
Good Programmers are honest: With themselves and with others.
They know when to say “Hey! I’m stuck here. Can you help me please?”
They don’t bullshit about their experience or skills.
Programmers need to trust other programmers. Trust that their work is tested and robust, trust that their work is efficient and as simple as possible.
Assume that the other person is doing their best, is making their best decisions based on the knowledge that they have.
You can be a 10x programmer by enabling other programmers to work more efficiently. By creating simple code, good tools, by removing pain points.
By speeding up your build times.
Broad experience relates to all sorts of things.
From the technical: different languages, tools, operating systems;
to skills – art, audio, UX, physics, maths,
to life: travel, upbringing, hobbies
Positive feedback is crucial for mental health and growth. Good programmers will go out of their way to compliment good solutions, or good initiative
Not just coding related hobbies though, other, physical hobbies are very useful. Socialising, fitness, music, movies. Mixing with people who aren't coders is important: we can be insular and so we should seek diverse experiences and people.
Good Programmers take care of themselves.
Know your limits. Work when its working, break when its not.
Your job as a programmer is to make other people’s lives easier. You don’t just solve complex problems, simulate physics and emulate intelligence, you don’t just implement the rules for new worlds – you also reduce the amount of mundane work that people do...
Your job as a coder is enable others – to provide space for them be to better. To help them.
Good programmers take pleasure in other people’s happiness/success, good programmers relish the growth of others. Good programmers nurture.
Of course hard coding skills are important – but they are not the only thing that is important. Aptitude, experience, and all of the soft skills mentioned in this talk are all very important.
Soft skills can magnify the hard skills of a programmer to affect not just themselves, but their entire team. Those same soft skills can make your work place a better place to be, and make you not just a better programmer, but a better person.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
I'm thinking about doing a talk on how to be a better programmer and I'd love to hear what other people think makes a good programmer. I'll lead with a few ideas:
Curiosity; I think that a natural urge to go further down the rabbit hole can be a useful trait. ie, a bug may be avoided by changing the order of some variable declarations, but WHY? Digging down to root causes can lead to long term fixes rather than cargo cult patches.
Comprehension; Deeply understanding your platform (SW and HW) leads to better design decisions and easier bug fixing. Curiosity can lead to comprehension if nurtured enough.