It seems to be human nature to want to be "the center of the universe." It's no wonder astronomers thought for hundreds of years that the Earth is the center of the universe. From their perspective on seemingly solid, seemingly unmoving ground, everything else (planets, the sun, other stars) were the things doing the moving. We see other manifestations of this "center of the universe syndrome" in various facets of life such as daily life, business, and software testing. In this post, I look at how "center of the universe syndrome" can at least partially explain many of the bad decisions and dysfunctional behaviors software developers witness and/or commit.
There's No Team in 'I'
If we are to believe the resumes of software developers, everyone software developer is a team player. If I'm the center of the universe, then others should do what I want and do things the way I want. When they do this, they're team players. When they try to do it differently than my way, they are not good team players. As the center of the universe, I must be, by definition. a team player. After all, it's all about me.
I'll work only on what I want to work on. It doesn't matter if my skills and fellow team members' skills would be better used in a different configuration. It's only about me and what I want to do and what I think is worth doing.
The Customer's Always Right ... if (s)he agrees with Me
Customers are correct when they want things I know they need. When a client wants something that I know is unnecessary or not worth the effort required, it is the client's fault.
I am the Direction
If I'm the Center of the Universe, I'm also it's director. I don't need direction from leads, mentors, management, clients, etc. Everything should go the way I say it should go.
As the Center of the Universe, the most important part of my current project is development skills for the next job. It doesn't really matter if it's what's best for my client, my team, or my organization. I'll use whatever tools and techniques make my resume look better.
Ignoring Code Conventions
If I'm the Center of the Universe and I don't like or agree with a particular coding convention, the rest of the universe (other developers) need to come to my way of thinking.
There's Nothing Left for Me to Learn
As the Center of the Universe, if I think I know something, then that's how it is. Anyone who would tell you differently is simply wrong. Hopefully, they'll "get it" later. There's no reason for me to even consider that I'm incorrect or might need to change my mind. I'm the expert.
I Can Do No Wrong
If someone tells me I need to improve or finds fault with my work (including during code reviews or testing), then either that person is at fault or I have been mistaken for someone else, or I am taking the blame for someone else's misdeeds.
Everything's a Conspiracy: The Victim Mentality
As the Center of the Universe, it's unthinkable that I'd lose a job, not get a bid for consulting work, or otherwise not have everything my way. If I did get laid off or not win a consulting bid, it must be for some reason other than the fact that others considered were better fits or were cheaper or simply made a better impression. Only some type of conspiracy or discrimination could explain my not getting the bid or not being laid off.
Code Reviews are Necessary for the Others
As the Center of the Universe, I don't need code reviews, but I may be magnanimous enough to review others' code and set them straight. Actually, now that I think about it more, I probably won't even do that because I don't really care if they improve or learn new things. I'll just complain about how crappy their code is.
As the Center of the Universe, it's about me getting stuff slung out as quickly as possible so that I can move onto the next thing. I don't need to bother with things that slow me down and are mundane (testing various paths, testing at all, writing maintainable code, etc.). Give me credit for finishing the task quickly and let me move to the next fun things. Testing and maintenance can be left for others to do. The important thing is that I get to work on new, cool, and fun things.
My Task is Inherently the Most Valuable
It would make no sense to assign the most important tasks to anyone but the Center of the Universe. Therefore, my assignments and tasks are necessarily the most important. With this in mind, I should interrupt anyone and everyone to make sure my task gets accomplished as quickly as possible. Yes, I may distract others and delay their progress, but they're working on less important tasks anyway.
The software developer who acts as if he or she is the Center of the Universe is more likely to not see the big picture and to not understand the true significance of his or her role in the greater scheme of things. This developer is more likely to suspect conspiracy theories and invoke victim mentality when things don't go well than to try to learn and improve and do better the next time. The Center of the Universe is less likely to work well with others and to be open to new (and possibly better) ideas and concepts.
Unfortunately, it seems human nature to desperately want to believe and behave as if we are the Center of the Universe. We can't all be the Center of the Universe, so I propose that we simply agree that I'm the Center of the Universe and make it easier on everyone.