今日推薦英文原文：《Being Agile — a Human Perspective》
推薦理由：如何成為 Tech Lead。這個項目是作者參加了 Tech Lead 的培訓之後寫下的經驗，Tech Lead，通俗的講，即一個團隊中負責解決技術難題，指引方向和寫代碼這三方面的那個人。回想一下自己在項目中的經歷，如果你遇上了不懂的問題，你覺得誰可能會知道解決的方法？那個人很可能就擔當了團隊中的 Tech Lead —— 他同時作為了榜樣和技術專家。總而言之，如果你想要更多的了解 Tech Lead，不妨來看看這個項目。
今日推薦英文原文：《Being Agile — a Human Perspective》作者：Vandana Adulkar
In 2001, seventeen of my fellow travelers on this journey came together in Utah to discuss and overcome hitches to smooth ride of software development and coined a manifesto. Agile was born. It heralded an express way to the pot of gold of valuable software at the end of the rainbow of methodologies. Obviously, I want the gold and thought of equipping myself with the challenges to create a game plan. My exploration has lead me to conclude that beneath the buzz of technology, methodology and terminology the key to being Agile is to remember to be Human.
So what is Agile? Essentially, Agile is a set of principles and practices for software development that emphasize: · Individuals and interactions over processes and tools · Working software over comprehensive documentation · Customer collaboration over contract negotiation · Responding to change over following a plan1 Why does it matter to be Agile? In my experience and understanding, to deliver software that matters, which caters to a need and is thereby valuable to the customer. But isn』t that the objective of any project that is worth building? Absolutely! I haven』t come across teams having discussions on how to produce something which is practically useless. Yet, even though starting with right intentions, processes and tools many projects inevitably ran into roadblocks and software crisis with waterfall model commonly used for the development.
As per the waterfall model the development moves in linear manner from gathering requirements up front, planning and designing the software, working out specifications, building and testing the code, implementing the solution and maintaining it. However, due to long turnaround time, lack of collaborations and communications among customer and team members, and inability to incorporate changes, the software delivered at the end is often not valuable to the customer. Agile manifesto addresses these challenges and delineates 12 principles to guide software development which when followed promises highly productive teams and customer satisfaction.
So where is the catch? Implementing the practices without having the perspective of the underlying principles leads to doing things better but following old patterns and adding new detrimental side effects. Grasping the principles is about developing a right mindset. Thereby, the crux of being agile is having a right mindset and a mindset lives in the mind, which is part of each instance of a human being. When individual minds of the team members align towards a common goal it leads to successful implementation of the agile methodologies.
In my experience, the major challenges to developing right mindset distill down to fear of change, lack of communication and missing the whole by being centered in the parts. The 12 agile principles work around these challenges however it is difficult to implement these principles unless the individual stakeholders (team members including customers involved as team members) address the underlying perceptions.
Fear of change, is at the root of the challenge as our brains are wired to resist change. Change is inevitable and change often translates as some trouble. We are wired to stay away from trouble so unless it is demonstrated in a tangible manner that going agile would eventually mean less trouble for the individual there would be resistance to the change. A solution that has worked for me has been to educate on what is down the road, illustrating the benefits, bringing in the culture of trust to collaborate. For example, using daily stand ups, one of the agile practices, to actually get picture of where the project is moving and voicing road blocks instead of blaming, micromanaging or checking on team members.
Once trust is built, it opens up readiness for communication, as each member feels heard, valued and contributing to the whole. Even though there may be openness for communication, the success depends on understanding the paradigm each person is coming from. Visual interactions foster empathy and seeing other』s perspectives. Principles fostering constant communication bring in clarity early on and prevent from treading wrong paths.
Communication and collaboration lead to seeing the larger picture and understanding the context of each individual contribution to the whole. The synergy is greater than the sum of individual parts geared towards valuable outcome. Clicking the puzzle pieces together and creating the whole picture instead of being individually correct. For example, a developer in the team my pass all the tests and have bug free implementation but if the code is not addressing a required feature than it would not be contributing to the overall outcome value.
A human perception to being agile is rightly summarized by Jim Highsmith as quoted in Learning Agile: Understanding Scrum, XP, Lean, and Kanban:
「Without concrete practices, principles are sterile; but without principles, practices have no life, no character, no heart. Great products arise from great teams — teams who are principled, who have character, who have heart, who have persistence, and who have courage.」
Character, persistence and courage are all human qualities. We are intelligent beings, creators of technologies and methodologies and maybe it would be worth pondering that reaching the pot of gold at end of practices and methodology would be being rooted in core human qualities and being human.