Creating a good foundation for a great developer experience
This is a follow-up article to one of my posts I made lately that covered my recent and past experiences as a developer, software architect and staff engineer.
When working in a large organisation of software engineering teams building many complex products, I have found that there are some basic things that makes the lives of developers much more pleasant and increase developer happiness. As a side effect the quality and productivity is also improved. It's a win-win recipe.
The 'paradox' of complete freedom of choice
Freedom of choice is often perceived as something that will make developers happy. Of course it is better to allow everyone to use the tools and products they want to! Or is it really?
Leaving up to the team or even individual contributors to select programming languages, frameworks, platforms and architecture might seem like a good idea, but my experience is actually quite the opposite. From what I have seen over the years developers are not happier without boundaries and guidelines. Restricting the degrees of freedom on a certain level though, will boost developer experience and happiness.
That said, I think it is important to let developers decide on their own exactly how to solve problems on a lower functional and code level. No one likes to be told how to implement a certain algoritm or piece of code logic.
The helpers
I have identified 4 things that will help developers in their job by setting up guidelines and rules.
Choose boring technology
This by now pretty famous, and fun presentation by Dan McKinley makes a point about not using every new shiny toy you stumble upon, but as often as possible resort to using well known and proven (boring?) technology when building a solution. He makes a lot of arguments that makes sense to me, that I strive to follow.
领英推荐
Simplicity is the ultimate sophistication
A quote from Leonardo Da Vinci, meaning that simple solutions are better than complex ones. This can of course be applied to software engineering and is almost always true.
Wrapping up
I know that my views on this by some people sometimes is seen as controversial and backward-looking. Why would anyone want to take away the joy from developers to learn new things and use new shiny toys? It is really not about that at all. I do think that to be a good, or even great developer you need to constantly learn and develop as a professional. I do not see this as something contradicting at all.
There are times for experimenting, learning and looking at the latest in the market. But the time is not when you try to create value in building software that is secure, robust and reliable, and doing this with high productivity and top quality as a goal.
I hope this little writeup can inspire, upset or at least spark a thought with some of you ??
As always, I love all comments and feedback. Please share if you like.
(Opinions expressed are solely my own and do not express the views or opinions of my current or any former employer.)
/F
SW Engineer | Opinion Leader | Public Speaker
1 年Great writeup Fredrik. Enjoyed the original post and even more so this more elaborate take ?? Am definitely of the same opinion in terms of restricting some degrees of freedom being the way to go ??