惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Cloudbric
Cloudbric
G
GRAHAM CLULEY
S
Securelist
Schneier on Security
Schneier on Security
Help Net Security
Help Net Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Project Zero
Project Zero
Spread Privacy
Spread Privacy
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
博客园_首页
有赞技术团队
有赞技术团队
Simon Willison's Weblog
Simon Willison's Weblog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Latest news
Latest news
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Attack and Defense Labs
Attack and Defense Labs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
O
OpenAI News
J
Java Code Geeks
T
Tenable Blog
K
Kaspersky official blog
AWS News Blog
AWS News Blog
S
Security @ Cisco Blogs
The GitHub Blog
The GitHub Blog
T
Threatpost
月光博客
月光博客
H
Heimdal Security Blog
Security Latest
Security Latest
The Hacker News
The Hacker News
Y
Y Combinator Blog
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
C
Cisco Blogs
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
C
CERT Recently Published Vulnerability Notes
D
Docker
Google Online Security Blog
Google Online Security Blog
D
DataBreaches.Net
V
Visual Studio Blog
H
Help Net Security

博客园 - 灰灰狼

架构与设计概要 IoC概要 需求分析概要 接上文,支持并发数量的完美版本 消息队列并发处理基类-简化版 2013年5.28~7.27 Microsoft FTE 微软面试总结 String Format for DateTime 多语言建议 multi-language 问题观 About that task about wcf 基于证书的WCF安全开发详解 asp.net缓存(20100804完善版) - 灰灰狼 - 博客园 呼唤程序员精神——关于我今天发起的讨论的总结 asp.net mvc下实现窗口不关闭,就让Session不过期 正确的产品开发策略
New life I would like
灰灰狼 · 2010-10-22 · via 博客园 - 灰灰狼

In the past 1 year, we have done many tasks and released many programs. I suppose you are not very satisfied with our job, for the problems when software delivery and release. In my opinion, the most serious matters are weak product, low productivity, executive ability, release delay and delay. We must do wrong things or do the wrong way or forget something.

I have made many suggestions, but for my poor English skill, I couldn't talk to you directly. Now I decide to improve my English and write articles in English to you.

For customers, the most important aspect of a product is quality. For us developers, the most important is the cost, consists of labor cost and time cost. So, our task is how to design and implement a nice product in a short time as possible. Let's analyze the developing process, first is the requirement, and then the design, next coding, next testing, releasing, maintaining. These are the common kinds of tasks we must do in a releasing plan. Problems come:

1. Document form. We developers get the requirements by Work Instructions. In this team, most of members could not understand the document very well without good English skills. So Adam will be the only channel, in other words, a bottleneck, accordingly, time will be wasted. My resolution for this is to separate the big document into small tasks, the small tasks are easier to understand, carry out and examine. In different period, there are different form and style for the requirements. When customers offer the purpose, it may be the work instruction. Before developing, we must separate that into small tasks, I defined a form of task, and you may alter or mend it into new different versions for different scenarios. Another point I want to say is, most of the time, the requirement is not a solid things, maybe it's better to implement code after defining the small task for a week, the delay time is for waiting for the requirement stabilization, and perhaps in this period the better design for it will come into the developer mind.

2. Code structure & style. In the past time, when a programmer wrote a suite of codes for a requirement firstly, these codes will become a model, everyone is asked to repeat alike code for all the alike requirements. Why to do so? One says, teamwork (when a people leave team, the other can maintain his code well, because the process is same), to complete task as soon as possible. It is right? I don't think so. However clever a programmer is, within the code he firstly write, there must be some mistakes or code or structure that can be improved better. If we repeat his code regardless, we are repeating wrong code (I don't mean we can't get the right result, but walk on the wrong way). To generate the accurate result is only the basic requirement. I wrote 2 articles named program is a girl and standards to estimate code, the most important things are readability, modularization, flexibility, maintainability, and size of code. I've read many rubbish code that didn't abstract the requirement, didn't be separated into different modules, and even contains "goto". What's the reason we repeat it? If we do so, we give up the readability, modularization, flexibility, maintainability, and size of code, everything only except the right result. Next, let's talk about time. Is it true if we repeat a bad code, we'll complete the task fastest? In more times, I don't think so. The bad code commonly has big size, complicated structure (has no structure, or several unrelated code placed in one function), duplicate code. It is the alike function we will write, but not the same one, so we must alter the necessary code for a particular requirement. For complex, it's not easy, but mistake is easy to make. That means, though we completed the function quickly, when testing, a bug is found, but for duplicated code, the bug is in many places, who can assure that all the bug will be fixed at one time? If after a long time, one requirement changed, people (who write the complex code) forget the former process or a new people don't know the logic, they must read the code carefully, for the readability thrown away, they need long time. Long time, long time, everything needs long time, should we really complete the function quickly only for the right result? No, we need essential refactoring, improving, and specially, in our team, there must be an expert assigned to review code and push the team to perform the best practices.

3. Slow tools. Slow PC, slow network! God, we are professional programmer? From want of support, who know how much time we spent to waiting for the response of tools? Win7 will be setup this time, but network still need to improve.

4. Test way. Design & document is not taken into the testing process. Software is tested laxly, no document, no strict test case, all these produce the weak product. We should design the test cases, and write some automatic script, so that the bugs can be found as much as possible, and the speed of testing can be accelerated.

5. Attitude. I mean self-perspective. We have no the courage to research and face the past mistakes. We said too many good words to ourselves, such as we used XXX design pattern in XXX project. In my opinion, the detail code is more significant, because they are the main part of a project. In our projects, there are many big functions with too many code lines. Some code line is too long to read, line return should be added to separate it to several lines. HTML indent is not well performed. We repeat these wrong way again and again, no one desire to renew self better and better. Everyone only makes a program can run, not for excellent. We need define some better processes and mechanisms, and then perform them. There is a saying in China, sharpening your ax will not delay your job of cutting wood. We need spend more time on sharpening ax.

I'd like my life filled with thinking, passion, and creation, not the repeating.