I previously worked somewhere where I spent about a third of my time in C++. I had to learn how much memory to allocate (only as much as you need) and when dispose of it again (as soon as possible). I struggled with pointers-to-pointers and had regular fights with threading.

Now, I work almost entirely in C# and I’m unlikely to ever go back to C++. Now I don’t know (or care) whether the variables I’m using live in memory for a second or an hour, it’s all done for me (and frankly much better than I could do it myself).

Likewise, I remember learning HTML in Windows Notepad with a huge book next to me for reference. Now any good editor like Sublime Text will auto-complete your HTML tags and tell you if you make a mistake. If you forget the syntax for something, you can find it in seconds on Google or StackOverflow.

We no longer need to remember the in-depth workings of the platform we are writing for, or even the syntax. This is increasingly done for us by the tools we use.

Maybe this is good. Maybe it means it’s OK to put all that old knowledge away in the back of our minds for later and use the room for something more important…

Think Differently

What if we just decided that we were no longer going to try to learn everything about a framework or a language? What if we decided to dump all that stuff and use the space to think about how to apply best practices to what we do, how to improve our workflow or to come up with some cool new ideas?

When I think about all the smartest people I have worked with, they aren’t the people who know every dark corner of a given programming language. They are the people who have new ideas, are passionate about something and are good problem solvers. They might have to look things up every now and then, but they can intelligently apply the solutions they find and optimise them for their own use.

We generally tend to compare developers based on what they know (‘that guy is a JavaScript expert!’). Could it be that we are looking at this the wrong way? I would much rather see people compared on how good their ideas are, how interested they are in learning new things and how well they cope with change.

The language you have spent hours poring over will not be around forever. A good developer will be able to transfer the patterns and practices they have learnt to something new. A bad developer will be left in the dust, wondering why they spent so long worrying about memory management in C++.

As the tools get better, is remembering ‘stuff’ becoming less important than general attitude? Or has it always been that way?