| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx

10+年程序员总结的20+条经验教训

0
程序员 C/C++ 8087 次浏览

1.从小事做起,然后再扩展

无论是创建一个新的系统,还是添加功能到现有的系统中,我总是从一个简单到几乎没有任何所需功能的版本启动,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。

我很喜欢John Gall的这句话:“复杂系统总是源于简单系统的演化。”

2.一次只改变一件事

当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。换言之,就是使用短迭代。必须确保这个问题解 决之后,再转移到另一个问题上。这适用于向下提交。如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。

3.尽早地添加日志记录和错误处理

在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。错误处理也是如此——错误和异常越早处理越好。

4.每一行新代码必须至少执行一次

在你真正完成一个功能之前,你必须对它进行测试。不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。不过,不管怎么说,每一行新代码必须至少执行一次。

5.在整体测试之前先进行模块测试

先进行部分模块测试可以节省时间。通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。

6.所有事情所花费的时间总是比你预期的要长

特别是在编程中,即使一切进展顺利,我们也很难对功能所需的时间做出正确的预算。并且,开发软件时碰到各种意想不到的问题是非常常见的。

侯世达定律其实道出了真谛:做事所花费的时间总是比你预期的要长,即使你在预期中已经考虑了侯世达定律。

7.先了解现有的代码

大多数的编码都需要以某种方式改变现有的代码。即使是新功能,也需要适应现有的程序。所以,在你加进去新的内容前,首先需要了解当前的解决方案。否则, 你一不小心就很有可能会打破现有的功能。这意味着,阅读代码和编写代码都是必要的技能。这也是为什么看似微小的变化仍可能需要很长时间才能解决的原因之一 ——你首先必须了解上下文。

8.阅读和运行

幸运的是,对于理解代码,我们有两种互补的方法。你可以阅读代码,也可以运行代码。运行代码的确是个非常棒的好方法。所以,请确保充分利用这两种方法。

故障排除

9.bug总是难免的

我不喜欢那些宣称软件开发可以“一蹴而就”的高谈阔论。不论你再怎么费尽心机,bug总是难免的。最好能够做成可以快速故障排除、修复bug和部署修复的系统。

10.解决故障报告

每个开发人员都应该花时间去处理来自客户的故障报告,并修复bug。这能让你更好地理解客户的意图,明白如何使用系统,知道排除故障的难易程度,了解系统的设计情况。这也是为自己的开发成果负责的好方法。

11.重现问题

修复bug的第一步就是重现问题。然后你得确保修复之后,问题能够彻彻底底地消失。这样一个简单的规则可以确保你不会误将非问题当作是问题,并确保解决方案真的能够奏效。

12.修复已知错误,然后再看看有没有遗漏的地方

有时候,可能同时存在着几个不同的问题。它们之间的互相作用,可能会让你毫无头绪,束手无策。不要纠结于搞清楚发生了什么,先去解决所有已知的问题,然后再看看还有什么不对的地方。

13.没有巧合

在测试和故障排除时,不要相信会出现什么巧合。就像你改变了定时器的值,那么就会改变系统重启的频率。所以一切都并非是巧合。添加新功能,另一个不相干的功能变慢了?这绝对不是巧合。相反,是你应该仔细调查的内容。

14.关联时间戳

在故障排除时,事件的时间戳可以作为你的好帮手。寻找偶数增量。例如,如果系统重启了,并且刚刚发出过一个3000毫秒左右的请求,那么可能是触发了某个定时器,才导致出现重启的动作。

团队合作

15.面对面的交流最有效

当我们需要讨论如何解决问题时,那么面对面的交流比视频、打电话和电子邮件都要好。

16.橡皮鸭法

遇到你绞尽脑汁也解决不了的问题时,不妨找一个同事,然后将问题解释给他们听。很多时候,当你在叙述时,即使你的同事一言不发,你可能也会突然灵光乍现找到问题的关键。

17.问问题

阅读和运行代码往往非常有助于指出代码的目的和它的工作原理。但是如果你有机会咨询那些更为了解的人(例如原来的程序员),那么千万不要错过。

18.共享荣誉

不要贪图荣誉,该是谁的就是谁的。例如:“Marcus想出了这个主意……”(如果真是他想的话),而不要说“我们想出的……”。

其他

19.尝试

如果你不知道某种编程语言功能的工作原理,那么不妨写一个小程序来理解它是如何工作的。这同样适用于测试你正在开发的系统。如果我将参数设置为-1,会发生什么?当我在重启系统时,如果服务当掉,会发生什么?以此来研究它的工作原理。

