Someone suggested 20% time, your response was to say that it was on hold for a year. Someone else suggested letting him work on something he finds interesting for a while, you say that there are a few things he'd like to do, but they're not 100% aligned with what the company wants to do.
Ultimately, you need to decide just how much this person means to you. Do you want their attention 4 days a week, with 1 day being spent on something they find interesting, or do you want them 0 days a week. Either is valid, but you're going to have to choose.
you could compromise, one day every other week?
Look at it this way: You can give him 20% time or he'll give you 0%.
Since you seem to be intent on being a robot with regard to personnel decisions, there is only one question to answer: Is your company going to go down the tubes if he/she leaves? If so, do what you can to keep them. If not, cut ties and move on.
As an aside, I find it humorous that you're consulting an anonymous online message board for this type of advice. Surely you've handled more difficult problems than this in growing to a 50 person company?
Perhaps importantly: maybe "lead" roles no longer have any meaning, but if you are determining the engineering schedule months in advance, in enough detail for him to know it won't be interesting to work on, he could be frustrated by the micromanagement (whether it is real or only perceived is something I cannot know).
Does this seem fair?
Why is it fair to increase the wage so slowly? Either less experienced developers are not worth the money to begin with or someone, somewhere has an idea of what the max cap of a developer is, and sticks to it.
Anyway, you're asking a room full of developers what they would want and they're telling you. 20% time is a solution that works. Toiling away on the same problem day after day sucks and it gets boring. 20% time breaks up the drudgery.
I suspect that you don't want to solve the developer's problems though, just your own.
Management is hard. We're all learners when it comes to working with people, especially when some of the people are smarter than we are. Keep learning!
People leave for a lot of reasons, and not having opportunities to grow is one of them.
You want to be equal? Everyone with the title Senior Staff Engineer gets to work on super awesome forward looking new space car. Or maybe just 20% time and a ton more stock options.
As far as "special treatment" goes, why not extend this to all the leads? It seems reasonable to have these folks pushing the technical boundaries for the company.
In which case let them leave and replace them with another equal developer. Though I am confused as to why you call them one of your best and yet say all developers are equal.
As a practical example, Dynamighty listed every full time Dynamighty worker in alphabetical order on CounterSpy, but then called out individuals by their major contributions within the longer credits. It's not a perfect system, but it provided a good balance between giving due credit to folks who worked long hours for equity and those who were making normal salaries the whole time.
And all developers are not equal, but you know this. Treating them as such is destructive.
And it doesn't have to start at 20%; if your core product can't afford everybody to take 20% time toward interesting things, then 10%.
1. Skin in the game. Equity, profit sharing, guaranteed monthly bonus based on performance. Doesn't really matter as long as we share. Because if I'm good and work hard, I want to enjoy the results too. A fixed salary is not going to cut it anymore.
2. Freedom over actual implementation and veto power. You may be good at running a company. But I'm great at building things. So when you give me a task, don't tell me how to do it. Yes, we can talk about it and make decisions together. But I must always have the last word. Because, more often than not, I understand things better than everybody else. Including you.
If your lead developer does leave, expect a major slowdown, morale decrease and even further resignations. On paper he might look like a replaceable asset. But your development team doesn't see it that way. We're all humans. And relationships matter.
- Give them flexi-hours. They can come and go as they please so long as either a minimum amount of time is worked or better still they are measured on output and not on time
- Give them the opportunity to work on research and development (aka 20% time)
- Give them the opportunity to work on problems that your company has. If you have 50 people and several development teams I'm sure there are lots of internal problems this developer could help address
- Give your developer people to mentor. S/he might relish the opportunity to help others raise their game to his/her levels of awesomeness
If none of that hits the spot, find out what motivates your developer and work out how to align his/her motivations to the output of the work they go on to do.
Above average developers are not easy to find. You need to make sure that you've done everything in your power to keep your best developers onboard as replacing them is not easy.
A note to employers around this, let the developer choose the project - even if it has to be relate-able to the company in some way. If it's a big company I'd love to go to other areas of the company, meet people in other areas of work and ask them about their work flow, problems they encounter day-to-day and if it's interesting and tech-solvable - build a solution!
Or if your devs aren't as "go-get-em" as I appear to be, offer a few examples that you've researched and offer them the opportunity to do the above.
Give him some opportunities to pitch some ideas, contribute, or find ways to let the developer be invested in the work. If that is not possible, maybe give him some leeway to do some personal projects or side projects for the company.
Even if you're doing your own project, there will be a bunch of boring unpleasant work.
I have personally been in a situation where I quit from a company of similar size because I got bored. First of all, the work wasn't all that challenging on a technical level even though we got to work with the latest bleeding edge technologies. The second reason was a lack of room for career advancement due to a very flat hierarchy. The third reason was a lack of strategic vision for the company itself. Essentially, I was stuck in a dead end position with basically no input on the company's strategy. I did propose some ideas that were later successfully implemented by other companies but ignored or delayed by mine which was highly frustrating. So, in the end, their attempts to retain me (and even re-hire me a year later) failed. I actually liked the team, but the negatives outweighed the positives.
When thinking about this episode some years later, an idea came to me. What I really wanted was to have more input, more responsibilities and a way to fix the problems I saw on several levels of the company. What I should have asked for was a transfer to product management or possibly a dual role in PM and development. At the time our product managers were exclusively people with business backgrounds who often had problems understanding the technical details as well as possibilities and limitations. With my technical background I would have been able to help bridge that gap. I would have also had the management access and strategic input that I wanted and would have most likely been a more valuable asset in that position than as a pure developer. But I didn't think of this and neither did they.
The bottom line is that sometimes it can make sense to not only think vertically about possible career moves but also horizontally. You may not have a choice when it comes to losing your developer, but said developer may be even more valuable and happier in a new role.
I have seen more than 10 or 15 cases of developers who were hired to develop and evolve a product and get "bored" after they learn the new tech that brought them to the company/project and use this as an excuse to not finish the project or keep running the product/company.
I'm not saying that keeping working with new tech or new projects is a bad thing, but it is usually a bad thing for companies to keep such people when what they need is someone to help the company grows and move forward.
I would suggest you to offer him a position where he could use his intelligence and tech skills to help solve real problems for the company and not only program. A few examples:
* Put him in touch with your operational people - If you an e-commerce that ships physical products, let him known and learn how logistics works and what pain points they have
* Make him participate in marketing/product growing meetings and let him help bring more money in
* Enable him to help other developers or fix major problems in the product - not technical problems by themselves, but real problems that slow down the development
If he doesn't want to help maybe he is not a keeper and should be better off doing consultancy/freelancing projects where usually there is not much responsibility once the project is finished.
I see great value on being technically safe and capable, but most of the time what is most valuable is people eager to work and make things go forward for the company.
My guess is that those developers saw the clusterfuck in your company. And instantly decided "Fuck this bullshit. I don't get paid enough to care.".
Without loyalty, or at the very least aligned incentives, you will never get the most business value out of developers.
Early on in my career I was the sole dev looking after a large legacy system. For 4 years I worked really hard and added a lot of business value. I was not rewarded at all; No promotions, minimal pay increases, no respect etc. All the while my tech skills were getting out of alignment with what the industry was paying well for.
How did you end up getting your next job?
I was in that situation once and the main reason that I was able to make the next move was because I was working on a side project which gave me the experience.
If a company doesn't respect, value, and trust their developers it is very difficult to change their minds (as a developer). I tried for over a year.
I've found it is far simpler and more profitable to focus on the skills the market values rather than focusing on what is best for a specific business.
I'm not altogether lazy. I can always find something to do on my own that is at least tangentially related to the goals of the company. If nothing else comes to mind, I try to find and retire some technical debt, because there's always some technical debt lurking around somewhere.
So when I get bored, it is because I have been forbidden to do things beyond what I have been allowed or ordered to do. It is because I feel that any initiative will be ignored at best, or punished at worst.
Boredom is a subset of frustration. If there are any bored developers at your company, you need to take a long, hard look at how you allocate their time. And if the lead is bored--the person who should nominally have the most flexibility and autonomy on the dev team--I guarantee that some people lower on the totem pole already have their resumes out there.
You want your developer to stay there, but only on your terms. Your developer is saying that they need an interesting challenge, but you don't have any to give, and you've taken away a significant perk for the good of "the company." That's a big problem, and unless I miss my guess you're going to start losing other developers as well. A company is made up of people, and if your people aren't happy then they are going to go elsewhere.
However, in my case, a larger company group was the sole owner of the company and a significant part of the vision and goal went out the window after launch due to internal politics in the company group. This was demotivating because frankly, a large part of my purpose of getting on board disappeared. So this is one part to ask yourself, in terms of organisation/vision/company goals - has anything changed?
In terms of tasks, I'm motivated by actually creating value - shipping things that made sense business wise. During the first 1-2 years this was the case, but when strategy was changed to cut costs (yet again due to internal company group politics of the owner) I felt I didn't really contribute on the level I wanted (e.g. architecting/developing large scale, heavy traffic modern web application versus copy/paste the nth banner network JavaScript code for yet another ad).
Also, does the person have a niche in their role they particularly excel in and enjoy? Has it changed? In my case I very much was the bridge between business development and technical development. Getting tech people to understand business value of what to do, and work with business developers to leverage technology. When the company cut down on more or less all development and went into maintenance mode this opportunity kind of disappeared. Another take on this is that people may enjoy and thrive during different phases of a company.
In the end I asked myself - in the end of the year, would I feel I've made the most out of it in terms of personal development, experience and pure happiness if I continued with this - or would it be better to leave.
Not only will he appreciate this, but it will send a positive message to the other 50 who are wondering if they will have an interesting career or if they should be passive looking for other opportunities.
Are you sure the management / communication / teamwork is not the problem ? You may be setting expectations at the level that cannot be reached with your current team and management. Maybe you should set easier targets so that everybody stays motivated after reaching said targets.
I think that your idea of "soon" is very different from the rest of the world.
To bring the 20% rule back takes 1 minute: one email sent to everybody that says just that.
A bit less water cooler time talking about sports to avoid something boring, a bit less HN time, combined with fresh new perspectives and new techniques and new ideas can easily result in a net productivity gain. If as per other posts you do strict 40/wk then we all know that at 4:45pm most folks are stalling till 5 so if you officially let him whip out a book on cool new technology you've lost exactly nothing while gaining quite a bit for free. Only a madman or a fool would "start something big" 15 minutes before going home and you claim he's skilled so we can assume nothing of huge importance would be lost by whipping out a book at 4:45pm. Or on the other side of the clock we all know time is spent spinning up, some folks delete emails, some gossip or talk, if he spins up by reading "cool new tech book" or fooling around in another language for 15 minutes to get into the flow, again, you've lost nothing while gaining quite a bit.
Get there faster by going slower, kind of thing. If you're lost in the woods, running as fast as you can just makes you die tired, so slow down.
If it is just grunt manual labor like data entry, then it is probably too boring to be fixed under any circumstances, but you claim in other posts to never hire juniors etc so by your own definition you can't be that bad... probably.
I read your comment of only requiring 40 hour work weeks. That shows you're aware, I wish more employers had that outlook.
This may not be popular, but I think you do need to make an exception to the rule, while maintaining it for the other 49.
People will understand if the the Lead Developer has "research projects" that stay undefined. It might even accidentally inspire some to want to be the Lead Developer.
Going by that alone, it sounds like there are serious problems. A year is a LONG time in development world. If I knew I was going to be working on one product for a year--and clearly that product was having problems, I'd look for another job too.
In my experience, every time someone leaves another person blossoms and steps up. I've seen "irreplaceable" developers come and go, they were all replaced.
Also, didn't Google Maps and also Google Mail, come from a bored developers 20% time?
In line with other suggestions, if you can afford it, give him free reign to do what he wants with a budget too. It may well be the best thing you ever do if he really is as good as you say he is.
Then he'll feel that his role is more important than just do-it-all coder.
Alternatively boost his salary. Don't become the next statistical corp where the only way to get raise is to leave.
https://hbr.org/2013/04/does-money-really-affect-motiv
"Other than its functional exchange value, pay is a psychological symbol, and the meaning of money is largely subjective. For example, there are marked individual differences in people’s tendency to think or worry about money, and different people value money for different reasons (e.g., as a means to power, freedom, security, or love). If companies want to motivate their workforce, they need to understand what their employees really value — and the answer is bound differ for each individual. Research shows that different values are differentially linked to engagement. For example, income goals based on the pursuit of power, narcissism, or overcoming self-doubt are less rewarding and effective than income goals based on the pursuit of security, family support, and leisure time. Perhaps it is time to compensate people not only according to what they know or do, but also for what they want."
(This works better if he's older, if he's in his 20s and bored then you should already start looking for his replacement)
I would look at providing more freedom for creativity. If you know the developer well enough, you know it what angle that creativity could take. It could be a new language, it could be new technology challenge, or it could be outside of tech and doing more business/marketing/sales stuff.
Dan Pink had a great talk/video where he talks about what people need: Autonomy, Mastery, Purpose. http://www.brainpickings.org/2013/05/09/daniel-pink-drive-rs...
Try providing more of these things and boredom should go away.
The word is probably ennui.
My first scala - play framework project, first toy that tried to do something real, was an excruciatingly mind numbingly boring engineering raw data form entry page (like only the C and R letters of CRUD). Playing with a new framework for a demo/mock up was huge fun.
Beware of the danger of the well known business anti-pattern where the "mock up" "demo" magically gets promoted to "production" when things spiral out of control and then things really hit the fan when it breaks or the requirements expand beyond all imagination. "This temporary mock up will be deleted on June 1st" or whatever probably needs to be on every page and in every header.
Sounds to me like this is a deeper issue around control and management and boring is just the excuse to not work on something s/he doesn't appreciate being "arbitrarily" forced to work on. (Do they understand and agree with the company focus? Understand being the more important word).
This also makes me wonder if there is a communication barrier that prevents genuine dialogue.
My gut tells me that you probably won't agree with me or change...so it's probably best for both of you to let him/her go.
Imagine that your work 9 to 5 is creating some CRUD forms, and your company gets payed because you create those forms so, start investigating by your own is not a chance anyhow -> YOU GET BORED and you can not change the situation just by yourself.
There's more to being a lead developer than just having coding skills and technical knowledge. If he is immature enough that getting bored gets in the way of his work ethic, he has no business being a lead developer at all.
On top of that, if in your entire 50 person company there is not even 1 task that interests him, might not be such a good fit in general.
So the dev is in a dead end role, "forced" to spend his days working on pointless/less important features. It's no surprise that he is bored/frustrated.
TL;DR:
1) Boredom is a sign of little intrinsic motivation to continue working.
2) Simply throwing cash at people isn't enough, in fact, it can be counter productive to think tossing cash is the only solution.
3) People need to feel a sense of autonomy and ownership to value their work. Find ways to grant it.
4) Don't be arbitrary and capricious with your benefits. Simply yanking something is a really good way to breed resentment and cause you to lose even more talent.
5) Consider how you're communicating with your teams. Are you issuing edicts or asking for help solving problems?
6) Think about how you consider developers: Are they valued contributors whom you've hired because they bring something to the table you or others don't, or are they 21st century factory workers who crank out pieces based on edicts from someone else? How you view them subconsciously determines how you treat them and as a result, how they will respond to you. It will also determine the kind of talent you're able to find, hire, and keep long(ish) term.
7) Cultural knowledge and team cohesion matter, you can't simply put a $$$ on it. High profile developers leaving because of semi-public conflict with the company will have a ripple effect and you will probably lose several more lower rung developers who look up to the lead guy because of it. People matter and don't always act simply because $$$ are on the table.
============================================================
Boredom is a sign of lack of motivation and purpose. The individual in question does not see their interests and corporate interests being aligned and thus has little intrinsic motivation to continue working beyond the bare minimum. As your lead developer, this should worry you significantly because their attitude will trickle down to the rest of the development team. Simply firing them sends the message dissent in the ranks isn't tolerated and people who don't keep with the party line get canned, it's a fast way to lose talent and the fallout won't be insignificant. In one of your comments you argued that all great developers need is a high salary, that's patently false--as the comments here indicate. In psychology speak, this is what's happening.
Only providing a high salary--and removing things like 20% time--are creating an environment where the only motivation to do work is extrinsic (the paycheck) and the loss of autonomy (no say in features/implementation/direction) means employees start believing they are losing their locus of control over even small things. Over time, this erodes their intrinsic motivation and interest in doing the work because they perceive the company views them simply as drones who do nothing except what the people "in the know" say. Is this correctable? The answer is yes, providing the company makes some substantial effort to address matters both immediately and long term for all the developers. First, simply throwing cash and trying to extrinsically motivate people to like things isn't enough, if you want truly excited workers you need to work on aligning corporate and personal objectives. You do this by giving them a sense of autonomy and control where they feel they have a say in how things are going and get some skin in the game. You can start simply enough by soliciting your lead developer's feedback and getting them involved in production meetings where feature sets are being decided. Lean on their expertise and seriously consider what they say and solicit their suggestions for features or improvements. Second, consider setting higher level objectives for development and letting developers/designers come up with the plan to meet them. You still get your business objectives accomplished, but the developers and designers feel like they're contributing something more substantial than punching someone else's schedule. Third, come up with a way to reward service and talent that allows people to explore and get a sense of autonomy. Many have mentioned 20% time where the developer works on other projects. that's one aspect. The other might be to ask the developer to undertake a solo R&D project where they flesh out a new system the business has been planning on or version 2.0 of the product. Anything that gives them a sense of autonomy and ownership. It'll go a long ways toward helping cure the problem. Perhaps also create a sabbatical program. After 1 year of "work", employees get a month of R&D time to explore new technologies and projects on the company dime after they reach "lead" rank or something like that. There's a reward for longevity and experience.
Corporately, what the heck are you doing? Simply throwing cash at people doesn't get them to stay for the long term. They need to buy into a vision and believe you want them to succeed. It's a reciprocal relationship. The few comments you've posted in some of the comment threads here leads me to think--and I freely admit I could be wrong--you see developers more as Pavlovian conditioned cogs who exist fulfill some greater business destiny and happen to reside in human form rather than people capable of contributing to the organization. For instance, yanking things away because "business objectives aren't being met" (paraphrase). Hiring someone with the promise of benefit X (20% time in this case) and then yanking it will lead to resentment and boredom. If your lead developer is saying he's bored, it's a guarantee others are thinking it but not saying it out loud or voting with their feet--yet. Promising to reinstate the benefit, possibly maybe at some near future point, only makes thing worse because it makes you look arbitrary and capricious as well as reactive. You took it away, might reinstate it, and might yank it again in the future. If you're doing it with 20% time, what else might you do it with?
In light of this, my question is how did you communicate with developers about the 20% time and how are you communicating with them now? Did you talk to them and say "guys, we have a problem we need to solve together. We need to up product performance by X and right now we're at Y. Y'all are in the trenches and building this thing, how can we work together to get there?" Or did the conversation go "Guys, product performance is at Y and we need to get to X. Blah blah blah sacrifice for the team blah blah blah, cutting 20% time to free up more time to focus on product blah blah blah together we can achieve this. End Transmission."? The reason is that perceptions matter. One method of communicating tells the development team you view them as a stakeholder who has insights you do not and might have solutions to the problem you hadn't thought of. "Geeze boss, we're blowing a lot of man hours on a couple cosmetic features not related to the current problem. If we suspend that work, we can reorient the teams like so, get so many more people involved and chunk up the workload more efficiently." Then you can have a dialogue about the importance of the features, business objectives and such so that everyone reaches happy conclusion. Conversely, sending the message about pulling benefits--that were probably advertised when you hired--sends the message you see the developers as a machine you reward or punish for effort and nothing more. Over time, this mentality results in people being ground down and believing they aren't valued. As soon as they reach that realization they'll quit and move somewhere else meaning you'll have major turn over in your development department and lose a massive amount of corporate knowledge in the process.
Edit: Formatting