Becoming better - Advice from a senior
I have been in the dev game for a long time now, so I thought Iâd share some thought with those who are new to the profession.
Itâs been around eight years since I made my first commit as a paid developer. âPaidâ is almost a stretch, as I was an intern at an ad agency in London and the pay barely covered my rent. It was a fun time though, as the result was some cool pitch stuff for some major brands and a âWebsite of the dayâ award from The FWA.
For me, the first four years as a developer was riddled with impostor syndrome. I know a lot of you feel the same and while the comforting âeveryone goes through itâ probably has been bashed in to your skulls at this point I think I can help you even more. So, humor me while I type down my ramblings.
Always ask âWhyâ
At times youâll see design patterns youâre unfamiliar with, or technology that solves an issue in a new way. The last example for me would probably be how deno handles remote imports or how observables differ in RxJava and javascript.
The important part when seeing things like these is not to like it, but understanding why itâs being done. Quite frankly itâs good to have an opinion, but important to know why you do.
A thought experiment could be the utility css-classes in Tailwind:
<div class="bg-gray-100 rounded-xl p-8" />
<!-- What's probably in tailwind -->
<style>
.bg-gray-100 {
background: gray;
}
.rounded-xl {
border-radius: 15rem;
}
.p-8 {
padding: 8rem;
}
</style>
<!-- VS traditional approach -->
<div class="gray-circle" />
<style>
.gray-circle {
background: gray;
border-radius: 15rem;
padding: 8rem;
}
</style>
When this started gaining traction among developers a lot of people where against it.
That many classes just pushes styling to the markup, so that canât be good right? We learnt in school that we should separate styling and content!
Turns out itâs a good idea in many cases. Why? Because weâve moved a lot of how we handle markup into component based frameworks like React, vue and svelte. It makes sense as weâre no longer authoring documents, weâre authoring individual parts! Apart from the example above, I havenât had to write manual css in a long time, and it seems the results are a bit more consistent thanks to tailwind and tachyon.
Experiment
Youâve got to try new stuff to learn new stuff. Preferably really alien things. New paradigms come from all over the place. Spending some years with object oriented java made me a better javascript developer, and while I donât think Iâll need my skills in WebGL that often Iâve still learned a lot.
Experiment! Make it weird! You donât always have to understand it or want to work with it in the future. Make a game in Godot or try making a shader in shadertoy. Or just make a tinder clone in vs code like benawad?
Do boring stuff
This might feel like a weird point to make after talking about how important it is to experiment, but hear me out. Programming is a skill, and like all other skills it needs to trained. The truth is that youâre unlikely to master anything without just doing it a lot for a long time.
So, I advice you to do what I did. Use old tech. Refactor, a lot. Write tests, a lot. Try to automate a task that seems boring. Jump on the chance to fix a bug in that old legacy system. Try to draw parallells to modern development - why did we do it like this? Debugging is a skill worth mastering.
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. â Brian Kernighan
Be humble
Me at 0 years experience: hehe, code đŁ
Me at 3 years experience: I'm getting the hang of this
Me at 5 years experience: I know everything
Me at 8 years experience: ÂŻ_(ă)_/ÂŻ wat
Itâs been joked about a lot but itâs true. You think you know everything until you know enough to know you know nothing.
Being a developer is only partly about the hard skill of programming. Itâs also about teamwork, communicating ideas and solving problems. The nature of teamwork is that thereâs bound to be different perspectives. Over a career youâre bound to be wrong some times. In hindsight - a lot of times. Which is good, thatâs how you learn.