I've been writing code at CoinMetrics for about 8 months - feels like a good time to reflect a bit on what I've learned.
Of course there's technical knowledge - that events are fired at the time of render, not the time of DOM update. That browsers start painting pixels on the screen sooner than I sometimes want. Object.keys() vs Object.getOwnProperties(). Gitlab CI/CD configuration. The list goes on.
There's also the skill of navigating code. When I started I remember saying I felt like I was dropped into a very big maze with a very small headlamp. At this point, I don't necessarily feel like the headlamp is that much bigger, but I do feel more adept at navigating the maze.
A lot of this involves increased comfort with my text editor. I use Vim's code folding a lot - like constantly. This helps me go from 10,000ft view of a file to individual lines of code. It helps mitigate the feeling of being "lost" in a large file.
Vim also helps me be more comfortable being "lost." I use marks to keep track of "places I know I'm gonna want to come back to in a few minutes." I had previously been very concerned about whether I needed to scroll up or down. Now I'm more often thinking about "what" I need rather than "where" it is.
Incorporating RegEx into my searching actually does make the headlight wider. They help me instruct my text editor to keep track of things so I don't have to.
I have been leaving myself breadcrumbs - console.log('---- oops') or // ---- TODO - something easily distinguishable that I can search when it's time to clean up or pick my next task.
I also feel more comfortable reading code. In the past it was quite painstaking to translate code into English. In a way it feels not entirely dissimilar from learning to read music. More and more, the JavaScript itself is the best description of "what's going on?" This applies to documentation too - the ability to read a sentence, realize I understood none of it, zoom in, then back out, until I have the answer I need.
In the past, all of my projects were pretty much solo endeavors. They weren't that complex and mostly I was stating from scratch and adding shit. Sometimes at my job I have to do this - write a UI component from scratch - but most of the time I'm messing around in a massively complex set of pre-existing functionality that I did not write and mostly do not understand. Tighten a screw over here. Connect a hose to a nozzle over there. Open this latch, and replace this lever, without touching the wall behind you, all in the dark. I really underestimated how challenging this can be, no matter how well I know the features of JavaScript.
And let's not forget the emotional skills. Writing code is fucking frustrating, and intellectually overwhelming. I have a bachelor's degree in abstract Mathematics, but that coursework could not replicate the challenge of keeping track of all the screws I've inadvertently loosened, all the plates I've dropped on the floor, all the minutiae, all the open tabs. It is absolutely rewarding when something works or I skillfully connect new functionality to an existing behemoth. And, it's hard as fuck, it can be tedious as fuck. I'm getting much better at staying sane, and a little better at being relaxed.
Writing code feels more like "bungee wilding" than it does essay writing. I'm getting more comfortable not having my feet on the ground.