DX, or Developer Experience, refers to a Software Developer's day-to-day experience of performing the job of Software Development. The better the DX, the happier you are with your job as a Software Developer.
"Nothing Ever Becomes Real Till it is Experienced" - John Keats
Developers who work for an organisation will have to adhere to the processes, tools, and approaches that are in place. These are generally based on factors such as the kind of software being developed, external regulations, who the customer is, and the size of the team developing the software.
What is the best way to develop Software?
Consider this question: "What is the best way to develop software?"
Does any particular answer pop into your mind? Can this question be answered in definitive terms?
I don't think so.
This is because there is no magic bullet that will work for every single Developer or Development Team.
Every organisation is different and every individual within that organisation is different. Therefore, the best way to develop software depends on various factors.
With that said, the question we can realistically answer is: "How can an organisation ensure a software developer can perform their job with minimal disruption?"
Again, the answer to this question may not be definitive but it can at least provide a framework based on which wise decisions can be made.
I would like to approach this question by considering two angles:
The things that make a developer's life easier
The stage where a developer is in the course of their career
To understand this further, let's look at the different stages of a developer's career and how each stage relates to DX.
1. Junior Developer
When starting out in a Software Development career, you are most excited about the work you will be doing and the tools and tech you would be using to do it. At this stage, you would also find that, beyond the technology and the nature of the product or service you are working on, it is immensely useful to have access to a more experienced developer so that you can approach them with any questions you may have.
a) Modern Tools / Tech and Practices
As a Junior Developer, you are typically excited and eager to make a good impression at the start of your career. However, depending on the organisation you work for, things may or may not be happening at the pace you would like.
A start-up would typically be more fast-paced and exciting - matching the expectations of a Junior Developer. Tools and Tech would tend to be more modern and slick. However, a fast-paced environment can mean that more mistakes slip in, unless there are checks in place to ensure that this is minimised. It is therefore important that you have access to mentors that can show you how to do things correctly.
On the other hand, a well-established organisation may have a slower pace. While this may be 'boring' for some fresh-faced developers, it is also a good environment in which you can take your time to learn how things are done properly and carefully. This can set you up with skills that make them more reliable over the course of your career. However, there is a lot to be said for learning from your mistakes - as long as this can be done without any impact to the organisation or the rest of the team.
The tech at larger, more established organisations may not be the latest, with a good deal of legacy code to deal with. Such things can hamper DX. In such cases, it is important for the organisation to have a Continuous Improvement plan with a vision for steadily improving the tech over a reasonable period of time. This is is not only good for the organisation but also keeps developers looking forward to better things with some even getting involved in migrating to newer tech.
b) Access to Documentation
Another major contributor to good DX is access to relevant learning materials such as documentation of the organisation's systems and practices. These may be things like guidelines for coding practices, documentation of software and systems that you as a developer are working with, or project set-up guides. Any information that enables a developer to do their work independently makes for good DX.
c) Access to Coaching / Mentoring
In a well-functioning team, one or two experienced developers would act as mentors for junior members. The benefits of this are two-fold:
Knowledge transfer becomes seamless and part of day-to-day activity
The DX for you as a Junior Developer is greatly enhanced as you have the confidence that you can turn to someone for help when needed.
2. Mid-level Developer
At this stage of your career, you have a few years' experience under your belt and are looking to hone your skills and become more efficient. You are also probably looking for a change and want exposure to varied projects so that you can expand your knowledge and expertise.
a) Continuous Improvement
Is it important for DX that an organisation adopts a policy of Continuous Improvement when it comes to development tools (which could include the tech stack) and processes. This helps to retain mid-level developers who are perhaps looking for a change. If you, as a Mid-level Developer, know that modernisation of the tech stack is something that will happen in a few months, you are more likely to stick around as you will have the added benefit of familiarity.
b) Access to Coaching / Mentoring
At the Mid-level, you would want to see what your options are in furthering your career. You are no longer just looking to 'get things done'. You want to do things better and you want to know what you can do next. It is therefore good DX for you to have access to someone who can guide you along your career path and help you decide what you want to do next within the organisation and how to get there.
c) No Micro-Management
As you become more skilled at your job, you do not want people looking over your shoulder or prompting you to get things done. You know what needs to be done and you just want to get on with it. Organisations where managers trust developers to get the job done are the places where developers tend to stick around. A constant barrage of 'is it done yet?' or 'what are you up to now?' makes for bad DX as developers will feel that they are not being treated like grown ups.
3. Senior Developer
As a Senior Developer, you are now seen as an expert and as someone who can guide less-experienced members of the team. This means you need to juggle your time between actual coding work and other duties such as mentoring and code reviews.
a) Time for Non-Development Duties
It is important for your DX as a Senior Developer that you are given enough time for non-development duties. Having more responsibilities but no time to keep on top of them is sure to affect your DX. For good DX, you must be given enough time to address all your responsibilities, be it driving general improvements such as code quality, processes, tech stack and other aspects, or performing code reviews and mentoring less-experienced members of the team.
b) No Micro-Management
At the Senior level, you want to be able to work with independence and flexibility. You are likely to have more responsibilities in life (such as family / kids) so you don't want managers breathing down your neck on a regular basis. At this level, you want to be trusted both at the operational and strategic level and be seen as someone who can impart wisdom in both day-to-day work and in crisis situations.
c) Access to Upper Management
At the Senior Level, you would find yourself thinking more strategically and more long-term. You like to take a bird's eye view of things and think about how things can be changed so that they are future-proof and sustainable.
Continuous Improvement becomes the heart of everything you do. As such, it becomes useful to have access to Upper Management who you may need on your side to push through long-term strategic plans such as migrating from legacy systems to more modern tech, or investing in better infrastructure or more testing resources. If you know that your voice is being heard and your plans are being supported by Upper Management, that makes for good DX.
d) Clear Future Vision
At the Senior level, you would (or should) have more time to think about what you want next in your career. By now, you know your strengths and are comfortable with who you are. The question that usually arises at this stage is whether you want to get out of your comfort zone and push yourself further, or stay where you are. The answer to this really depends on what you want.
If you do want to get out of your comfort zone, you could be looking at a sideways move to a different team or even a different organisation, or an upwards move to the position of Architect. You may even think about a less hands-on and more strategic role such as Development Manager or even CTO. Whatever your plans are, working in an environment where you can openly talk about your aspirations makes for good DX.
Wherever you are in your Software Development journey, you want to be a valued resource to whatever organisation you are working for. If you are valued, you will be treated with respect, and this is the essence of good DX.
For more posts of this nature, subscribe to my newsletter. Feel free to leave comments if you have your own opinions about DX.