The Software Craftsman Kitabından Aldığım Notlar - 3
- hacer_bakirci
- Feb 27, 2021
- 6 min read
2.bölümün devamı :
AUTONOMY, MASTERY, AND PURPOSE
Software craftsmen always choose jobs where they have autonomy, mastery, and purpose. They are key aspects that help any craftsman to have a successful and long-lasting career. Choosing jobs just for the money can bring our careers to a halt, making it almost impossible to put it in motion again.
RECRUITMENT
If we want our developers to be constantly learning, bringing innovations, adopting more efficient practices, caring about the project and quality of the code, self-organizing to solve problems, and striving to be better at what they do, why would we hire more developers who don’t satisfy these criteria?
We would only accept CVs where developers had at least some of the following items: GitHub account, blog, open source contributions, technical communities and user groups with which they were active, summary of any pet projects, Twitter account, list of favorite technical books, conferences where they either gave talks or attended.
Our first hint that the management team does not trust developers, and that formal hierarchies govern the company, is when interviewers are managers, architects, and team leaders, instead of developers we would work with. That should be enough for us to question whether developers are empowered to make decisions or if a few people at higher positions make all the decisions.
GOOD INTERVIEWS
A good interview is like a good and informal chat between passionate developers. It’s an exchange of information: a good debate about techniques, tools, challenges, and approaches to software development.
If we value Test-Driven Development (TDD), clean code, refactoring, pair programming, and Agile methodologies, they all should be part of our interview process. If we need to improve the design of our applications, we should test and hire someone who has great design skills. If we feel that our teams need an injection of passion, we need to hire passionate people.
Don’t waste precious interview time talking about things that are not relevant. Focus on what is important and more valuable to the company.
Open questions like that tend to be answered with a list of things like maintainability, testability, readability, performs well, satisfies requirements, and so on. Each item in this list becomes a node, hanging off from the mind-map root well-crafted software.
There is a lot we can get from a pair-programming interview:
• How quickly the developer decides on which tests to write—that shows experience
• How familiar she is with the tools (the integrated development environment [IDE], language, testing and mocking frameworks, usage of shortcuts, etc.)
• Choice of names for classes, methods, and attributes
• How clean and expressive the code is
• How the developer reacts when the interviewer makes suggestions or comments
• Her thought process
• Her care in not just solving the problem but also how she is solving the problem
INJECTING PASSION
One of the differences between regular developers and software craftsmen is that software craftsmen are on a mission. They are on a mission to make things better, to deliver value to their clients, and to inspire people around them. They are not afraid to lead the way and drive changes. For software craftsmen, striving to always do their best is just a natural state of mind.
There is nothing more annoying for a developer than having a manager or an architect dictating what she should do. Instead of just telling others what to do, software craftsmen can sit down and pair with other developers, sharing their knowledge, experience, and passion. Besides getting the work done, they are always keen to act like mentors to many other developers. Software craftsmen are always talking about software and are willing to share the things they are doing to better themselves.
The best person to motivate a developer is another developer. A good developer. A software craftsman. A developer whom other developers can look up to, who can inspire them. If you want to bring passion and motivation to a development team, make sure you bring in a few craftsmen to join them.
IDENTIFYING SKEPTICISM PATTERNS
The first thing that any software craftsman needs to do before trying to change the culture of a team or trying to introduce new practices, tools, or processes is to identify the different types of skeptics she is facing.
• The Uninformed: They simply don’t know that certain tools or practices exist.
• The Herd: They feel they are not experienced enough to make certain decisions; they lack confidence and leave the decisions to smarter and more-experienced developers.
• The Cynic: They like to argue and are constantly trying to prove that they are smarter than everyone else.
• The Burned: They tried a certain practice or tool in the past and it didn’t work for them. Since they haven’t had a good experience, they don’t want to try it again.
• The Time Crunched: They are always busy and never have time for anything.
• The Boss: If the boss is not a technical person, she probably won’t understand what you are talking about and will fail to see the advantages of what you are proposing.
• The Irrational: The worst type. As soon as we defeat their point, they will bring up another point that is even more irrational than the previous one.
• The Indifferent: The Indifferent simply doesn’t care.
• The Wronged: This is a dangerous type. Developers in this group think the company has wronged them.
• The Inept: Their thoughts are fuzzy, and their opinions are based on distorted facts and half-baked ideas—usually someone else’s ideas.
• The Ivory-Tower Architect: They think they know it all. They are smarter than any developer. They think they are at the top of the food chain. Ivory-Tower Architects usually haven’t written a single line of production code for years (useless proofs of concept that have no resemblance with reality do not count).
• The Insecure: They are worried about being replaced or losing their status.
• The Fanboy: They are totally devoted to a single subject (or point of view) in a fanatic manner, often to the point where it can be considered an obsession.
BE PREPARED
There are a few things you must have if you really want to change things around you. The most important one is courage. You cannot be afraid to engage in heated debates with managers, technical leaders, and fellow developers; certain discussions are unavoidable and you need to be prepared for them. You must be brave and say everything you think, no matter what. Honesty and transparency are core values for any software craftsman. You also need to be confident. You will never be able to convince anyone to do anything if they don’t feel that you know what you are talking about
Encourage simplicity.
Speak the same language.
Do your homework.
Be respectful.
Learn how to listen.
ESTABLISH TRUST
Although essential, consistently delivering quality software is not enough to build trust. You won’t change anything if you stay quiet inside your little cubicle waiting for someone to recognize that you have something interesting to say. You need to expose yourself. You need to be visible. You need to demonstrate how passionate you are and how much you care about the project and about what you are proposing. People are far more inclined to follow someone who is passionate about something than someone who doesn’t exhibit any passion.
But showing your passion is not enough either. Above all, to establish trust, you need to be good. People need to feel that you can do it. They need to feel you can lead them.
The Ivory-Tower Architect
The Ivory-Tower Architect is usually in a position of authority, having the responsibility to look after a department or even a whole company. She may draw individual applications as little boxes in PowerPoint presentations but she won’t understand all the details of each one of them. Because the Ivory-Tower Architects are not part of any development team and don’t write code, they never feel the pain caused by their ill-defined architecture decisions.
Real software professionals understand that responsibility should always come with accountability. If you want to be responsible, be prepared to be accountable. If you are accountable, make sure you are also responsible for the decisions. Ivory-Tower Architects are usually scared of their own decisions, hiding behind bureaucracy and politics in order to succeed in their careers. If you want them out of your way, try to make them accountable for their decisions.
Besides all the technical skills, a software craftsman is also a role model for less-experienced developers. Software craftsmen are not afraid of being honest and transparent. They don’t lie or deceive their customers, hiding problems to make them happy. Software craftsmen don’t say what people want to hear; they speak their minds. Software craftsmen take responsibility for their actions and are not afraid to fight for what is best for the project.
Prepare yourself. Be brave. Drive.
- Sandro Mancuso
Yorumlar