A year and a half in the life of Hotovo
If you are a devoted Metallica fan like I am, maybe the title sounds familiar to you. It came to my mind when I realized that I'm with the company for over a year now. Maybe it's not enough for recollections however it's been an interesting ride so I wanted to share some thoughts.
I spent many years working on products, being it a second largest digital sports data company in Europe or a Silicon Valley startup. What these had in common from a technology perspective was, that the tech stack was fairly static, albeit quite different. Big players and big platforms tend to reach for mainstream solutions to improve recruitment chances. Think Java, Spring, Hibernate stuff.
Small startups often reach for mature but marginal technologies. This has the effect that when mastered they can pay off with improved productivity. More importantly they act like a magnet for more skilled developers with geeky spirit, thus raising awareness in people putting technology choices and self growth higher in the motivations ladder.
Working on a product for an extended period of time gives you a chance to get involved deeply in all the aspects of the solution. From frontend to backend development, datastore optimizations, devops, infrastructure, monitoring and support. With big platforms you end up stress testing features of individual technologies given the number of use-cases. Small startup's people have a lot of empathy for perfection. Quickly shipped releases are followed by man-days of furious refactoring.
Now back to Hotovo. A custom development company, a software house, a consulting services provider, a staff augmentation company. It can go by many names (and is also not very true since we have the studio/product department). The fact is that projects come and go and as software development practices evolve it is natural that the technology office tries to keep up with the pace. Finding a good balance between constantly changing tech stacks and having standardized processes and tools to gain in productivity is a challenge. I've always been in the former camp - enthusiastic about trying new things, however I deeply feel for people having high satisfaction being productive in the ways they are used to.
So given the diversification of projects the technology office must cover all the technology choices and stacks. I've been fortunate to get in the spot of jump-starting few of them together with internal tooling with interesting use-cases. So while not going too deep in each technology, the coverage is wide enough for a whole technology department.
Here's the attempt to summarize what's possible in Hotovo to get your hands on if you're interested enough:
!Sarcastic dump alert
Spring/JavaEE - you just can't dodge that, can you?
React - you don't want your guru frontend guy to fix every little detail. You're on the hook!
Rust - this is the new cool guy on the block, right? Or should I say the blockchain? Let's try it out on supporting tooling. Loved Scala reincarnated only if I didn't have to spend the afternoon fighting with the borrow checker.
Bash - let's google 'if' statement every time I'm not using it for more than a month.
Python - how else you can write an Ansible plugin if the world has not invented yet what you need?
Quarkus - careful here, this is a serious competitor to good old Spring Boot. Let's migrate JavaEE to Quarkus, compile to GraalVM's native image and run on an ARM based system. Feel the edges cutting yet?
Micronaut - hold my beer! Bash the reflection and runtime proxies. Macros everywhere (or actually compile time annotations and processors)!
Ansible & LXC - because Docker users are mob.
Docker - looks like you can't avoid the mob.
Kubernetes - why should it be simple when it may be super complex? Spin up your minikube, kubectl, helm, kustomize. Just don't forget to change the production namespace when deploying to GKE cluster!
Kafka - how else you'd want to jump on the event sourcing microservices architecture bandwagon? The question remains what happens with the Zoo when the Zookeeper stops responding.
Prometheus, InfluxDB, Grafana, Elasticsearch - people love graphs. Of course you need to eat your own dog food so let's monitor everything.
Cloud stuff - when you realize your life is too simple with a single app server, you end up with Cloudfront, Api Gateway, Load Balancer, ECS/ECR, EC2, RDS, S3. Now we can handle the load and failures!
CI/CD - push your commits and watch it being built, tested and deployed while sipping coffee and tapping yourself for such a good job!
Does that sound interesting or intimidating? I'm not even sure to be honest. It's just what we do and what complex software development professional life is about.
If you want to live it with us. WE ARE HIRING!