HACKER Q&A
📣 dduru

Good habits to learn more during work


I hope the title is quite self-explanatory. I am the only junior developer at my first job (they normally don't hire fresh grads) surrounded by medium-high experienced developers. I learnt quite a bit (code structure, architecture, migration struggles, etc.) throughout my time but think that I could make more of my time during work.

I am especially curious about some habits that I could try start doing in order to learn more from my surroundings. I do occasionally take time to read through the commits of my colleagues.

Any tips (even the smallest) would be much appreciated.


  👤 bradstewart Accepted Answer ✓
Always be looking for the "why" behind everything. And I mean everything:

Why is marketing requesting this feature? Why was this meeting scheduled? Why was this pattern used in the code here? Why was a different pattern used over here? Why was this release successful? Why was this one late? Why did this production problem happen?

If you don't understand something, ask.

Building software systems is a complex process. Millions of decisions are made, from big items like what language and frameworks to use, to smaller choices like how a specific input is validated, or how logic is split into functions.

As you learn through experience, you build intuition--you start making intentional decisions automatically because you know it's a good idea. These are often not captured in specs or requirements docs, but are very important to the project.

Understanding "why" will help you build your own intuition.

As a follow up: a lot of things are done intentionally, but at least as many are not. Were the imports in this file ordered this way on purpose? Why is this a separate method if its only called from one place? If nobody on the team knows "why" something was done a specific way, it was usually unintentional.

The intentional things are what you want to build your intuition around. You will start to see the effects of those decisions appear as the project continues.

For the unintentional things, try to identify consequences (both good and bad). Was this a happy accident? Did this cause a bunch of pain? Or was it really inconsequential.

This will help you know where to focus--which decisions would benefit from additional time and scrutiny and which should be done as quickly as possible--when developing yourself.

EDIT: Forgot the conclusion....