1.此处有没有模式?
研究在哪些情况下行得通,哪些情况下行不通的设计模式,能够让我们发现潜在的规则,了解看似不相关的概念和行为。为了更深层次地了解工作,你需要时不时地问问自己,“此处有没有设计模式?”。
这句话适用的不只是你的代码。在根据业务要求而变的类型变化中有没有模式?技术发展有没有模式?你是否经常看到同样类型的bug连连弹出?
理解其实就是一种感知模式。——以赛亚·伯林
2.如何让它变得简单起来?
通常作为web开发人员,我们会想着拿出复杂又可扩展的解决方案。搞点复杂的会让你觉得自己非常的高大上。问题是,你永远无法预知你的产品和业务在未来将会发生怎样的改变。
架构和编码与其说像建造,还不如说更像园艺艺术。你必须得能够适应不断变化的环境。解决方案越复杂,它的适应力就越弱。
简单才是终极的复杂。——达芬奇
3.它为什么这么工作?
知道事物能工作,与知道它为什么这么工作是两个完全不同的事情。知道一些事物的行为原因,有助于你做出显然更好的决策。
伟大的程序员,和那些只是知道一门编程语言的人之间的区别是,两者处于的知识层深度不同,前者深刻地理解其工作原理。
这也适用于修复问题的时候。“只要重新启动服务即可。”“你重启了吗?”当弹出问题的时候,我们往往会说类似于这样的话。然而,如果你这样说了,那你就失去了一次学习的黄金机会。
知道为什么会出现问题,才能从根本上修复问题,才能避免再出现这样的问题。
4.之前有人做过吗?
当你自我感觉发明了一种复杂算法的时候,可能就意味着你正在错误的道路上了。最好的方法是搜索其他人是否已经解决了这个问题。
需要写算法,以便于添加标签到最接近用户鼠标的菜单项中?别急,已经有解救方法了。想为送货车找一条最短路径?也已经有解决方法了。想找类似于用户刚刚enter的标签,那么也不用自己绞尽脑汁写了。
上面这些只是几个例子,但是相信我,你碰到的问题,别人早就碰到过了。
我能看得更远,那是因为站在巨人的肩膀上。——牛顿
5.谁第一个提出来的?
你觉得自己知道REST?
那么,你读过Roy Fielding说明REST的原始文件吗,你了解它的期望目的吗?暂且不说那个在IDE V7中使用REST API生成向导比你更有经验的博主了。
所以,告诉自己试着去阅读概念和理论的原始来源。然后通过各种方法去了解行业思想领袖给出的最新开发成果。如果你不知道是从哪里开始的,那么你怎么理解目前的发展进程呢?
6.我真的热爱我目前的工作吗?
首先让我们面对一个事实:编程很难。
即使很难,编程也在不断发展。如果用现在的标准来看,2年前的框架简直笨拙地就像一头恐龙。要想留在这一行,那么你需要终生致力于学习和研究。
如果你确实不喜欢编程,那么要想跟上那些热爱的人的步伐,希望并不大。找找你为什么对她没有兴致的原因。不要因为与市场存在差距或因为待遇还不错,就决定成为一名安全专家,不要只是因为最近的文章上面评论说,UX是高科技领域中最热门的职位,就立志成为一个UX专家。
重要的事情说三遍:做自己热爱的事情。做自己热爱的事情。做自己热爱的事情。
做自己热爱的事情,你所需要的资源也会随之而来。——彼得·麦克威廉斯
7.还可以用在哪里?
我发现web开发人员最大的局限之一就是失败的想象力。
我们在特定的情况下学习的东西,或看到某种用于解决特定问题的技术,我们往往会认为这就是它们的唯一用途。但是,这个想法基本上都是错的。每次你学到新的东西的时候,都应该问自己:“还可以用在哪里?”。
学到了一种超棒的新的定位方法来定位图形节点,那么它是不是也可以运用到在有2个维度的数据集中查找某一个数据点?发现一个越过 WebSockets从客户端发送数据到服务器的很棒方法?那么它该如何应用于制定一个可扩展系列的后端服务?有时候此路不通,有时候却是可行的。
逻辑能力能让你从A到Z,但是想象力却能让你去往任何地方。—— 爱因斯坦
8.我败在哪里?
最简单的革新方法就是降低失败的成本。
游戏开发公司Valve和它的一些同行就将此当作金科玉律。这同样适用于web开发人员,如果你害怕失败,那么你将永远不会有大的突破。
勇敢地去尝试,从失败中学习,然后再试一次。
不要害怕犯错。认识失败。然后从头来过。——本杰明·富兰克林
9.如何实现这个目标?
我们生活的世界中只有很少一部分事情是真的完全不可能的。
要抱着自己想做的任何事情都是可能的这样一种想法去做事。可能你会发现你想做的事不符合当前实际,但随着世界的不断进步,它也许比你想象地更快成为了现实。
事情未成功之前,它永远是看似不可能的。——曼德拉(前南非总统)
10.我可以向谁学习?
不要在你是最聪明的地方工作。
选择那些拥有能够激励你,挑战你,让你做得更好的同事的工作和企业。不必与代码相关,在文本编辑器和命令行之外还有一个世界。学习其他领域的事情,然后应用于你的工作中。
不管如何,仅仅胜任工作是不够的。
译文链接:http://www.codeceo.com/article/10-problems-programmer-ask.html
英文原文:10 Questions Developers Should be Asking Themselves
- 浏览: 118795 次
- 性别:
- 来自: 天津
-
文章分类
最新评论
发表评论
-
腾讯全端 AlloyTeam 团队 Blog 地址
2016-04-22 12:42 731腾讯全端 AlloyTeam 团队 Blog http:/ ... -
转 浅谈浏览器http的缓存机制
2016-04-22 12:39 640原文:http://www.cnblogs.com/vajo ... -
转 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
2016-04-22 12:05 512原文:http://web.jobbole.co ... -
cookie和session的区别
2016-02-21 18:56 385http://blog.csdn.net/fangaoxin ... -
转 给Java程序猿们推荐一些值得一看的好书
2016-02-21 18:08 620原文http://www.cnblogs.com/x ... -
转 太多选择——如何挑选合适的大数据或Hadoop平台?
2016-02-06 10:02 0原文http://www.infoq.com/cn/arti ... -
转 浏览器缓存知识小结及应用
2016-02-06 09:53 631作者:流云诸葛 出处 ... -
自己对前端的一些总结
2016-02-04 08:45 564前端一些框架当前比 ... -
为什么程序员总是不能准确估测项目时间
2016-02-03 09:03 525原文http://blog.jobbole.com/249 ... -
现代浏览器的工作原理
2016-02-03 09:03 439原文http://blog.jobbole.com/127 ... -
转 最好的学习方法是什么样的?
2016-02-02 09:32 483原文:http://blog.jobbole. ... -
转 编程的智慧
2016-02-02 09:31 325原文:http://www.yinwang.o ... -
转 禅道程序员的10条原则
2016-02-02 09:30 451原文http://blog.jobbole.com ... -
转 Tomcat server.xml配置示例
2016-02-01 09:10 707原文http://www.importnew.com/17 ... -
转 不要自称为程序员
2016-02-01 09:09 594原文http://blog.jobbole.com/4 ... -
七张图读懂,移动互联网时代的商业模式 存草稿
2016-01-28 13:53 0伴随着智能手机的普及和4G技术的推广,移动互联网时代已 ... -
转 12本最具影响力的程序员书籍
2016-01-31 21:41 596译文链接:http://www.codeceo.com/a ... -
Google Java编程风格指南
2016-01-30 11:29 551作者:Hawstein 出处:ht ... -
程序员跳槽神级攻略
2016-01-30 11:29 646原文http://blog.csdn.net/fo ... -
编程精华资源(ITeye优秀专栏)大汇总
2016-01-28 13:01 0编程精华资源(ITeye优秀专栏)大汇总 http://www ...
相关推荐
在这个快-paced的IT行业中,程序员的跳槽问题变得越来越重要。跳槽不仅是一种策略,更是一种学问。以下是小编整理的java程序员跳槽方法,以供大家参考。 首先,需要强调一点,跳槽并没有坏处,但是频繁的跳槽就不好...
程序员怎样能向架构师方向靠近;什么是管理能力;收集信息的能力;分析问题、做出决策的能力;授权与监督的能力;收集反馈、及时调整的能力;走向目的地的能力;架构师应该管些什么?架构师如何管理架构?制定架构...
本书采用了自问自答的语言风格,它讨论了实际程序设计中普遍存在的,又非常不易察觉的问题,并且进行了深刻的分析,提出了具有广泛意义的解决方案。本书值得每个想成为优秀c++程序员的人阅读。我相信,任何c++程序员...
知名技术博客作家、Stack Overflow创始人Jeff Atwood有三十多年的职业编程经验,通过他的切身经历分享,帮助读者成长为高效能程序员。 会议是浪费工作时间的最佳去处 今天你开了多少个会?这个星期呢?这个月呢?再...
本书采用了自问自答的语言风格,它讨论了实际程序设计中普遍存在的,又非常不易察觉的问题,并且进行了深刻的分析,提出了具有广泛意义的解决方案。本书值得每个想成为优秀c++程序员的人阅读。我相信,任何c++程序员...
它解释了通用性如何有助于更好的信息隐藏,并提供了一些自问的问题以评估是否应该使模块更通用。 **不同层次的不同抽象** 软件设计中不同层次需要不同的抽象级别。作者讨论了通过的方法,界面的重复是否可以接受,...
使用throw来处理预期情况,明确什么构成了异常情况,并在抛出异常前自问五个问题:情况是否真正意外,是否准备好结束程序,是否可以将决策推向上层调用链,是否在抛弃有价值的诊断信息,以及是否继续会导致产生一个...
知名技术博客作家、StackOverflow创始人JeffAtwood有三十多年的职业编程经验,通过他的切身经历分享,帮助读者成长为高效能程序员。今天你开了多少个会?这个星期呢?这个月呢?再自问一下,那些会议中有多少是值得...
他自问:“编程是什么?支持它作为一个智慧上值得尊重的学科的坚实知识体在哪里?”这些问题反映了当时计算机科学尚未形成完整的学科体系,缺乏足够的理论基础。 戴克斯特拉也提到了他的一个同事,A. van ...
在自动化系统中,这类文件通常由程序员编写,使用诸如C++、Python、LabVIEW等编程语言,用于控制设备的动作,与传感器、执行机构进行通信,并根据实时数据调整操作策略。 上料站的实现涉及多个技术方面: 1. **...
他通过自问自答的方式,展现了对自我认知的探索,反映了个体在现代社会中寻求自我定位的普遍心理状态。作者对于自己“爱胡思乱想,爱钻牛角尖”的自我描述,表现了一种常见的心理焦虑状态。这种自我认知和反思的过程...
2. 每个 assert 只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败。 例如,不好的写法: ```c assert(nOffset >= 0 && nOffset + nSize ); ``` 好的写法: ```c assert(n...