2 ms·
> So for example, as a Junior Engineer you will define the design (architecture) of a feature within a service, This is how you end up with antipattern-laden m
by pphysch 4y ago
> So for example, as a Junior Engineer you will define the design (architecture) of a feature within a service,
This is how you end up with antipattern-laden monstrosities. And I don't mean that in the dogmatic sense, I mean juniors will find "clever" ways of getting the job done, often with far too much abstraction and reinventing core technologies like message-passing, task schedulers, databases, ORMs... It can be a good learning experience but they need a active mentor/architect overseeing every major decision.
If you are going to reinvent something you should at least be aware of it. Juniors just don't have this broad perspective yet, almost by definition.
OTOH, one of the my pet peeves is an "architect" who gives this advice I am giving but doesn't actually have the requisite technical background, i.e. saying "don't reinvent the wheel" while looking at a teacup.
- zmgsabst 4y agoThat’s why we have design reviews where SDEs present their designs, and often informal discussions before. It’s not like SDE 3 (senior) makes you immune to architecture over-complication.
- pphysch 4y agoYeah, code review is one format that can work for this, but my broader point is that trusting juniors to make architectural decisions even on the feature-level is a waste of time and effort. There must be oversight and guidance.
- dilyevsky 4y agoIn my current workplace it’s basically impossible to fail design review - like I’ve never seen it happen, and this is becoming the norm across the industry. At this point design reviews are just a cargo cult ritual
- angarg12 4y agoThis is where the fractal nature of the role helps. In your example, a mid level dev would oversee the architecture of the service. This dev would work to the junior to ensure their approach fits the rest of the service, and review their work. In turn a senior eng would oversee the architecture of the system owned by the team (possibly involving several services), and keep tabs with each one. Delegation doesn't mean lack of accountability.
- pooper 4y ago> This is how you end up with antipattern-laden monstrosities. ah haha I just stepped away from my work computer after creating a new branch and writing a "short term fix" in a particular module instead of fixing the root cause because that would involve talking to multiple teams. Instead, I can just do some simple string manipulation just for the one bug I have... I am trying to talk myself into or out of creating this pull request...