Caveat Lector
What follows is more of a stream of consciousneess that fell out a few nights ago pretty much unedited and very unpolished. Please don't take it too seriously, or personally (that would be too ironic) - it's as much directed at me as it is anyone. I'm publishing it with regret.
Programming languages do not care about you
You love your language. You've spent hours, days - months - learning its intricacies inside out. You are the grand wizard of JavaScript. You are the shining Ruby of Rubyists. You are the P in PHP, the Hoss of Haskell, the rustiest Rustacean, the goofiest Gopher, the biggest, steamiest, hottest cup of Java in the JVM shop.
So what.
Your language is really just a set of blinkers around what you can do. You are ultimately limited by your language; trust me, it cannot do everything you want it to do.
What's vital for a language isn't the language - its features, its warts, its amazing syntax for one line anonymous function calls, or array destructuring, or pattern matching...
Or its beautiful landing page, its cod philosophy, its ridiculously cute rodent mascot.
It's not even what it teaches you, about the world and about computers. That's important, and useful, but it isn't the most important thing.
The most important thing about a language is the people who speak it and the problems they solve with it. Try to keep it that way.
You are not the framework you use
If it's true for languages, it's doubly true for frameworks. But it's usually these artefacts that are the cause of the greatest and most vociferous developer fetishism - yes, I'm talking to you, front end JavaScript developers of 2019.
Nobody cares if your website is made in React. Or Angular. Or Vue. Or Preact. Or Bumfle. You haven't heard of Bumfle? I just made it up. My website is written in Bumfle. It's the best. I'm a Bumfle developer. Been one for the past twenty seconds. I'm the best at Bumfle. Please sign up for my free Bumfle training course. We in the Bumfle community welcome all Bumfle contributors. Also, I've just changed the Bumfle API to use Bumfle hooks which I'm calling Books. Saga Books now because I've read the DDD book. All your Bumfle code is now broken because of this. You are welcome. Also, Bumfle is now called Fumble. Also I'm now building the next Fumble. It's called Brian.
Nobody cares if you love a framework more than the last version of React, or whether it is simpler or easier to use than the next version of Vue. Especially not the framework.
Because in two minutes time the subject of all your passion and effort and love and time will evaporate through the whimsy of a maintainer, an exciting change in fashion, an update to 3.6.6.6, a new API that introduces every other term from the DDD book...
(Bumfle objects are now called Baggregates. You are welcome.)
Do not get attached to a framework. Do not fall in love with these ephemera. The most important thing a framework can do is solve particular problem. Try and solve more problems, stop finding problems to solve with your favourite magic box. Stop inventing problems to solve with your favourite magic box.
Your text editor does not define you
Vim is fun. You feel like you've passed a small exam every time you remember a command correctly. You get a small dopamine hit. You are a successful individual and a powerful software developer. At least a 5X. You must be because you know how to d
elete a
w
ord. You then want to tell your friends about your huge triumph in writing a macro that adds a comma to the end of each line.
Try and suppress this desire. Maybe suck on something sugary for five minutes instead. It will pass.
Who cares how quickly you can delete a word? Or a line? Or cut and paste a paragraph? Is the speed at which you can surround a single word with quotation marks really the limiting factor on your work? You were unable to write your algorithm because it took you too long to do the copying and pasting? Your startup failed because you weren't typing fast enough? Really?
All those plugins - this goes for the VS Code people too - do you use them? They seemed like a good idea when you installed them. Free stuff. But do you ever use them? Are they just filling your screen with more noise? Was it worth spending those three hours choosing the right colour scheme?
Take a good, long, hard look at what you actually do when you write code. Is there really that much that you're doing that couldn't be achieved with Windows Notepad?
Your text editor is just another tool. It's a means to an end. It is not a status symbol. If you're spending more than one percent of your time setting up an editor... stop.
Your terminal does not express your individuality
The perfect font. The perfect colour scheme. The perfect shell.
Bash of course. No, not bash. Nobody uses bash any more. Who are you. Get out of here. No, we use zsh. No, we don't know how to pronounce it either. But we use it. Or fish. Or something else. It's amazing.
We use tmux. Mainly so we can see a big clock. We have a custom prompt. It tells us how many minutes until our JavaScript framework becomes obsolete. We have a terminal emulator that emits fireworks as we type. With a black background. Because we are 10x developers and it's just like Mr. Robot.
Stop. Please. It's a terminal. It's a shell. You can spend a month customising it and in the end you'll not be a better developer. You'll just hate the look of whatever abomination you've created and spend another month making it better. And another. And another...
Stop worrying about how it looks and just use it. To do some development. You know. What you were meant to be doing.
Solutions
I've been told that just moaning about all of this stuff without supplying any solutions isn't very nice. So I'll try and be nicer.
Languages. Learn more than one. Learn more than two. Travel broadens the mind. You will learn to love your first language more. You will be forced to think of new ways of solving old problems. You will understand computers better. When you talk about languages, talk about how they differ and how it's nice to do things in different ways. Caveat: don't just learn how to write
hello world
in twenty languages; learn a handful of distinct ones to a good degree. This is not a waste of time.Frameworks. If your framework isn't giving you skills and knowledge you can transfer to the real world, I'd worry. Make sure you know how it works 'under the hood'. Don't get trapped. Every framework is a sinking ship. Every single one. And, yes, we are all rats. Don't learn more than one at a time. Forget everything you can about it when it finally dumps you.
Editors. This isn't so much advice as some ideas. Delete your plugins, turn off syntax highlighting, and give it a week. Find ways of using your skill at programming (you're a programmer, right?) to extend your editor by using its interactions with the shell. Try changing editors for a month to try something else. Try using
ed
for a week.Terminals. Use the out of the box settings for whatever computer you're using and wait until you can't do something you need to do before you start messing with it. Exception: you may have a dark background if you do all your work in a pitch black room. But maybe ask yourself why you're doing all your coding in a pitch black room. Are you OK? Would you like to talk to someone?
Cover Image: The Golden Calf by Herrad of Landsberg
Top comments (6)
I don't disagree with your views re: language and framework, and I do find a bit funny the "JS Frontend wars", the "editor wars", etc. On the other hand, I think many of us spend time customising our terminals, our editors or learning the quirks and discovering the cool shortcuts or limitations of a language for a few good reasons.
A more comfortable, for yourself, coding environment makes work less of a chore. The same way you choose your chair, or lighting, the same way you choose your terminal prompt and colourscheme, the editor that you know the best and sit to work with the language you are better at. Using the colourscheme that is easier on my eyes makes sense, and using syntax highlighting makes me work faster. Of course a text editor or a terminal or a framework does not define me, but setting it up the way I prefer, does help me.
I do understand that, especially those new to development, will find excitement in setting up the simple things and might get overjealous, but it usually fades out and most will eventually settle with the configurations they like the most.
It‘s a proven fact that only laptop-stickers define you.
I definitely agree. One needs to ask themselves whether they are being productive or using arguments about frameworks, editors or languages to procrastinate.
Yes passion is good but it is necessary to direct your passion at your projects. Rather than trying to convince other people the "right" way to do something. Or spending 3 hours customizing your editor/terminal/build process that will save your 15 seconds a week...when you can actually remember the command.
Chasing productivity by customization or hoping frameworks/languages is a fool's game. Instead focus on problems your users are facing, new features, learning concepts or thinking about the architecture.
Mostly agree!
Balance "Be Curious" with "Get Things Done". When held in tension these increase skill/productivity, but they can easily become ditches one can get stuck in.
Learn lots of different languages and frameworks, but spend more time learning more about how the ones you're using now work, learn new features added (eg. I'm surprised at myself and colleagues lack of knowledge of the latest C++ versions: I know most of C++11, some of C++14, hardly any of C++17 and had no idea C++20 is nearing completion).
As for editors, it's the same thing, though personally I've opted for the "learn one editor and continually add new (and remove old) extensions and packages carefully to increase productivity, and definitely write your own". First thing I install wherever I go is my programming environment (bash, git, emacs, Jira, Structure, etc.) using an automated script that's been honed over the years.
:D So many excellent one-liners, thank you David!
Can I borrow some and play meeting bingo with them please?
Certainly. Although I'd hate to be in that meeting...