Nick Ribal
Front-end veteran, consultant and freelancer, who's armed with a decade of experience solving challenges on the Web platform for large Internet companies.
Nick Ribal, September 2020
Over 10 years of web development, mostly front-end
Technological (easy)
Architect, choose & implement technologies
Lay a solid foundation, which won't need to be rewritten
Cultural (hard)
Improve individual and organizational development speed and quality
Explore the complex interactions between code, people, culture and organizations using tooling, rules, conventions and conversations
I lead teams in two dimensions:
Senior developers
Team leaders
Tech leads
Architects
Anyone who cares and thinks about how people, code and organizations interact
Pull Requests
Code reviews
Maintainability
Development speed
Mindset and guiding principles
Cultivating team & organizational culture
Tools and methodology
Avoid:
monolithic
opinionated
hard to replace parts
Do one thing, do it well. Compose.
Don't reinvent the wheel:
You can probably reuse 90% of others' work
Do your research
Only write glue code and your unique core product
Roll your own as last resort
Prefer:
small
single purpose
modular
Knowing the building blocks allows to:
Sad example:
Not knowing CSS/HTML beyond a very basic level results in problems which shouldn't exist:
"div soup", bad a11y, CSS specificity/z-index wars
Examples:
I actively avoided Angular1 and Redux, even when absolutely everyone was using them
Much later, many acknowledged the same problems I had identified years ago
It is OK to make mistakes
Do not ignore them and change your mind
as long as you
Guide your desicions based on:
Examples of my own mistakes:
Having a short feedback loop to detect mistakes in real time - as you type - is crucial
Enforceable rules, conventions and guidelines are great! They are VERY important. But,
Engineering is about managing trade-offs.
When a rule doesn't serve you, change it!
// eslint-ignore-next-line
Refactoring, definition:
Restructuring code, without changing external behavior
Examples:
People are your greatest and most expensive asset
Encourage exploration, learning, growing and allow making mistakes. Serious mess-up? Bring 🍰!
Your expectations, the way you give and receive feedback create, encourage and cultivate work habits, which will make or break your team - and business.
People who feel that their work matters will naturally assume ownership, responsibility and care for their work and your business.
For everyone on the team, always - no exceptions!
Coding style, conventions, Prettier, static analysis with git hooks allow people to focus on what matters: biz logic of what the code actually does
This is tricky: feedback must be constructive, meaningful and not nit-picking.
Be constructive
Use a proper tone
Ask & discuss
Suggest or guide
Instruct or command
Have people submit and review PRs early:
Everyone and anyone can - and should - review others' code in their free time, when they are at ease.
Async code reviews mandate clear documentation, relevant context and prevent time waste for peers
Who?
What?
Why?
Async CRs set a record and clarity in every PR. Anyone is be able to understand, review and test any feature or change - without prior context.
What
Who
Task
Details
Notes
Code improvements should be in practically every change
"Leave your code better than you found it."
In a CR, if I see something I dislike - including unrelated to the PR - I'll ask to fix that. It will be reviewed and QA'd anyways.
"Yes" - put out that fire, nothing else matters!
"No" - you can do more than the bare minimum.
Maintain 0 lint errors and warnings and 0 test failures at all cost!
By Nick Ribal
Speed of development usually comes at the cost of quality: "make it right" or "quick and dirty". The business or client wants everything done today, but too much compromise leaves us a mess of technical debt and a maintainability nightmare. I'll share my recipe for success in enabling high quality software development at a fast pace, based on experience and lessons learned over years of programming, consulting and leading multiple diverse front-end projects and teams. Video of the talk: https://www.youtube.com/watch?v=VSGpXk-1ZgA
Front-end veteran, consultant and freelancer, who's armed with a decade of experience solving challenges on the Web platform for large Internet companies.