文档章节

程序员要常问常思考

机智的序员
 机智的序员
发布于 2017/04/24 16:54
字数 1861
阅读 8
收藏 0

程序员怎样不断进步?看更多的编程书籍,学更多的开发技能,做更多的项目,这些方法的本质其实都一样:让我们保持提问,保持兴趣,保持思考,学会提出问题解决问题。那程序员想要进步,还有什么方法呢?提问。通过提问不断鞭策、不断提醒自己是否够努力。常常问自己这些问题,加以反思才能不断进步。
你想成为一个开发者/程序员么?
那是时候放下《24小时学会超级骗子语言》之类的书了。相反地,每天问自己一下10个问题,并养成一个习惯吧。
是否有某种模式?
探寻可行与不可行中的模式,能发现(事物)背后的原理,这些原理则驱动着看似无关的概念和行为。要想对你做的工作有更深的理解,养成问自己“是否有种模式存在?”的习惯吧。
这不仅仅适用于你的代码。在各类商业需求的变化中有某种模式吗?技术进步的方式中有某种模式吗?你看到同样的错误反复地蹦出来吗?
理解就是领悟模式。 —— 以赛亚·伯林
我该如何使它变得更简约?
通常作为web开发者,我们想提出复杂且可扩展的解决方案。做一些极其复杂的东西,会让你觉得自己就是宇宙的主宰。而问题是你永远不能预测到产品和业务今后会怎样变化。
“架构”和编写代码更像是园艺而不是建筑。你需要有能力去适应不断变化的环境,解决方案越复杂,越难以适应。
简约是复杂的最终形式。 ——列昂纳多·达·芬奇
为什么它是那样工作的?
知道事情运作和知道它运作的原因,这是两件完全不同的事。如果你知道事情为什么是那样(运作),那么你就能够做出更好的决策。
一个优秀的程序员和懂一点编程语言的人,差别在于理解缘由的深度。
同样的原则也适用于修复某个问题。“只需重启一下服务。” “你试过重启吗?” 当问题发生时,我们经常会想到这些话。每次你这样说时,你就失去了一个绝好的学习机会。
理解问题的原因,能让你解决根本原因,并且永久消除这类错误。最起码,你将不再犯同样的错误。
之前有人做过吗?
无论何时,如果你发现自己正在发明一个复杂的算法,你很可能就是方法不对。除非你正忙于研究博士论文,一般已经有人解决了这个问题。
需要编写一个给离用户鼠标最近的item添加标签的算法?看看Voronoi Tesselations(泰森多边形法,多边形密度)。想要找到卡车送货的最短路径?看看Dijkstra算法吧。想要找到用户输入内容的近似标记?试试计算它的 Levenschtein 距离吧。
这些只是几个简单示例,但相信我,还有很多很多。
如果我看得更远,那是因为我站在巨人的肩上 ——艾萨克·牛顿
谁最先提到它?
你以为你知道REST吗?
你有读过Roy Fielding描述REST的论文原文吗?你真的明白它的用意吗?那种比你多 5 分钟经验的家伙,在IDE v7工具中用 REST API 生成向导写出来的博客,可不算数的。
帮自己一个忙,尽可能试着去读某种概念或理论的原始文档吧,然后通过各种手段去了解行业领袖的最新发展动态。如果你不知道他们是从哪开始的,你怎么跟得上他们的步伐呢?
我热爱现在所做的吗?
编程不简单,咱们承认吧。
除了难以外,编程还总在不断发展。最先进的框架从2年前的“笨重恐龙”已经发展到今天的标准。想要一直站在你的“游戏”顶端,你需要树立终生学习和研究的观念。
如果你不热爱你所做的,那么你就没有跟上其他家伙的希望。所以找到那种让你激情燃烧的编程类型吧!不要因为市场缺口或者收入不菲而决定成为一名安全专家,不要因为一篇文章说用户体验是最热门的科技工作而决定成为一名用户体验专家。
再说一次,做你热爱的。
做你热爱的,所需的资源将随之而来。—— 彼得·麦克威廉斯
我还可以在哪些其他的地方用到这个?
我看到Web开发者给他们自己设定的最大的一个限制就是,想象力的失败。
如果我们学习一个特定环境下的东西,或者看到解决某个特定问题的技术时,我们认为这就它唯一适用的地方。这种观点大多时候都是错的。每次学到新东西时,反问自己:“我还可以在哪些其他的地方用到这个?”
发现了在图表上定位节点的新的好方法?将同样的技术应用于发现二维数据集中有趣的数据点?找到了通过websockets从客户端发送数据到服务器端的新方法?它怎样才能应用到可扩展的后台服务上呢?有时你会错误的,但有时你将是正确的。
这给我们带来了下一个问题……
逻辑可以带你从A到Z,但想像力可以让你无处不在。 ——阿尔伯特·爱因斯坦
今天我做错了什么吗?
提高创新的最简单方法之一就是降低失误的成本。
游戏开发公司Valve和其他几个公司很赞同这个观点。这些也同样适用于你成为Web开发者的成长过程。如果你害怕失败,你就不会有大的突破。
勇敢点、去尝试、失败了、去学习,然后再来试试。
不要害怕错误,你将认识失败,然后重新再来。——本杰明·富兰克林
我们怎样使它成为可能?
现实中,一切皆有可能,而凡事均有例外。
先开始假设不管你做什么事情都是可行的,然后回推过去来工作。你可能会发现,你想做的暂时是不切实际的,但以当今世界的变化速度,它变得可行的时间,可能比你想的要早。
在事情未成功之前,一切总看似不可能。?——纳尔逊·曼德拉
我可以向谁学习?
永远不要在你是最聪明的地方工作。
挑选拥有可以启发你、激励你做得更好的同事的工作和公司。没必要和编程有关系,在文本编辑器和命令行之外还有一个世界。从其他领域学习,并应用到你的工作中。
不管怎么样,保持竞争力更好!

