diff --git a/_posts/2024-04-01-software-craftsmanship.md b/_posts/2024-04-01-software-craftsmanship.md index 7bf7943..5782d00 100644 --- a/_posts/2024-04-01-software-craftsmanship.md +++ b/_posts/2024-04-01-software-craftsmanship.md @@ -1782,69 +1782,130 @@ It is not difficult to bring a culture of learning into an organization. The onl ## 14. Driving Technical Changes - How do we bring technical practices to our team? It's easy to convince developer to adopt technical practices instead of managers. +How do we bring technical practices to our team? It's easy to convince developer to adopt technical practices instead of managers. + ### Identifying Skepticism Patterns - The first thing Software Craftsman needs to do before trying to create culture of learning is to introduce new technical practices, tools, or processes to identify the skeptics they are facing. +The first thing Software Craftsman needs to do before trying to create culture of learning is to introduce new technical practices, tools, or processes to identify the skeptics they are facing. + +Categories that skeptics of technical change tends to fall under: the Uninformed, the Heard, the Burned, the Time Crunched, the Boss and the Irrational. - Categories that skeptics of technical change tends to fall under: the Uninformed, the Heard, the Burned, the Time Crunched, the Boss and the Irrational. #### The Uninformed - The main reason to not adopting certain tools or practices is lack of awareness. They don't know the impact it brings or even is that exist or not. +The main reason to not adopting certain tools or practices is lack of awareness. They don't know the impact it brings or even is that exist or not. + +This group of developers don't read books or blogs or trying to understand what is going on outside their cubicle. - This group of developers don't read books or blogs or trying to understand what is going on outside their cubicle. #### The Herd - They feels that they are not experienced enough to make certain decisions, they lack confidence and leave the decision to smarter and more-experienced developers. +They feels that they are not experienced enough to make certain decisions, they lack confidence and leave the decision to smarter and more-experienced developers. + +This group of developers are usually followers, not leaders. - This group of developers are usually followers, not leaders. #### The Cynic - They like to argue and are constantly trying to prove that they are smarter than everyone else. +They like to argue and are constantly trying to prove that they are smarter than everyone else. + +This group of developers think that _looking smarter_ is more important that _being smarter_. - This group of developers think that *looking smarter* is more important that *being smarter*. +One of the reason they don't want to adopt tools or technical practices is they don't want to expose their own weakness. - One of the reason they don't want to adopt tools or technical practices is they don't want to expose their own weakness. #### The Burned - They tried a certain practice or tool in past and it didn't work for them, since they haven't had a good experience, they don't want to try it again. +They tried a certain practice or tool in past and it didn't work for them, since they haven't had a good experience, they don't want to try it again. + +eg. following TDD, may be they found tests are too long or difficult to write. - eg. following TDD, may be they found tests are too long or difficult to write. #### The Time Crunched - They are always busy and never have time for anything. +They are always busy and never have time for anything. + +This group of developers are usually very shortsighted and unable to see the real cost of things. - This group of developers are usually very shortsighted and unable to see the real cost of things. +The only thing they see is that they don't have time to change the way they work. - The only thing they see is that they don't have time to change the way they work. #### The Boss - If the boss is not a technical person, they probably won't understand what you are talking about and will fail to see the advantages of what you are proposing. +If the boss is not a technical person, they probably won't understand what you are talking about and will fail to see the advantages of what you are proposing. + +Very few technical managers were actually great developers in the past, and even fewer were actually promoted because of their software development skills. - Very few technical managers were actually great developers in the past, and even fewer were actually promoted because of their software development skills. #### The Irrational - The worst type. They will swing from one premise to another as they get defeated. +The worst type. They will swing from one premise to another as they get defeated. - Common things are "This will cause performance issues, Framework has security issues", One after another, they will raise irrational points against the proposal and as soon as we defeat their point. +Common things are "This will cause performance issues, Framework has security issues", One after another, they will raise irrational points against the proposal and as soon as we defeat their point. +There are few more categories that author has identified. - There are few more categories that author has identified. #### The Indifferent - The Indifferent simply doesn't care. Developers in this group don't necessarily go against anyone or anything. +The Indifferent simply doesn't care. Developers in this group don't necessarily go against anyone or anything. + +It leads to lousy implementation of good ideas, eg. Bad tests are worst then no test. - It leads to lousy implementation of good ideas, eg. Bad tests are worst then no test. #### The Wronged - This is dangerous type. Developers in this group think the company has wronged them. +This is dangerous type. Developers in this group think the company has wronged them. - They always thinks that they are underpaid, not getting recognition they deserved, or are being unfairly treated. +They always thinks that they are underpaid, not getting recognition they deserved, or are being unfairly treated. + +They don't like company and never miss a opportunity to badmouth it. - They don't like company and never miss a opportunity to badmouth it. #### The Inept - They just don't get it. They are more aware than the Uninformed by the are not able to see things clearly. +They just don't get it. They are more aware than the Uninformed by the are not able to see things clearly. + +This group of developers see software development only as a job, even when they try, it is clear that this job is not for them. + +#### The Ivory-Tower Architect + +This is also worst type of skeptic for a software craftsman to deal with, they think they know it all. They are smarter than any developer. + +They like to say they are responsible for every technical decision, but very rarely are they held accountable for any of them. + +They don't really product the output which is required for business. They want to be the first in every win to steal credits at the same time want to blame development team in case of any problem. + +#### The Insecure + +This group of people are worried about getting replaced or losing their status. These are usually average developers in the organization. + +They fear that, their customer will realize that they are not so great. They see software craftsmen as a threat and will do whatever they can to discredit them. + +#### The Fanboy + +They are totally devoted to a single subject in a fanatic manner. + +They are biased about the stuff they know and easily reject any possible alternative. + +They don't want to consider anything else because they are specialist in one particular thing. + +### Be Prepared + +There are a few things you mus have if you really want to change things around you. The most important one is **courage**. + +#### Encourage Simplicity + +You idea or proposal must be simple and clear. Organize your thoughts before proposing anything. Make it very easy for people to understand. + +#### Speak the same language + +Learn how to speak their language, you're taking with developers, managers, architect, product owners or any other person can be affected by them. + +#### Do your homework + +Make sure you understand what you're talking about. Research, try, and practice. + +Think about what question can be raised and be prepared with acceptable answer before you speak to them. + +Be clear about areas you don't know about or have very less context. + +#### Be respectful + +Don't treat people as if they are stupid. Disrespect and aggression will immediately put people in a defensive mode. + +#### Learn how to listen + +You may have a very good idea of how things should be done, but make no mistake. Everyone has an opinion and sees the same problems from different angles. - This group of developers see software development only as a job, even when they try, it is clear that this job is not for them. -#### The Ivory-Tower Architect \ No newline at end of file +Probably, There are many things you're not aware of. Listen and digest what everyone has to say about particular idea.