Software is more about people than technology. When I graduated from college, I thought I only had to master technical skills to be a great developer, thinking that people skills are the appanage of managers solely. But experience taught me a good lesson on this one. Whenever I hear that people skills can’t be acquired, and you have to be a born with them, I just beg to differ.
Nobody is born with any given skill, we learn through observation and by copying others (our role-models). You might get some valuable info from reading books on this subject, but I remember an old saying, scribbled on the cover of a book I read in my teens: “Life is not learned from books, but by living it.”
If you feel you’re having troubles dealing with people, then you only have to watch and learn. It’s as simple as that. Even if you are not currently leading anyone, it pays off learning how to handle people, especially in our people-centric industry.
While meeting great leaders has always been a wonderful experience, it is the bad ones that really enforce the true values of a leadership. I’ve been lucky in this sense, as I got the chance to meet some of the worst leaders you can possibly imagine. Let’s see how a good leader compares to a bad one.
|Context||Good Leader||Bad Leader|
|Responsibility||A good leader always takes responsibility of his project. If the project fails, he knows he’s the one to blame and he has the courage to admit it.||A bad leader knows it can’t be his fault, so he channels his energy into proving his team was the culprit, or maybe just some members he doesn’t like anyway.|
|Hard-work||A leader is a role-model for his team members. He’s working at least as hard as any other team member. Just because he’s the authority, it doesn’t mean he has to work only what he enjoys, leaving the ugly stuff for the rest of the team.||A bad leader has had enough already. Why he should write code anymore when you have all these guys at your service.|
|Mentoring||A good leader always mentors his junior team members. He doesn’t let them fail with difficult assignments. He knows that investing in his team will definitely bring a return of investment in the form of quality.||A bad leader doesn’t care about this stuff. The less experienced members should be hardened through tough tasks.|
|Respect||A good leader respects all his members, no matter how skillful they are. He knows that there is only one way to lead a team, and that’s through respect, not fear.||A bad leader doesn’t respect anyone but himself. He may laugh when someone makes a mistake, that’s going to be reported the upper management anyway.|
|Climbing the company hierarchy||A good leader believes in skills and professionalism. He does his job and expects to earn the right position he deserves.||A bad leader doesn’t have many skills, but he’s a master bootlicker. As much as he despises his subalterns, he’s constantly flattering his superiors.|
|Anger management||A good leader is emotionally mature, so he knows how to control his feelings. He doesn’t scream at his team, or threatens them in any way.||A bad leader likes to show his rank, and what could be a better way if not through intimidating his team. He knows that fear is a great motivator.|
|Trust||A good leader trust his team members. He knows he’s working with intelligent individuals that couldn’t have made it here otherwise. That’s why he encourages everybody to push themselves out of their knowledge comfort zone, so they could end up learning more, and becoming better.||A bad leader doesn’t trust anyone but himself. And those less experienced developers shouldn’t be given anything but writing documents, or probably doing some unit tests for the code he writes. After all, who likes all that hassle of testing perfectly written code anyway.|
|Task assignment||A good leader chooses those tasks everybody is running away from. He gives an example when assigning himself laborious tasks everybody’s had enough of.||A bad leader always chooses the tasks he likes best. Maybe it’s a new framework he would love trying out, and why would anyone give up on such a pleasant experience. If he finds it to too difficult, he can then pass it to his team, to fix the remaining issues.|
|Reporting issues||A good leader tries to do his best to overcome any difficulty. But there are times when this is not enough, so he immediately reports the situation to his upper management, so proper action may be taken.||A bad leader always masks issues. He doesn’t like to report them, since that may affect his good reputation. If the problem arises he will try to find someone to blame, as it can’t ever be his fault.|
|Code Reviewing||A good leader believes in code review and encourages his team to take part into reviewing others’ work. When recurrent issues arise, he writes them into a shared knowledge blog, so that everybody can learn better ways of tackling a given problem.||A bad leader doesn’t have time for reviewing, and everybody is on his own anyway. If someone breaks something, the bad leader will simply tell on him.|
|Frustration||A good leader may have been led by a bad leader, and he promised himself he wouldn’t ever be that guy. He is mature enough to learn from others’ mistakes.||A bad leader wants others to suffer as he suffered when he was himself a junior.|
|New ideas||A good leader likes to listen more than talking. He let all his team members participate in any brain-storming session. He knows that great ideas may pop-up from where you’d expect less.||A bad leader doesn’t like when others show off their so-called good ideas. His ideas are better anyway. And if he hears an interesting opinion, he may laugh at it, and then go to the upper management praising what he’s just come up with.|
A bad leader may cost you a fortune. The project led by a bad leader may end up costing more to fix it than to start it from scratch with a skilled team. As fictional as it may sound, this bad leader examples are inspired by real-life situations, and I have to thank all the great antiheros that taught me valuable lessons about leadership.
This guide will introduce you to the world of Software Architecture!
This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.