The recruiters pitch random buzzwords like how iHerb has migrated away from monolithic applications to microservices with Kubernetes, or from jQuery to React but it’s the execution and engineering culture behind the tools that matters, not the approach or tools used. Engineering team culture is what keeps talented developers in a team.
Don’t just accept the recruiting propaganda. Nobody in management here cares about best practices.
iHerb is a clear cut example of “cargo culting”. If you haven't heard the term, it refers to doing things you’ve seen other successful people do, without fully possessing or understanding the necessities to achieve the success outcome desired.
In this context, I'm referring to management trying impose the team to implement things like microservices or React because all the cool kids are doing it, without regard to whether it’s appropriate, or without actually doing the things that lead to microservices being successful in the first place.
Let's take our move to microservices as an example. Fundamentally, microservices necessitate a rigorous set of engineering practices to all service infrastructure components and carries a greater overhead than traditional development methodologies. But rigorous engineering does not come free.
Some examples of rigorous engineering practices which are sorely LACKING at iHerb are:
- Have or ready to invest in development tooling, shared libraries, internal artifact registries, etc
- Have engineering methodologies and process-tools to split down features and develop/track/release them across multiple services
- Ready to isolate not just code, but whole build+test+package+promote for every service
- Infrastructure automation
- Have a robust CI/CD infrastructure
- Coordinated releases
- Good unit testing
- Distributed logging, tracing
As other reviewers have expressed, many of these core good engineering practices don't exist at iHerb because management is non-technical and purely focused on the bottom line. But more services means more tooling and involves a robust continuous integration and continuous deployment (CI/CD) pipeline, infrastructure automation, developer tooling, contract sharing, documentation, client intelligence and libraries, processes, testing, and a lot of other tools. at iHerb, no resources are allocated to establishing and promoting any of these robust engineering processes.
Despite recruiting touting these buzzwords like microservices and Kubernetes, we still have the same CI/CD and release cycle problems that existed when we had a monolith architecture. Instead, we just have more complexity.
So, yes. We have switched to Kubernetes. Yay. Let's pat ourselves on the back. But be aware. If you're interviewing here, make sure to speak directly with the engineering teams (individual contributors), and not just the managers about processes. If you can't speak to team members who are in the day-in-day-out nitty gritty of the code base and development process, then you know there is something being hidden from you. Interview smart, don't believe the propaganda.
Unless iHerb becomes an organization that gets the resources and support from management to improve the engineering robustness and maturity, then know that you're walking into an organization where everything is a cost (aka. this includes you and your own career development). Good luck. Learn from my mistakes.