20.带着问题睡觉

如果你正在解决一个很难的问题,那么不妨带着问题睡觉。有科学研究表明,这样做虽然你表明上并没有在主动思考,但你的潜意思却这么做了。其结果就是,第二天再去研究问题,解决方案已经呼之欲出了。

21.跳槽

不要害怕跳槽。和不同的人共事,开发不同的产品,感受不同的公司文化是非常有意思的。

22.不断学习

我们需要不断地学习和了解软件开发。你可以尝试不同的编程语言和工具,阅读软件开发的书籍,接受MOOC课程。相信我,量变才能达到质的飞跃,这些小小的学习积累,终有一天会大大地提高你的知识和能力。

原文地址:http://gad.qq.com/article/detail/7082368

15个答案

0

This particular is usually apparently essential and moreover outstanding truth along with for sure fair-minded and moreover admittedly useful My business is looking to find in advance designed for this specific useful stuffs… Selling Credit Card Machines

0

ดาวน์โหลดjoker123 auto Online slots, mobile phones, new online slots games, online slots that are the hottest in 2020, with low capital, can play.

0

ทางเข้า joker123 Top camp slots games Genuine license from PGSLOT game camp, online slots, direct web slot game service.

0

 joker PG SLOT Game is a new and hot slot game that is gaining popularity right now, online slots, direct websites, not through agents.

0

เว็บตรง สล็อต PG SLOT online slots games A game that is popular with players all over the world right now. Your slots play will never be boring again.

0

Cool you write, the information is very good and interesting, I'll give you a link to my site. mapquest driving directions

0

 

I wanna know more about this because this is really informative!

hearing specialist pittsburgh

0

I highly appreciate your work here! Thank you so much!

hearing test san antonio tx

0

I love your content! Great job!  hearing test spokane

0

感谢您的体验,我为这个博客感到非常高兴。这是一个信息主题。它帮助我解决了一些问题。巨大的机会和非常快速的工作方式。ทางเข้าjoker

0

Xo สล็อตออนไลน์ โปรสล็อต XO เกมออนไลน์ทำเงินยอดฮิตเกมสล็อต xopg.net คือเกมทำเงิน reeffutures2018 ผ่านทางออนไลน์อย่างหนึ่ง ที่เล่นง่าย และได้เงินไว แถมยังลงทุนด้วยเงินน้อย mavoixtavoie ทำเงินได้ตลอดเวลา ซึ่งหลายคนอาจได้เคยเห็นรีวิวเรื่องของ สล็อต xo สล็อตออนไลน์ ไว้มากมาย เทคนิคสล็อต ทั้งเรื่องการเล่นแล้วได้เงิน herbalpertpresents และเล่น สล็อต แล้วไม่ได้เงิน นั่นเองค่ะ ซึ่งการที่คุณจะเล่นได้เงินหรือไม่ได้เงินนั้น essentialsforasoul ส่วนหนึ่งก็เป็นในเรื่องของดวงเข้ามาเกี่ยวด้วย northbristol เพราะสล็อตเป็นเกมออนไลน์เสี่ยงโชค ทดลองเล่น xo เกมหนึ่งซึ่งจะมีสูตร หรือเทคนิคเข้ามาช่วย gclub เพื่อโกงดวงอยู่เสมอซึ่งในเว็บของเรา สมัคร xo ก็มีมาแนะนำไว้ให้เห็นกันมากมายหลายสูตร

0

ขอบคุณบทความดีๆที่มีให้เราได้ติดตาม หวังว่าคุณจะอัพบทความแบบนี้เรื่อยๆเพื่อการติดตามอย่างต่อเนื่อง เล่นสล็อต คุณสามารถเข้าไปติดตามเราได้ที่นี่
 

0

各位大牛们 我这边有大量一手高质量代理ip,有需要的可以联系我,消耗IP大的可以看看 都是家庭纯净的真实IP,绝非代理服务器IP ,Q3500891807

0

大量稳定供应国内个人终端代理IP,可对公签合同,价格含税。

                                                       

寻合作对象:大数据爬虫、自媒体补量、广告联盟。Q3500891807

0

+賴ppp298主頁有各種無碼裸照自慰影片 
今天約妹一律折扣2000免費申請黃金VIP可以半價約妹 
低價到你喜歡的 大奶人妻 有奶 水吸 19歲可愛學生妹妹*
還有妹妹的真人無碼自慰影片哦!!