致年轻开发人员的一封信

我收到了很多年轻开发人员写给我的邮件,希望可以提升自己的编程能力。我肯定不是第一个讨论这个话题的人,所以我不确定还可以说出什么新意。然而,这里我认为还是非常值得列出我认为很重要的几点吧。

要跟其他开发者一起工作。我们正处在科技史上的黄金时期,这是第一次,身处何地,雇主是谁变得不那么重要。只要 你的网络带宽足够,你就可以与身处地球任何位置的另一位开发者搭档共同编写代码。越来越多我认识的资深开发者都在贡献自己的时间分享这样的知识。我朋友 Evan Light有“开放办公时间”,而且还在开发一个网站帮助 Rubyists 搭档。我也这样做了好一阵了。想要研究FLOSS代码?发邮件给我,我们会把事情安排好。

编注:Rubyist 是指那些对Ruby的关心程度超过常人的人。

编注:“开放办公室时间”是美国大学的传统,作法是学校每周开放办公室数小时,学生不需事先预约就能和老师面谈。

编注:Free/Libre/Open Source Software 免费/自由/开源软件。

阅读经典的书籍。如《代码大全》、《程序员修炼之道》、《程序设计实践》、《设计模式》等。

要读 WikiWiki (有时又叫做 WardsWiki)。这一点非常重要。有时我觉得,在我的学习遇到瓶颈时,我就是通过浏览WikiWiki 而得以学到所有我真正需要的东西的。

要读一读别人编的代码。为GitHub 喝彩!如果你想以编撰得更好的作品为开始而你又对 Ruby、有所了解,那么就试一试解决Ruby Quiz上的问题。

Ruby,一种为简单快捷对象导向编程(面向对象程序设计)而创的脚本语言,由日本人松本行弘开发,遵守GPL协议和Ruby License。Ruby的作者认为Ruby 》 Smalltalk Perl,表示Ruby是一个语法像Smalltalk一样完全面向对象、脚本执行、又有Perl强大的文字处理功能的程序语言。其它特色包括: 运算符重载自动垃圾回收、在Windows上,载入DLL 巨大的标准库。

加入本地用户组。如果没有这样的群,那就创建一个,然后开始交流。我不在意你是一个多么差劲的菜鸟。要想使你全面了解一个问题,再没有比这更好的方法了。

开一个博客。不要担心自己会成为异类。一些最有用的博客其实主要记录了一个程序员的经验和错误以及他们是如何克服困难。反思是学习的最重要的一部分,而写作则会帮助你反思。并且,在你思考之前,你又会从其他程序员那得到反馈。

我相信你已经听说过这一点了:为一个开源项目提交补丁。

用掷硬币的方式来作决定。正面朝上就选择 Vim,背面朝上就选Emacs。开始学习容易上手的编辑器。这两种中的任何一种都会在你剩余的编程生涯中一直与你同在。强大、灵活的工具能使优秀的程序员更加优秀。

学习多种编程语言。但首先你得学好一编种程语言。你需要一种可以使你得到灵感并且快速掌握的在一天内迅速地写出 第一个版本的编程语言,从而不用花费大量的时间去学习你会很容易忘记的语言细节。然而,一旦你已经掌握了这门语言,你就要去学习新的语言,来挑战所有你从 之前所学习的语言中学到的假设。要选择风格完全不同的编程语言。我所看过的一本书《七周掌握七门语言》 中就对编程思维模型进行了全面、广泛的概括。

为你所使用的编程语言和平台建立邮件列表。人们有时会忘记在博客、Hacker News和推特以外还有很多讨论是非常有益的。跟其它场合比起来邮件列表通常是文明而有用的工具。

StackOverflow 是你的良师益友。

不要花费太多的时间去为某物找寻“最好”的工具。我过去常常会花费好几天或几个星期,去试着为我即将开始的项目寻找最好的框架,以致我的工作进度停滞不前。不要掉进这个陷阱里。当你已经是个相对有经验的开发人员时,选择那些有很多人在用的语言和框架。在你遇到困难时,知道如何继续下去比选择完美的工具要重要。

