23 march 2018
💛 What I like in my field
✨ Skills
Problem solving, Software architecture & JavaScript, enhance Business with technical solutions.
Front-end expertise, AWS solutions, GraphQL, Ruby, Rails, SQL/Postgres ... (full-stack)
The Context
I arrived 2 months after the beginning of the project
Everything starts from an observation from my experiences
That became a personal obsession and
by chance a challenge of my company:
Those startups were all “post-fundraising”, almost of the same size (20–50 peoples), dealing with same issues, performance, quality and velocity
Take the right technical choices to support the business,
without neglect the technical roadmap
"Technical debt" term clarification
Debt is a deliberate decision to implement not-the-best solution or write not-the-best code in order to release software faster.
If you make bad solutions and are not aware of bad code you write — that’s not a technical debt, that’s just a bad architecture.
It is not a debt if you are not aware that you took it.
Speed in Software Development, Michael Dubakov
It's all about taking the right architecture choices
Build an architecture capable of redeeming the technical debt in a glance.
The Product requirements
Performance
Quality
Velocity
➡️ 1. Quality, 2.Velocity, 3. Performance
Translated to Architecture Quality Attributes
The starting point
Background work, technical roadmap
Maintainability / Modifiability
keep dependencies up to date
no any: typing everywhere
Components Single Responsibility Principle
Immutable data
remove classes, especially inheritance
Routing
QA
Test coverage
Performance
GraphQL API
drop redux
Guidelines for new development
➡️ Enhance Modifiability, so :
reduce module size, increase cohesion and reduce coupling
- React components naming convention
- Redux as event-bus
- Components SRP
- Data HoC in order to prepare GraphQL migration
React components naming convention
The GraphQL migration anticipation
View Component
REST HoC
View Component
GraphQL HoC
Conclusion
Technical debt is good architecture
Product
requirements
Architecture QAs
Technical roadmap
Technical guide
Features updates
new features