当前位置:网站首页>Feeling after reading "agile and tidy way: return to origin"
Feeling after reading "agile and tidy way: return to origin"
2022-07-02 07:18:00 【Software development heart】
Catalog
Preface
Agile process , I believe it is no stranger to you , Agile methods are more or less used in work , Many concepts are also familiar . But the author is finishing reading Daniel Robert C. Martin( Uncle Bob ) This book of 《 The way to be agile and tidy : Back to the original 》 after , A lot of emotion . I feel that not only many concepts are clear , Some ideas have also been corrected , It's the title of the book , This is an agile “ Back to the original ” The book of .
One 、 Agile profile
Basic principles of software projects , It is called managed “ Iron Cross ”: quality 、 Speed 、 cost 、 complete . Agile is a framework , It can help developers and managers with practical project management . however , This kind of management is not automatic .
Software development is not a process that can be reliably estimated , Our programmers can't give exactly how long it will take in advance , Because before participating in and completing the task , There is no way to know the complexity of the task . Agile methods begin with analysis , And has been throughout the life cycle of the project , It divides the time of the whole project into several fixed length time periods ( These cycles are called iterations or sprint).
Agile provides the necessary data through continuous iteration , The error range of estimation is constantly reduced , Predictions are constantly clear , People don't have to go through “ fantasy ” To determine whether the delivery can be completed before the project end date .
We know , Managers can change the schedule 、 personnel 、 Quality and range to adjust the iron cross , But in fact, many times adjustment has limitations . such as , If after the project starts , To change the schedule , It's often impossible ( We all know ), Unless it is delivered in advance . For increasing manpower , According to Brooks' law : Adding people to a delayed project will make it more delayed , This is because the cost of training new people is very high .
About quality , Naturally, everyone wants the higher the quality, the better , But if you encounter time constraints on the project, give up writing tests 、 Stop code review , Only pursue the practice of desperately coding , No doubt in vain .“ Generating garbage code won't make you go faster , Not fast and dirty (quick and dirty) Things like this ”, The only way to move forward quickly is to be solid .
The last thing that can be changed , Maybe some of the plans don't actually need to be decided at the beginning “deadline” The functions completed before , Of course, it takes a lot of luck , It also requires the consent of stakeholders .
These are the outlines of agile , Many details are omitted . And as Uncle Bob said , Agile is a framework , There are many different names for the actual process , Including extreme programming (XP)、Scrum、 Dynamic system development method (DSDM)、 Adaptive software development (ASD)、 Crystal method (Crystal)、 Feature Driven Development (FDD) etc. , Are different means to achieve the same goal . Among them, extreme programming is the best definition that Uncle Bob thinks 、 The most complete 、 The least chaotic one .
Two 、 Agility in the eyes of Masters
Agile is a disciplinary framework that supports professional software development . People who believe in discipline accept and abide by managers 、 Reasonable expectations of stakeholders and customers , At the same time, it also abides by the power that agile gives developers and customers .
Agile is not a process , Nor is it a fashion , It's not just a set of rules , Or the power that forms the basis of professional ethics in software development 、 A combination of expectation and discipline .
Agile needs to be combined with practice , Take extreme programming as an example , Corresponds to “ The ring of life ”, Agile is divided into several practices .
- Business practice —— For business , The practices that software development needs to follow are : Plan the game 、 Small step release 、 Acceptance testing and complete team . By following these practices , There is a simple and clear way of communication between business and development , And this kind of communication will produce trust .
- Team practice —— metaphor 、 Sustainable rhythm 、 Collective ownership and continuous integration of code , These practices govern the relationship between team members , And the relationship between team members and the products they create . Agile is a set of principles 、 Practice and discipline , Help the team establish a communication language , Make team members feel good about each other 、 Have the same expectations for the project being built , So as to help small teams successfully build small software projects .
- Technology practice —— No test driven development 、 restructure 、 Simple design and pair programming ( Pairing is optional , But also intermittent ) Your agility is superficial , It doesn't work . Agile technology practice is the most essential component of any agile work .
Agile has its own values : Courage 、 communicate 、 Feedback and simplicity . The transformation from non agile to agile is a change of values . Agile development values include taking risks 、 Quick feedback 、 Enthusiasm 、 Frequent communication between people across obstacles and command structures . These values may be diametrically opposed to those of some large organizations , For example, agile focuses on going straight to the goal , Instead of delimiting territory 、 fight for power and money , Many large organizations pay more attention to safety in the middle-level management structure 、 Uniformity 、 Command and control and follow the plan . So transformation means changing values , It's very difficult , But to “ establish ” Large organizations that allow agile teams to thrive , Uncle Bob thinks it's ok , And many startups have adopted agile , There are also many large 、 Non agile companies are hiring many agile consulting companies . in the future , More and more large companies will create new departments inside , In order to adopt agile method for software development ; Large organizations cannot transform existing development teams , More and more consulting companies using agile methods will be hired .
What about agile in large organizations ? these years , Many people try to answer this question , But Uncle Bob has his own opinion . Agile is for small and medium-sized teams , Never designed for large teams . The problem with large teams is that all societies 、 Problems common to all civilizations , And from the perspective of current civilization , We seem to have solved this problem well , Like building pyramids 、 Win the second world war 、 Put people on the moon and bring them back to earth safely, and so on .
The problem with small software teams is 20 century 80 At the end of the s, the agile movement began to have unsolved problems , How to effectively organize a relatively small team of programmers to improve efficiency , Agile solves this problem . And the key to solve is , Understand that this is a software problem , Not a small team problem . Agile is a set of disciplines for us to organize small software teams . After solving the problems of small software teams , How to organize a large team , That's it : Split it into small teams .
Besides , Uncle Bob also talked about agile coaching , The role of the coach is entirely within the team , Is a member of the team , Its responsibility is to defend the process in the team . See, for example, stop refactoring 、 Ignore failures in continuous construction , Point it out to the whole team . In addition, coaching may also give birth to new careers , From process expert to agile expert . If agile is understood as an algorithm , It can find the most valuable product features in the market , Then turn them into income faster . A certified coaching school for agile professionals has been established , The future of agile coaching is bright .
3、 ... and 、 Agility and Craftsmanship
In order to improve the level of software development , And redefine the original goal of agile , A group of developers are 2008 year 11 The moon gathered in Chicago , Launched a new movement : Software craftsmanship (Software Craftsmanship), And in 《 Agile Manifesto 》 A new manifesto was put forward on the basis of :
- It's not just about making software work , We should be more careful ;
- Not just responding to change , We should steadily increase value ;
- It's not just about individuals and interactions , We should also form a community of professionals ;
- It's not just about working with customers , More importantly, we need to build an effective partnership .
The Software Craftsmanship manifesto describes an ideology 、 An idea . It emphasizes improving professional standards from several perspectives : Finely crafted 、 Steadily increasing value 、 Form a community of professionals 、 Build productive partnerships . No longer regard work as clocking in , It's about providing professional services , Take control of your career , Invest your time and money to improve your work . These are not just professional values , Also personal values .
Ideology is the system of thought and ideal . Methodology is the system of method and practice . The main goal of agile is to provide business agility and customer satisfaction , This is through close collaboration 、 Iterative development 、 Short feedback loop and excellent technology . Software Craftsmanship does not include a fixed set of practices . contrary , It advocates constantly exploring better practices and wage methods . If specific practices are tied to software craftsmanship , Will make it fragile and outdated , Because there will always be better practices to be discovered . But it does not mean that craftsmanship does not advocate any practice , Instead, it advocates submitting changes in small steps 、 Small step release and continuous delivery ; Advocate modular software design , And all the automation that can get rid of manual duplication . Craftsmanship includes more than technical practice 、 Engineering practice and self-improvement , It also includes professionalism , Empower customers to achieve their business goals .
The effect of craftsmanship on the individual —— It advocates software development as a profession rather than a job . Work is what we have to do , But it's not part of ourselves , And occupation is a part of us . This means that we can find a way to balance all commitments and interests , So that we can live a complete life 、 A balanced and happy life .
The impact of craftsmanship on the industry —— Through the craftsmanship community , Developers learn test driven development (TDD)、 Continuous integration 、 Pair programming 、 Simple design 、SOLID principle 、 Tidiness code 、 restructure 、 Microservice system architecture 、 Automated Deployment pipeline , And how to migrate the system to the cloud . Craftsmanship community is extremely inclusive , Regardless of their current professional level , It's all welcome , And is committed to training the next generation of professionals , So that people who join our industry can learn the necessary practice , To build sophisticated software .
The impact of craftsmanship on the company —— Companies need reliable systems ( A system that can quickly respond to business needs ), Companies also need to be proactive 、 Qualified technical team , Such a team can do a good job of creating and maintaining the system . These are the areas where software craftsmanship is good at .
Some developers feel that craftsmanship and agility are mutually exclusive . People involved in the craftsmanship movement may criticize agile for paying too much attention to process , Lack of attention to the project , Participants in the agile movement criticized craftsmanship for its narrow focus , Or lack of attention to actual business and personnel issues . Most of the differences are due to different positions , Rather than fundamental differences of opinion . Essentially , The goals of the two movements are very similar , Both hope the customer is satisfied 、 Eager to cooperate closely 、 Hope to deliver high-quality and valuable work , And all require professionalism . For business agility , Companies need more than collaboration and iterative processes , Good engineering skills are also required . The combination of agility and craftsmanship is the perfect way to achieve this goal .
Summary
After reading master Bob's book , What impresses the author is , Agile has always been a way to manage small teams to complete small projects , The problems of large teams should be iterated continuously after being disassembled into tasks of small teams . In addition, I learned about Craftsmanship , Let the author comment on master Bob's 《 The way of craftsmanship and neatness : Professional training of programmers 》 There's been a lot of interest , Have a chance to read again .
Jackson
边栏推荐
- 叮咚,Redis OM对象映射框架来了
- MapReduce concepts and cases (Shang Silicon Valley Learning Notes)
- The first quickapp demo
- Explanation of suffix of Oracle EBS standard table
- Sqli-labs customs clearance (less1)
- Oracle段顾问、怎么处理行链接行迁移、降低高水位
- 【信息检索导论】第一章 布尔检索
- 【Torch】最简洁logging使用指南
- The boss said: whoever wants to use double to define the amount of goods, just pack up and go
- Data warehouse model fact table model design
猜你喜欢
【BERT,GPT+KG调研】Pretrain model融合knowledge的论文集锦
Pratique et réflexion sur l'entrepôt de données hors ligne et le développement Bi
@Transational踩坑
view的绘制机制(一)
SQL injection closure judgment
Sqli-labs customs clearance (less2-less5)
Sqli-labs customs clearance (less18-less20)
離線數倉和bi開發的實踐和思考
ssm超市订单管理系统
2021-07-05C#/CAD二次开发创建圆弧(4)
随机推荐
使用Matlab实现:Jacobi、Gauss-Seidel迭代
CAD二次开发 对象
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
使用 Compose 实现可见 ScrollBar
JSP intelligent community property management system
Alpha Beta Pruning in Adversarial Search
Oracle APEX 21.2 installation et déploiement en une seule touche
Sqli labs customs clearance summary-page2
在php的开发环境中如何调取WebService?
view的绘制机制(二)
Oracle segment advisor, how to deal with row link row migration, reduce high water level
parser.parse_args 布尔值类型将False解析为True
Laravel8中的find_in_set、upsert的使用方法
ERNIE1.0 与 ERNIE2.0 论文解读
php中的二维数组去重
Oracle EBS interface development - quick generation of JSON format data
Yaml file of ingress controller 0.47.0
Oracle rman半自动恢复脚本-restore阶段
RMAN增量恢复示例(1)-不带未备份的归档日志
Oracle apex 21.2 installation and one click deployment