© 著作权归作者所有

机智的序员
粉丝 3
博文 69
码字总数 127201
作品 0
广州
私信 提问
面试感悟----一名3年工作经验的程序员应该具备的技能

关于程序员的几个阶段 每个程序员、或者说每个工作者都应该有自己的职业规划,如果看到这里的朋友没有自己的职业规划,希望你可以思考一下自己的将来。 LZ常常思考自己的未来,也从自己的思考...

-wangming-
2016/03/11
381
5
3年工作经验的程序员应该具备的技能

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 工作才是生存的唯一依靠 每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没...

px01ih8
2017/12/14
0
0
阿里Java工程师分享3年工作经验的程序员应该具备的技能

本文转载自:阿里Java工程师分享3年工作经验的程序员应该具备的技能 每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一...

gongxifacai_believe
2017/12/26
0
0
3年工作经验的程序员应该具备的技能

点击上方“程序员大咖”,选择“置顶公众号” 关键时刻,第一时间送达! 工作才是生存的唯一依靠 每个程序员、或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没...

px01ih8
2017/12/14
0
0
别总埋汰写代码,停下总结一下吧

网站总结 内容管理员机制优化,由伊成为组长,成员有:kaka,小怨妇,天丫头,带领团队整理分享代码!有愿意整理代码获取牛币的请联系伊成。 资讯精选 感恩程序员的5年前和5年后 这几天事情比较多...

wangwenya
2014/05/11
360
3

没有更多内容

加载失败,请刷新页面

加载更多

编程作业20190210900169

1编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include <stdio.h>#include <stdlib.h> int main(){ char firstName[20]; char lastName[20]; print......

1李嘉焘1
14分钟前
2
0
补码的优点及原理分析

只讨论整数 1.计算机内部为什么没有减法器? 减法运算本身其实就是加法,如x - y即x +(-y),所以只需要将负数成功表示出来并可以参加加法运算,那加法器就可同时实现“+”和“-”的运算。这...

清自以敬
29分钟前
58
0
Docker 可视化管理 portainer

官网安装指南: https://portainer.readthedocs.io/en/latest/deployment.html docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml...

Moks角木
56分钟前
5
0
Spring Security 实战干货:必须掌握的一些内置 Filter

1. 前言 上一文我们使用 Spring Security 实现了各种登录聚合的场面。其中我们是通过在 UsernamePasswordAuthenticationFilter 之前一个自定义的过滤器实现的。我怎么知道自定义过滤器要加在...

码农小胖哥
59分钟前
8
0
常见分布式事务解决方案

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源...

asdf08442a
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部