is interesting, and it's nice of Ben to boost
in no particular order:
- learn how a relational database works (this is always useful)
- learn how HTTP works in general
- learn how to debug code in one language (it's pretty much the same in others, you can recycle most of the knowledge)
- be familiar with the command line
- know how to find code (either using your IDE or grep on the command line)
- knowing the basics of regular expressions will get you far (also to find code in the previous point)
- know how to find solutions using a search engine
- know how to operate git (I would say any source control but git is the de facto standard so you might as well start with that)
- ask questions, especially if you think they're not worth being asked
- learn how timezones work (not kidding, lots of devs are still fuzzy on these)
- learn how unicode and utf-8 work (same reason for timezones)
- have a general idea of how caching (CPU, in memory, disk, HTTP) works as a concept
notice that other than git I didn't specify any particular tool, this is because it's stuff you will bump into no matter which languages or tools you'll end up using.
And I agree with them... but twelve things? I can't remember twelve things. Nah, you don't need twelve things. You need one thing, a golden rule, a variation on:
ask questions, especially if you think they're not worth being asked
That's all you need. You need to learn to ask questions. You need to learn to weaponize your ignorance.
What? 'Weaponize your ignorance'? What the hell do I mean?
As a new software developer ('junior' whatever - I was in my mid thirties when I started), the fastest way to get anywhere in your career is to acknowledge three things as quickly as possible:
- Everyone else should know more that you about software development.
- A part of your job is to learn more about software development.
- It's a part of everyone else's job to teach you.
It really is. Really.
So to make (2) happen, you need to get (1) to do (3). And you need to do that - actively. Don't wait for other people ('seniors' - they were all younger than me) to create a learning moment for you. Grab those suckas by the collar and say:
What do you mean 'RESTful'?
What the hell is a Dependency Injection Framework when it's at home?
You 'curried' that function? You did what?
Why are you using a
PUTinstead of a
Whoah, whoah, whoah! What's that
curlcommand you just used?
What shortcut did you just use to make that happen?
Why are you always typing
git pull -r? What's the
Where's that variable coming from?
And if it's hard to ask these questions, ask:
Why can't we pair program more? It's hard for me to learn more if I can't see what you're doing.
And if you get any flak for asking 'stupid' questions:
Why aren't you interested in making me a better developer?
Why do you think I ought to know that? Why do you think it's really basic? Why don't you explain it to me?
Do it everywhere, all the time, for the first two years. Do it when you're programming. Do it when you're in a meeting. Do it when you're at lunch:
Why is that written on your t-shirt?
Take advantage of the fact that you're meant to know nothing at this point in your career - make that ignorance work for you! Ask questions about everything. This is your golden opportunity!
You'll discover that other programmers (for the most part) love talking about programming and ~showing off~ telling you what they know. They actively enjoy it! And, quite often, they won't know - and so you can both have a great excuse to find out the answer together through searching the interwebs - at which point you'll learn how the senior developer gets answers!
But whatever you do, don't shut up and let that acronym/technique/sentence go unquestioned. You're doing no service to anyone by being quiet: not to yourself, who won't learn anything, and not to your colleagues, who'll think that you know what they're talking about and will be annoyed when later it turns out you don't.
Be loud in your ignorance! Be curious about everything! Let your mantra be "I don't know - show me". Everything else else you need to know will flow from this one thing. Take this golden opportunity! Weaponize your ignorance.
Because, in a year or so, you won't be able to do this. In a year or so there'll be another new developer in your team asking you the questions. So take advantage of this opportunity.