Articles about Rockstar developers, 10x developers, super developers, etc, etc seem to pop up regularly. I wondered about Rockstar developers and CRM
- Are there Rockstar developers in CRM?
- What difference would they make?
- What exactly is a Rockstar developer?
My initial thoughts when the term rockstar developer is used
It seems an odd thing to focus on because a single developer can only write a limited amount of code and development and CRM development is a team game. No matter how good one individual developer/coder is they will have to work with others, communicate with other.
like the average football team who has one super star player, the team can be easily beaten by a decent team all working together, Germany one the world cup using this philosophy.
If you want to read some good posts on the subject of Rockstar developers, I recommend the links below
The Myth of the Rockstar Programmer
The Myth of the Rockstar Programmer
Rockstar isn’t the right term
Using the word Rockstar doesn’t seem to ring true when talking about Developers because when I think of Rock stars I get the image of cool young people making lots of noise, rebelling against something, worried about looking cool, doing drugs, going to parties, sex, front covers of magazines.
This isn’t the image I get when I think of Developers
Rockstar and programming/developer should be a GoogleWhack – 1, two words which bring back no results because like oil and water they don’t mix (GoogleWhack brings back one result)
What we are really talking about are an experienced and skilled developer
How do you measure a rockstar developer
Q. How do you measure a rockstar developer
A. With a tape measure, boom boom.
I’m showing my age, there is probably a tape measure app people would use, but the question is a valid one. What criteria do you use to measure how effective a developer is.
If you type in how to write good code, you will get pages and pages of results and all of them different
Top 15+ Best Practices for Writing Super Readable Code
My opinion, code needs to be readable, well-designed, simple and the code should avoid complexity
this quote is pretty good
Junior Engineer – Creates complex solutions to simple problems.
Engineer – Creates simple solutions to simple problems.
Senior Engineer – Creates simple solutions to complex problems.
Rockstar Engineer – Makes complex problems disappear.
Good code makes it easier to debug, extend and maintain, it has to be well structured and decoupled to achieve these
My personal view is a good developer will save you time in the future because there will be fewer bugs, correct architecture chosen, the code will be easier to debug and enhance.
At the time of creating the code an experienced developer and an inexperienced developer might take roughly the same time to create it, most of the problems come later down the line.
Rockstar Developers don’t just write code
When people think about developers the first association will be with code it brings up the question
How long do developers spend writing code?
A more pertinent question for rockstar developers
How long do experienced developers spend writing code?
Senior developers spend a lot less time writing code than most people think. There are a lot of other tasks
- Gathering/understanding requirements
- code reviews/mentoring/explaining
- Code Design
I wrote a blog post 13 signs your CRM project is doomed, if you look at the list of reasons why projects fail the code isn’t usually the problem, project troubles are usually because of the people element of the project.
This is where the concept of a rockstar programmer starts to get confusing, are rockstar programmer/developers great communicators because looking at the list of tasks I would say more than half of their working life will be spent communicating with people.
Code is one of the many small parts of a successful project
What do Senior/Rockstar Developers bring to a company
The most important thing is experience. In my blog post Why .NET developers struggle with CRM Development it highlights the importance of experience.
Avoiding costly development mistakes
Experienced developers have already made lots of mistakes, so the benefit, of hiring an experienced developer, is they avoid making them (mostly) in the future projects. Not only do they avoid making the mistakes themselves but they also guard against other developers making those mistakes in the projects they are working on.
Create best practice documents
Good senior developers are great for creating best practice documents which are not just built on similar documents and ideas, but based on experience.
Experienced developers are often very good at assessing third-party software
Getting initial integration projects up, running and working can be difficult. Experience in working with other/simpler third party software and experience of similar projects is vital, senior developers have good processes to work through the problems and create good solid code for other less experienced developers to base their code on.
Helping other developers
Development can be a difficult place for inexperienced/junior developers. There will be times when they hit a brick wall and are well and truly stuck. The answer can often be found neatly placed in the experienced developers head.
Experienced developers provide a good example to junior developers via actions and code. Senior developers provide useful guidance for junior developers, keeping their code and customizations adhering to best practices and avoiding nasty code smells.
A good senior developer on a project seems to keep a project calm(er). The senior developer will help keep the code quality to a good standard. The senior developer has key input in the design phase of the project using their knowledge and experience.
The design of a project is critical, poor choices can lead to problems later in the project lifecycle. The later problems occur in a project the more time and resources it will take to fix them.
Create a good team
I don’t think companies should focus on hiring rockstar developers because if you had too many Rockstar they are probably going to clash. I’m assuming someone who calls himself a rockstar programmer is going to have a big rockstar ego.
The good senior programmers I have met have often been humble people, willing to share knowledge, help others.
When hiring and creating developer department and teams companies need to focus on getting a good team with a mix of skills and experience.
I’m going to stop using the term rockstar, it just insight right.
Maybe I could use film star, a smooth, suave coding individual like myself, a coding George Clooney if you will.
If anything I would say good senior developers are more like good authors, writing and constructing things
Spine of the team
I don’t recommend companies go searching for rockstars (where do you look to find one?) but I definitely think you need experienced people in key positions.
Like football (again) it often pays to have a strong spine and buy good players in the central positions e.g. Goalie, Central Defense, central midfield and striker.
What happens if you don’t have a senior developer
I worked on a CRM project where there wasn’t an experienced developer on the project, it was a disaster. Everyone worked as hard as they could but wrong decisions were made, the project wasn’t planned out very well and inexperienced mistakes were made at the worst time possible.
I believe a lot of the mistakes would have been avoided if an experienced CRM developer had been employed for designing the architecture of the project and making sure best practices were adhered to.
The project was rushed and I believe rushed projects produce more code/rushed code. Rushed code increases the code complexity, read this article The problems with complex code and complex CRM Customizations to understand why it’s bad.
It was a great learning experience for me because I certainly never want to be in that situation again.
Senior developers mentor
Being a developer can be difficult because a lot of the time you will be out of your comfort zone, integrating with SDK’s, 3rd party software, databases, etc for the first time. This first stage of understanding for developers is getting the code to work.
As you progress you learn more about how the tools/code work and build on your theoretical knowledge. The building of the knowledge is an important stage because this allows you to understand why things don’t work and logically work out how to overcome this.
Deadlines do not always allow for developers to acquire the knowledge and just need to get things working. Senior developers can get things working and explain why something wasn’t working and why things work a lot quicker and in a way the developer will understand it.
Senior developers are a safety net
Senior developers act as a safety net and a calming influence. Even when the senior developer doesn’t have experience in a particular area they the knowledge and experience to calmly work through problems.
Senior developers will help a project and other developers avoid a lot of common errors, guiding the project away from them, like a captain of a ship who has a map, the senior developer can steer the ship through the shallow waters.
What if you have no senior developers
Some companies will believe they can train people on the job and the developers will become experienced. This is undoubtedly true, but it will involve making lots of mistakes, which could cost the company time and money.
Mistakes in the design of a CRM project can cost many hours in the support/maintenance phase of a project, when extending, maintaining and debugging the project take considerable more time and effort.
Mistakes and problems can be the difference between delivering the project on time and delivering the project late.
Why is this true? inexperienced developer will
- Take longer to do customizations
- Poor design can lead to problems later in the project
- Make more mistakes whilst learning and gaining experience
- Does not always choose the correct type of customization
- Create complex code and customizations, which are difficult to maintain, debug and extend
- Can have problems integrating with 3rd party software and tools
- Increased likelihood of late delivery of the project (due to problems with code and incorrect estimates)
Not just developers which are important to project
You need good project manager
Project managers can be very important in a project, particular if you have a customer who wants a lot of interaction, questions, change requests.
Good project managers can buffer the development team from constant distractions, keep the project on track, set customer expectations and deal with political situations.
Good senior developers are good at developing, so it can be a waste of their talents if they spend the majority of their time communicating with customers.
A good office culture atmosphere
A good office atmosphere can be the difference between developers leaving and staying. It’s bad for morale when good developers (or good employees) leave the company.
People spend a lot of their lives at work, so a good working atmosphere is important for the health, well-being and productivity of the employees.
A good office atmosphere can be the difference between your best employees staying and leaving.
Developers want to feel they are progressing their careers.
Pay your developers enough money
If a developer is on LinkedIn and he has a profile which has been updated in the last 2 years then I can almost guarantee they will be receiving messages from recruitment consultants with suitable jobs.
Even if you take into account the poor quality and scatter gun approach of most recruitment consultants (annoying practices of recruitment consultants) the potential jobs will give the developer an idea what they could be earning. If the gap between what they are being paid and what they could be paid is too big they cured be lured off to a competitor.
A good mix of experience
Projects and companies need a good blend of experience. Too many senior developers could lead to frustration at the lack of opportunities. Junior developers can learn a lot from a senior developer who can help them improve at a good rate because not only will they be able to teach/mentor junior developers but senior developers will be teaching from example (actions, code, processes etc).
So should you hire rockstar developers
If the developer thinks they are a rockstar then probably not, experienced developers spend a lot of time interacting with people (face to face and written communication)
It’s important to have experienced developers in a company they can help set standards, keep projects on track and share their knowledge with many developers.
When hiring a developer you should consider how they will fit into the company culture and other members of the team. In my experience, great developers do not call themselves rockstar developers so I would think carefully if you found one who does.
As one of those “Rockstar” types, I use the term CRM Architect. Typically the Architect owns the technical design and delivery of the solution for the client. They can develop, but don’t spend much time doing it. They empower others.