i hear this often. and i've worked with some people like that, many of whom i admire (in some ways).
yet i am not at all opinionated (as far as i can tell). when people ask me for advice, i often find it very hard to guide them because there are so many options, and what will work best seems to depend so much on non-technical factors.
and i am not sure what to do about this. i have tried being more opinionated, and there are times when a decision affected my work and i have fought for what was right, because i am doing the work. but often other people, opinionating, just seem like noise (worse, sometimes i suspect people confuse being opinionated with understanding something).
no real conclusion here, sorry. sometimes i wonder if people are too opinionated; sometimes i wonder if i am not opinionated enough (or if i am not that talented - although i do take re-assurance from the d-k effect). but that part of the post, and a related comment by the author here, disturbed me a little. i am not sure a place full of opinionated people is that pleasant (or optimal).
i was wondering if this touches a chord with anyone else?
Fortunately we found a solution and the group self-corrected wonderfully. The team is now 20 strong and an awesome no-bullshit engineering culture. We found that the key to a constructive conversation is to have an owner: someone in charge of the subject at hand, who is held responsible for the result, and in return has authority on how to go about it. Everyone else in the conversation is a peer, voicing their opinion non-authoritatively and acknowledging that the owner has the final say. Rule of thumb: ask "who's the owner?". If there's no clear answer, you're not getting work done.
In a group of smart and trusted people, this creates a culture where you earn your spurs with what you do, not what you say. Opinions become more like washing the dishes: useful and necessary, but not something that will get you pats in the back either. In fact if you take your dishwashing skills too seriously you might find yourself a source of amusement.
We later found out that Pixar uses a very similar peer feedback system for its productions.
Being in a place full of opinionated people is nice, so long as those people are able to discuss their opinions rationally and are okay with not getting their way every time.
as j_baker says, it seems like it's just one of those "life is complicated" things...
One should be able to hold multiple conflicting ideas in one's head (double think), each with varying amounts of evidence depending on the current situation. Furthermore, one should be able to switch between said ideas quickly and easily depending on what is needed to successfully complete the task at hand.
For example:
If you want high perf/dollar when doing a data analysis across billions of rows you know that you should run on a commodity cluster and with bare metal high performant C++.
You also know that if you want to get something done really quickly (elegant - not performant/efficient), you stick to what you know (Python/Ruby/Perl etc.) and get it done today. You know that if need be, you can just scale it out later with a more performant architecture.
Both opinions are strong. Both are weakly held. The best one wins depending on the situation.
In short, opinionated people are just another type of person you have to deal with. If you can't make yourself be as opinionated, that's no big deal. If this is a significant problem for you, perhaps it's best to figure out what skills you have that would complement "opinionation".
Or the free 20% at Google.
I get the feeling that if you have a group of highly talented people around, it really pays off to give them much freedom.
From the view of the employee, it is also probably a much more motivating, challenging and interesting setting.
Reading in economics once, I hit the phrase 'all economics is coordination problems', and it seemed exactly true to me: why do businesses have all these managers and infrastructure and stuff? Because of principal-agent problems and similar issues, all of which can be construed as coordination problems. Why do we need them? Because there are so many heterogenous people involved, all differing in various ways with different interests, and they need to be hammered into a coherent force.
Why not just select similar people, eliminate this massive overhead of coordination, and just let them work on stuff? Well... there's only so many energetic skilled young techies. But when you can cluster enough of them in one homogenous company, you get something like Github.
Until it keeps growing, heterogenity builds up, and problems with coordination start happening...
My sentiment is that hiring talent and then weighing them down with excessive restrictions and bureacracy is like buying a Ferrari and driving it 55mph during the daily commute. Why waste the money on that HP, when you can get a cheaper vehicle. Let the Ferrari's drive; hire a Civic if that is the kind of work you are going to give it :)
I think people don't necessarily understand the motivations of many people in management positions. They do not care at all about performance or getting to the destination. They want to be seen in a Ferrari. Many didn't earn their positions, suck at their jobs, and will spend the company's money freely to promote their careers. They are like lottery winner who are just hiring expensive top people without a plan or experience to put one together. All they want of the world, all they want, is to impress their bosses and get promoted. Nothing else matters to them, period. To them, software is simply one part of the business that is a means to move up the corporate ladder. Excessive restrictions and bureaucracy don't matter in this environment because the developer's job is simply to boost the profile of their PHB.
> I quickly learned that if I can’t get anyone else interested in the project that I want to work on, then either I poorly articulated my vision, or more likely, it does not benefit the company.
These appear to be the main points, so there is a kind of pressure to work on things that benefit the company.
My question is, how does overall strategy get set then? There are probably 1,000 things you could do to benefit the company, but only a small number of them have a huge effect, some of them require coordination to really help, and some of them might be diametrically opposed to each other.
Who makes these decisions, when there are multiple viable ways of going forward, but someone just has to put their foot down and decide which one?
> Who makes these decisions, when there are multiple viable ways of going forward, but someone just has to put their foot down and decide which one?
We all do, but whoever submits the first pull request usually sets the tone of the conversation. Occasionally, a pull request will get abandoned, but usually it is the starting point and we build from there.
There are often intense conversations about how something should work. I've learned to just try one way and see if you like it. Not everyone will, but you can form some consensus.
Bossing people around and utilizing extreme micromanagement might work in retail (though, honestly, I doubt it), but being a drill sergeant is not the way to get things done with very intelligent and headstrong individuals in a technical capacity.
The trick of excellent technical management, to me, is the ability to balance the business requirements of management with the technical passions of the engineers. If this balance is off in either direction, the company as a whole suffers greatly.
Engineers need to be intellectually engaged, and need to feel that they can make decisions for themselves (even if it's just within the code base). At the same time, products and services need to ship to keep everyone employed.
It's a tough but rewarding job.
I think this is one of the strong points of GitHub. Everyone I know who has gone to work there has a real love for the company as much as the team. I'm not convinced as many of the many Rubyists heading to, say, LivingSocial (which has an amazing, all star team) feel the same way.
The egalitarian approach clearly has some significant plusses, but a downside IMHO is salary (it has been stated people generally have the same base salary at GitHub - https://github.com/holman/feedback/issues/150). Egalitarian salary structures work for some but also have their downsides.
Developer/hackers know what other developer/hackers want because they want it themselves.
It's a great place to be as a developer and as a product company, but I don't think it's attainable everywhere.
A big part of what makes their culture possible is the product they are building and the customer that they are building it for. Change those things, and unfortunately, you are very likely to have to change the culture a bit.
Also, I believe that often the less popular work corresponds to things that are subtly judged to be less valuable work. At GitHub, I see people praised for tackling the types of things that have been less popular at my other jobs, and everyone here, even the most prominent GitHubbers, participate in most every aspect of maintaining the product. Internally, the message is pretty clear - doing the things that "need to get done" is a huge part of what makes everyone else here proud of you and is valued highly.
This is not to say that people don't tire of working on particular areas, but that's a somewhat different issue and probably a large enough topic for a writeup of its own.
1. If everyone deeply cares about the culture and longevity of the company (which is a prerequisite), and nobody wants to do it, does it really need to get done? The answer is often no. But if the answer is yes…
2. How do you turn that into a celebrated task where everyone wants to do it?
One example of this at GitHub is support. Developers hate doing support. But we have decided that it is absolutely vital to our company to both provide good support and to have developers involved in it so we are constantly getting feedback about what is working and what is not.
So we created the "King of Developers", which is a position that is held by a developer for one week at a time, in which that developer's primary responsibility is support. Along with that comes a pimped out desk at our HQ in San Francisco and tons of street cred. We even have a ridiculous internal website to go along with it (http://dribbble.com/shots/554836-GitHub-King-of-Developers). There are currently 9 developers signed up waiting to be the King.
I wish more posts would take into account more factors like sub-optimal talent or office politics.
That said, the most important part about this is that those teams are extremely weak. In other words, you should feel strongly able to float between teams, work on different repositories, or take a week or month off and pursue a different problem if the problem seems important or if it keeps you happy and productive.
Our company does many of the same things, but in the end, we're still tied to the billable hour. I talked about it briefly here: http://lincolnloop.com/blog/2012/may/31/lincoln-loop-everyon...
How many people are in the company?
Usually being the owner and founder you get more money. How do you avoid "The boss takes all the money" comment. Not saying you are, but I think this comes up even if your making only a little more then everyone else.
What happens when a developer asks for more money then your willing to give?