The Dev-X Project is a series of features with industry leaders sharing their developer experience insights. In each “episode”, we ask an industry leader 10 interesting questions about DX, collect their responses and insights and share them with you.
Today we are featuring insights from Adam Gordon Bell Director of Developer Relations at Earthly.dev
Adam is an experienced software engineer who has become a leading developer advocate voice in the developer community. In addition to his work at Earthly, he is the Creator and Host of the CoRecursive Podcast, interviewing experts on concepts in software development and presenting their ideas in a developer-friendly format.
We appreciate Adam taking the time to share his insights with the community!
When did you decide to become a developer?
It started for me after we had a class on turbo pascal in high school and in the class we split into pairs and built a Yahtzee game. It was so fun I decided I wanted to do that.
What are the key ingredients to a really good engineering culture?
One key is to articulate a clear idea of what you want the culture to be.
What is considered in-bounds and out of bounds in this culture? What are your goals and core cultural pillars? Once you have that defined clearly, then promote those and protect those lines. This article covers it in depth.
The second key is shared experience. A great culture is based trust and understanding. Both of those build over time based on shared experiences.
Let’s say you’re building something from scratch. What does your ideal stack look like?
What tool to choose is such a tricky question. We live in a plentiful time where there are so many great options.
I’m currently building things in Go, with data in SQLite. I’m learning a lot and having a lot of fun. God’s true language is clearly Scala though 😉.
Tell us about an epic engineering fail you’ve experienced in your career. What did you learn from it?
This story requires some knowledge of Kafka, but here we go…
Once upon a time, I worked on a team using Kafka to process data. It worked really well and we managed to use the partial ordering abilities of Kafka and a cleverly chosen partition key to keep data consistent per customer at all times. We did this by partitioning data per customer.
This worked great until we had a customer large enough to overwhelm a Kafka node. With our customer-based partitioning, regardless of the size of the Kafka cluster, a single node needs to be able to handle all the throughput of a client.
When the large customer was onboarded the number of messages in that partition key were enough to make the broker node in question stop responding. It would then be assumed dead by the Kafka cluster and that partition would be assigned to another node. The events would be resent to the new node, which also stop responding. One by one we were forcing Kafka brokers out of the quorum. We were accidentally drowning them one at a time.
The lesson I learned was that distributed systems are hard and Kafka is a complex piece of machinery.
How important is “Developer Experience”? Do you see this as a trend that will evolve into dedicated teams/functions for mainstream tech companies?:
For companies targeting developers, the DX is the UX, so it is definitely important. So if you are at a dev tool company or if you take your APIs very seriously, you better make sure to make your DX a priority.
Let’s take the mono-repo question once and for all - should you ‘go mono’?
N/A - I’m not sure about this one.
What will be the hottest dev trend/adopted technology in 2022?
I am biased but clearly it will be Earthly and LiveCycle
Some claim that front-end developers will become irrelevant in the future of no-code tools. Do you see this happening? If so, how soon?
If anything I think it will lead to more front-end developers. There is lots of software still left to be built in the world.
Share some tips to help remote teams collaborate better.:
I think remote work is a tougher fit for some people. I personally have been doing remote work since 2010 or so and I like to think I’m pretty good at knowing what works for me. For me, the keys are to have dedicated work hours and a dedicated work office and to create some routines around work.
This might not be what works best for everyone though. Some may work well from bed while streaming squid game from Netflix in the background. I need my structure though.
Do you want to share anything else? Please share anything you think would be of value to the broader developer community:
Nothing more to add at the moment.