git每个开发人员一个分支
In this article, we are going to talk about the typical mistakes we usually make from the moment we meet with a client to develop their product until the moment the product is in production.
在本文中,我们将讨论从与客户见面开发产品的那一刻直到产品投入生产的那一刻,我们通常会犯的典型错误。
These are some of the reasons why a project does not meet the client’s expectations:
这些是项目无法满足客户期望的一些原因:
- It takes more time to develop the project than agreed. 开发该项目要花费比约定时间更多的时间。
- The project doesn’t satisfy his needs. 该项目无法满足他的需求。
- The project is more expensive than the accepted budget. 该项目比接受的预算昂贵。
- Our application does not scale well. 我们的应用程序无法很好地扩展。
First, let’s start when we meet with the client.
首先,让我们在与客户会面时开始。
与客户/用户 (With the client/user)
The first and most important thing is to know what we are going to talk about, define a maximum time for it, and if more meetings are required, or they ask us to indicate how they can do something we will charge them.
首先也是最重要的事情是知道我们将要谈论的内容,为其定义最大时间,以及是否需要召开更多会议,或者他们要求我们指出如何做一些事情,我们将向他们收取费用。
It is not the first time that a client tells me his problem, and after giving him an idea about a possible solution, he hires another person (cheaper) or uses his development team for implements the solution I have proposed.
这不是客户第一次告诉我他的问题,并且在给他一个关于可能的解决方案的想法之后,他雇用了另一个人(更便宜)或使用他的开发团队来实施我提出的解决方案。
Result: I lose my time.
结果:我浪费了时间。
一切似乎都比实际容易 (Everything seems easier than it is)
Business people consider their requests to be very easy to implement, and they often don’t understand the complexity behind what they think to be simple. Others, before you even do an initial analysis already, they claim that in less than a month, you will have it done.
商界人士认为他们的要求非常容易实现,并且他们通常不理解他们认为简单的背后的复杂性。 其他人甚至在您尚未进行初步分析之前,就声称不到一个月就可以完成分析。
他们不知道他们想要什么 (They don’t know what they want)
Another big issue with them is that they often need to solve a different problem than the initial request.
他们的另一个大问题是,他们通常需要解决与初始请求不同的问题。
Most clients or users don’t know what they want until they see it. Most of the time, it is not until they start using the Software when they realize what they need. In consequence, requirements continuously change throughout the development process, so be careful about giving a deadline.
大多数客户或用户在看到需求之前都不知道他们想要什么。 大多数情况下,直到他们开始使用软件时,他们才意识到需要什么。 因此,需求在整个开发过程中会不断变化,因此请谨慎指定截止日期。
误会造成的错误 (Errors from misunderstandings)
Errors also result from miscommunications or misunderstandings between the client and the programmer. Some things may seem entirely logical for you and vice versa, so don’t start the project until you know what you have to do.
错误还由客户端与程序员之间的沟通不畅或误解引起。 有些事情对您来说似乎完全合乎逻辑,反之亦然,因此在您知道必须做的事情之前,不要启动项目。
Communicate with the client as clearly as you can and as often as you can, preferably in person or by phone/video call. Show him sketches or prototypes of what you are going to develop next days.
与客户进行尽可能清晰,尽可能频繁的沟通,最好是亲自或通过电话/视频通话。 向他展示您接下来将要开发的草图或原型。
And remember, Using email is usually not a good idea.
请记住,使用电子邮件通常不是一个好主意。
试图解决世界上所有的问题 (Trying to solve all the world’s problems)
It is common for the client to want the application to do all sorts of things. Help him see what the minimum he needs to be able to solve their need is.
客户通常希望应用程序执行各种操作。 帮助他了解解决需求的最低要求是什么。
在你的团队中 (In your team)
很快开始编码 (Get to coding very soon)
Start too early to code, and not asking for feedback until the end is probably one of the most frequent mistakes.
太早开始编写代码,直到结束时才要求反馈,这可能是最常见的错误之一。
Agree on a short cycle of iterations with the client/user and show them every week or two that you have implemented the right solution for this. This is the best way to check if we have understood what they have told us (or if they have understood it) and if we are doing well. Developers don’t dare to say they don’t understand the requirements.
与客户/用户就较短的迭代周期达成协议,并每两周向他们展示您已为此目的实施了正确的解决方案。 这是检查我们是否了解他们告诉我们的内容(或他们是否了解)以及我们是否状况良好的最佳方法。 开发人员不敢说他们不理解要求。
Sometimes for fear of looking bad in front of our boss, client, or our co-workers, we don’t dare say that we haven’t understood something, and this, in the end, results in a waste of time(and money) for everyone.
有时因为害怕在老板,客户或同事面前看起来很糟糕,我们不敢说我们还不了解某些东西,最终导致浪费时间(和金钱) ) 为了每一个。
太大压力 (Too much pressure)
Too often, the business puts tremendous pressure on the developers to deliver the solution too early without letting them no time to think of good solution design.
通常,企业对开发人员施加了巨大的压力,要求他们过早地交付解决方案,而又没有时间让他们思考好的解决方案设计。
质量不高 (Poor quality)
Without proper planning and when a lot of pressure is put on the developers, they start programming without testing, so in the end, the Software that is delivered is full of errors.
如果没有适当的计划,并且给开发人员带来很大压力,他们将在没有测试的情况下开始编程,因此最终,所交付的软件充满了错误。
自豪地承认我们不知道框架或工具 (Be too proud to admit that we don’t know a framework or tool)
If you don’t understand something or don’t know how to solve a problem, ask for help as soon as possible. No person knows everything, and it’s okay if we don’t know how to do something. Request a colleague for help or make it clear that you will need some time to form.
如果您不懂或不知道如何解决问题,请尽快寻求帮助。 没有人知道所有事情,如果我们不知道该怎么做也可以。 请求同事寻求帮助或明确您将需要一些时间来形成。
The use of tools, methods, and technologies or build systems outside our typical domains/experience is a risk if we don’t have the proper knowledge.
如果我们没有适当的知识,则使用工具,方法和技术或在我们的典型领域/经验之外构建系统是一种风险。
太多委托给框架 (Delegating too much to frameworks)
Using frameworks without understanding very well how they work or without the basis on which they are based is another way to ensure a low-quality software and with problems in the future that we will not know very well how to solve.
在不非常了解框架如何工作或没有基础的情况下使用框架,是另一种确保软件质量低下以及将来出现我们不太清楚如何解决问题的方法。
Also, it’ is a good idea to avoid the use of magic boxes to solve something.
另外,最好避免使用魔术盒来解决问题。
技术债务 (Technical debt)
We often believe that a project has an end where nothing will ever be done again. This rarely happens, and it is likely that after some time, we will have to modify it because the client wants to add new functionality or modify something. If our code is not solidly built and it has a lot of technical debt, any new feature will be costly for us.
我们通常认为,项目的终点是什么都不会再做。 这种情况很少发生,并且很可能在一段时间后,我们将不得不对其进行修改,因为客户端希望添加新功能或进行某些修改。 如果我们的代码不是牢固构建的,并且有很多技术债务,那么任何新功能对我们来说都是昂贵的。
不一致的软件 (Inconsistent Software)
The Software that works correctly in one environment but in another no works or works differently, for example, a Web App that works in Chrome but not in Internet Explorer.
在一种环境中可以正常运行但在另一种环境中无法正常运行的软件,例如在Web浏览器中运行但在Internet Explorer中不能运行的Web应用程序。
Make sure to make it clear at the beginning of the project where your Software will work.
确保在项目开始时明确说明您的软件将在哪里运行。
使用太新的技术 (Using too new Technology)
Using very new and unestablished Technology can be a big problem in the future. Security risk or maintenance risks in the future are two good examples.
使用非常新的,尚未建立的技术将来可能会成为一个大问题。 未来的安全风险或维护风险是两个很好的例子。
Remember that many of the newest ideas and frameworks offer only the essential features, and maybe in a few months, they won’t get updates anymore.
请记住,许多最新的想法和框架仅提供基本功能,也许在几个月后,它们将不再获得更新。
Also, working on the technology edge can cause your team to make more mistakes and create significant safety holes.
同样,在技术优势上工作可能会导致您的团队犯更多错误并造成重大安全漏洞。
使用过时的技术 (Using Outdated Technology)
Outdated Technology can be expensive to maintain and can decrease team productivity. It also can increase the security holes. So try to stay up to date but use established and standards technologies.
过时的技术维护成本很高,并且可能降低团队的生产力。 它还可以增加安全漏洞。 因此,请尝试保持最新状态,但要使用成熟的标准技术。
多个开发商和分包商 (Multiple developers and subcontractors)
Develop complex software witch multiple developers or subcontractors can be hell if we don’t plan well, and the obligations of each party aren’t established from the beginning.
开发复杂的软件,如果我们不能很好地计划,那么多个开发人员或分包商可能会陷入困境,而且从一开始就没有确立各方的义务。
无法处理生产数据容量 (Failure to handle production data capacities)
This refers to the Software’s incapacity to process the level required by the organization. Test your product with a real number of requests or volume of data.
这是指软件无法处理组织要求的级别。 使用大量请求或大量数据测试您的产品。
结论 (Conclusion)
In my career, I have made almost all these mistakes, especially at the beginning, and they have given me more than one headache to the point of ending up badly burned. Luckily I have learned over time, and now I enjoy developing Software.
在我的职业生涯中,我几乎犯了所有这些错误,尤其是在开始时,这些错误使我不止一次头痛,以致最终被严重烧伤。 幸运的是,随着时间的推移,我已经学到了东西,现在我喜欢开发软件。
If any of these things help you, I will be satisfied. Thanks for reading me!
如果这些事情对您有帮助,我会感到满意的。 感谢您阅读我!
Any other ideas?
还有其他想法吗?
git每个开发人员一个分支