寻找练习的机会。

当然,还有一点就是:练习、练习、练习。上班时写代码。在家写代码。练习 code katas 。编程与其它技能一样:说到底,它的本质还是练习。

  译文出处:伯乐在线 - 职场博客 - 程序员
  译文链接:http://www.jobbole.com/entry.php/1419

  原文:Avdi Grimm  翻译:敏捷翻译 - 张秀君

转载于:https://www.cnblogs.com/yonge/archive/2011/09/23/2185706.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

笔记整理之 SHELL 变量

变量的类型:1.自定义变量定义变量: 变量名变量值 变量名必须以字母或下划线开头,区分大小写 url1test.3glong.com 引用变量: $变量名 或 ${变量名} 查看变量: echo $变量名 set(所有变量:包括自定…

Node的异步与java的异步_node.js和异步编程回文

以下代码不是异步的&#xff0c;为什么以及如何制作呢&#xff1f;function compute(callback){for(var i 0; i < 1000 ; i){}callback(i);}我将假设你的代码试图说&#xff0c;“我需要做1000次&#xff0c;然后在一切都完成时使用我的回调” .即使你的for循环也不会在这里…

N个三角形分割平面个数(数学)

一个三角形的时候&#xff0c;再加一个三角形&#xff0c;每一条变会与第一个三角形的两条边相交&#xff0c;这样增加2个小三角形&#xff0c;即两个面。f(2)3*2f(1)&#xff0c;再加一个三角形&#xff0c;每一条边会与前两个三角形的四条边相交&#xff0c;形成四个小三角形…

2011年9月19日 面试重点:asp.net运行原理和生命周期

面试重点&#xff1a;asp.net运行原理和生命周期1、ispostback回调机制isPostBackfalse !IsPostBackture 当前页面是第一次加载IsPostBack 由于用户交互(page.submit())提交页面而产生的加载,二次加载html客户端代码将ispostback值存放在viewstate隐藏字段中<input type&quo…

redis——集群

2019独角兽企业重金招聘Python工程师标准>>> 现实中redis需要若干台redis服务器的支持&#xff1a; &#xff08;1&#xff09;从结构上&#xff0c;单个Redis服务器会产生单点故障&#xff0c;同时一台服务器需要承受所有的请求负载。这就需要为数据生成多个副本并…

queue java 用法_Java队列(Queue)用法

Java 实例 - 队列(Queue)用法队列是一种特殊的线性表&#xff0c;它只允许在表的前端进行删除操作&#xff0c;而在表的后端进行插入操作。LinkedList类实现了Queue接口&#xff0c;因此我们可以把LinkedList当成Queue来用。以下实例演示了队列(Queue)的用法&#xff1a;Main.j…

POJ 2409 Let it Bead (Polya定理)

题意 用k种颜色对n个珠子构成的环上色&#xff0c;旋转翻转后相同的只算一种&#xff0c;求不等价的着色方案数。 思路 Polya定理 X是对象集合{1, 2, ……, n}&#xff0c; 设G是X上的置换群&#xff0c;用M种颜色染N种对象&#xff0c;则不同的染色方案数为&#xff1a; λ(g)…

seo

SEO&#xff08;Search Engine Optimization&#xff09;&#xff0c;汉译为搜索引擎优化&#xff0c;是较为流行的网络营销方式&#xff0c;主要目的是增加特定关键字的曝光率以增加网站的能见度&#xff0c;进而增加销售的机会。分为站外SEO和站内SEO两种。SEO的主要工作是通…

Ubuntu Server 之Apache2 虚拟主机配置指南(个人实践解读)

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dgd2010.blog.51cto.com/1539422/468531 这是完成在ubuntu Server的apache服务器上安装一个虚拟主机的具体配置。希望对用到的朋友有所帮…

java10支持mybatis_写了10年的代码,我最怕写Mybatis这些配置,现在有详解了

作者 | 阿进的写字台链接 | www.cnblogs.com/homejim/p/9782403.html在使用 mybatis 过程中&#xff0c; 当手写 JavaBean和XML 写的越来越多的时候&#xff0c; 就越来越同意出错。这种重复性的工作&#xff0c; 我们当然不希望做那么多。还好&#xff0c; mybatis 为我们提供…

webservice-WebService试题

ylbtech-doc:webservice-WebService试题WebService试题 1.A,返回顶部001&#xff0e;{WebService题目}下列是Web服务体系结构中的角色的是&#xff08;&#xff09;&#xff08;选择3项&#xff09; A&#xff09;服务提供者 B&#xff09;服务请求者 C&#…

Session的模拟

Session相关的mock Session相关的mock主要有以下两个步骤&#xff1a; 1&#xff09; HttpContext对象的实例化 session属于HttpContext对象&#xff0c;所以简单来说&#xff0c;就是我们需要构造一个HttpContext&#xff0c;对象然后在给其中的Session附值。然后再把它指定到…

定时自动启动任务crontab命令用法

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://navyaijm.blog.51cto.com/4647068/816636 crontab简介 crontab命令常见于Unix和类Unix的操作系统之中&#xff0c;用于设置周期性被执行的…

9读书1-我在义务发财(1)

母亲说完&#xff0c;父亲就起身出门了。我没出门&#xff0c;上楼到了我的房间里。我要干两件事情&#xff1a;一是写“发财”两个大字贴在我的床头&#xff1b;二是在手上刺青。 //有时候为了达到自己心中说想打目标&#xff0c;必须时时刻刻的提醒自己&#xff0c;这就是一些…

java忽略引号中的分隔符_java – 令牌化但忽略引号内的分隔符

在这种情况下,使用java.util.regex.Matcher更容易使用find()而不是任何类型的拆分.也就是说,不必定义令牌之间的分隔符的模式,您可以为令牌本身定义模式.以下是一个例子&#xff1a;String text "1 2 \"333 4\" 55 6 \"77\" 8 999";// 1 2 &quo…

【转】Tomcat+MyEclipse

TomcatMyEclipse 单位&#xff1a;河南恩湃电力技术有限公司 部门&#xff1a;IT部—应用集成项目组 编写&#xff1a;刘志华 日期&#xff1a;2010-4-19 说明 本文中要讲述在程序开发过程中Tomcat和MyEclipse的一些使用方法和常用配置&#xff0c;本文适用于公司内部所有使用T…

学生管理系统(C语言)

1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 #define N 35 #define LEN (Student*) malloc(sizeof(Student))6 /* 学生数据结构 */7 typedef struct node8 {9 char num[20];10 char name[15];11 int score[N];12 int …

linux java usb 串口_2019-11-02 Linux下USB-串口的使用

在实验室配置一台设备要用到串口&#xff0c;但串口线只连到了linux服务器上&#xff0c;又不想跑一趟实验室&#xff0c;就直接用linux串口连吧&#xff0c;以前都在windows上用putty&#xff0c; securecrt软件&#xff0c;还真没直接在linux上使用&#xff0c;查一下命令记录…

C++ STL的基本基本原理

STL都是在内存的堆区分配的&#xff0c;但是其析构也是STL帮我们做好的&#xff0c;不用手动去delete。 1.vector 逻辑地址连续的一片内存空间&#xff0c;当空间不足&#xff0c;重新申请新的地址空间&#xff0c;将原有的数据复制过去&#xff0c;而新的地址空间的大小C没有规…

IE9不支持CSS line-height的文字垂直居中解决方法

IE9不支持line-height原因&#xff1a;中文ie9不支持英文字体 相信大家在IE9看见自己使用line-height设置垂直居中文字不能垂直居中&#xff0c;这是与你设置字体有关&#xff0c;通常大家习惯设置font-family:Arial, Helvetica, sans-serif; ie9中line-height失效解决方法&…