软件开发是现时很火的职业。据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%。很多人年轻人会选择编程作为自己职业生涯的起点。如何学好编程?如何成为优秀的程序员?如何规划好程序员这个职业?是许多年轻人关注的问题。在Infoworld最近做的一次调查中,邀请到了JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Spring Framework创建者Rod Johnson,Npm 创建者Isac Schlueter, 以及发明了Python的Guido Van Rossum接受了采访。这些编程界的大牛们分别就“教育背景”、“编程语言”和“编程实践”这三个方面,对年轻程序员的职业规划提出了建议。让我们一起来分享这些大牛的见解吧。

教育背景

在人生中最大的挑战不是技术可以解决的。”Eich说,“所以我们要学习历史、语言、艺术、还有其它人类的知识,而不是只学习与电脑有关的东西。”

Hickey赞同了Eich的观点。他认为,要把编程放在一个更宽的视野中。“在具有历史性的事物中,编程是一个全新的成果。我们不要以为已经懂得了怎样用最好的方法去追求它。”Hickey建议年轻人应该追求其它的学习兴趣去帮助理解在编程中的各种问题。“最好的程序员是那些在他们所擅长的领域里,有理解能力的,善于沟通的,以及能够解决问题的人。软件只是一个工具而已。”

Johnson认为,要成为程序员的话,应该要探索计算机科学和数学以外的学科。这样可以帮助程序员拓宽他们的教育背景,因为最终“编程是关于人的,而不是关于数学的。”即使是当谈及把计算机科学作为一种学历时,Johnson也有着不同观点。他说:“绝大多数时候,我们学习是为了工作。 良好的计算机科学背景的确是有价值的,但我已见到过有许多优秀的程序员,他们拥有不同的教育背景。”

Schlueter 认为,这是作为一名出色程序员的重要一面。“无论你是否上大学,都要尽量花时间,而且要尽早阅读大量的文学和哲学,并尽可能写作,”他说。如果你不打算上大学,那么尽快找一个导师,让他给你布置写作任务和帮你的文章润色。这项工作发生在互联网上,书面语是人们在互联网上交流时使用的。你能写得越有效,你就越会越好。”

编程语言

一旦你坐下来开始学编程了,哪种语言是首先应该考虑的呢?

“OCaml,Haskell,Rust,C++,TypeScript,JS,Racket 或者Scheme,”Eich说。当然,我不是要求每个人都去学习所有这些语言,但只要在合适的时间和地点学好其中几种就很好了,这对那些有兴趣和能力的大学生尤其有用。”

Hickey也建议要有学习多种语言的计划,但他的观点更具哲学性,他提出要把现有的广泛的编程语言中具有代表性的,整合在一起。“选择一种很有代表性的语言,计算机是如何工作的(C),一种封闭式的语言(Haskell,Prolog),一种静态的函数语言(Haskell),和一个动态的函数语言。我喜欢Clojure,”他说。

Johnson提议学习编程语言要用对比的方法。“语言可以影响编程的思维,所以学习一门以上的语言是很重要的,而且学习不同的语言要有不同的方法,”他说。“例如,一个面向对象的语言和一个函数语言,而不是说JavaC#。”

编程实践

一旦你已经开发过了一些项目,你如何把自己的技能提升到更高水平呢?

Eich建议要向早期的或现在的编程大牛们学习如何写出很棒的代码。“阅读高质量的代码,有时候甚至要把它们打印出来,在有需要的地方做好笔记。”Eich说。“说到高质量的代码,我觉得经典的仍然是Kernighan & Ritchie's The C Programming Language, 还有 The Unix Programming Environment”。近年来值得一读的代码是'Solving Every Sudoku Puzzle,或者是 norvig.com的代码。”

要了解更多这些编程大牛们的观点和建议,可以浏览全文:http://wp.me/p6WSQY-1G5

JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议的更多相关文章

  1. JavaScript之父谈JavaScript

    本文翻译自popularity,为了更好的阅读我把部分内容进行了增删改,如果你英语比较好,建议直接阅读原文,因为这篇文章是我通过google翻译再进行修改的. 貌似(根据一位精神导师的说法)JavaS ...

  2. JavaScript通过父节点ID递归生成JSON树

    JavaScript通过父节点ID递归生成JSON树: · 实现思路:通过递归实现(第一次递归的时候查询出所有的父节点,然后通过当前父节点id不断地去查询所有子节点,直到递归完毕返回)   · 代码示 ...

  3. 一个老牌程序员推荐的JavaScript的书籍,看了真的不后悔!

    很多人问我怎么学前端?我的回答是:读书吧!相对于在网上学习,在项目中学习和跟着有经验的同事学习,书中有着相对完整的知识体系,每读一本好书都会带来一次全面的提高.而如果深一脚浅一脚的学习,写出代码的质量 ...

  4. C语言之父Dennis Ritchie告诉你:如何成为世界上最好的程序员?

    文/Ohans Emmanuel 译/网易云信 想要阅读更多技术干货文章,欢迎关注网易云信博客. 了解网易云信,来自网易核心架构的通信与视频云服务. 我不知道如何成为世界上最好的程序员.但是,我们可以 ...

  5. 新手程序员随笔2——初识html、css和javascript

    翻看博客,发现好久木有发blog了.纠其原因,一则是近来工作上卡到了一个编程难题,我是一个单线程的小猿,当我手头有事情做的时候,我不想分心去做其它事情,如写blog.二则是我个人的写作能力不佳,想到写 ...

  6. 【原文】前端程序员必须知道的高性能Javascript知识

    原文:前端程序员必须知道的高性能Javascript知识 想必大家都知道,JavaScrip是全栈开发语言,浏览器,手机,服务器端都可以看到JS的身影. 本文会分享一些高效的JavaScript的最佳 ...

  7. 每个程序员都需要学习 JavaScript 的7个理由

    最近在和招聘经理交流现在找一个好的程序员有多难的时候,我渐渐意识到了现在编程语言越来越倾重于JavaScript.Web开发人员尤其如此.所以,如果你是一个程序员,那么你应该去学习JavaScript ...

  8. C++程序员的javascript教程

    本文主要目的是向c++程序员阐述javascript的编程思想,以及编程中的误区.   变量声明: 1.变量声明的解析早于代码运行.JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变 ...

  9. 好程序员技术分享html5和JavaScript的区别

    好程序员技术分享html5和JavaScript的区别,HTML5广义上讲是前端开发学科的代名词,包含HTML5.CSS3及JavaScript三个重要的部分,是运行在浏览器上应用的统称.如PC端网站 ...

随机推荐

  1. HashMap与TreeMap源码分析

    1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Ja ...

  2. Hawk 4.7 单步调试

    单步调试的意义 已经编写的工作流,可能会因为某些外界环境的变化而出错,此时需要排除错误,我们可以使用单步调试. 单步调试的本质,相当于只使用前n个模块,这样就能看到每个步骤下,流的改变. 例子 还是上 ...

  3. [.NET] C# 知识回顾 - 事件入门

    C# 知识回顾 - 事件入门 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6057301.html 序 之前通过<C# 知识回顾 - 委托 de ...

  4. 以项目谈WebGIS中Web制图的设计和实现

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景介绍 一般WebGIS项目中,前端展示数据的流程基本是先做数据入 ...

  5. Android 微信第三方登录(个人笔记)

    今天在写微信登录,花了半天时间搞定.然后写下自己的笔记,希望帮助更多的人...欢迎各位指教. 微信授权登录,官方说的不是很清楚.所以导致有一部分的坑. 微信注册应用平台的应用签名,下载 微信签名生成工 ...

  6. Atitit.软件开发的三层结构isv金字塔模型

    Atitit.软件开发的三层结构isv金字塔模型 第一层,Implements 层,着重与功能的实现.. 第二次,spec层,理论层,设计规范,接口,等.流程.方法论 顶层,val层,价值观层,原则, ...

  7. WINDOWS系统下MYSQL安装过程中的注意事项

    1.首先MySQL的安装方式有两种:一种是MSI安装方式,很简单就像安装Windows软件一样.另外一种就是ZIP安装方式.这种相对而言比较麻烦.新手推荐MSI安装方式. 安装方式有以下两种: MSI ...

  8. Oracle补全日志(Supplemental logging)

    Oracle补全日志(Supplemental logging)特性因其作用的不同可分为以下几种:最小(Minimal),支持所有字段(all),支持主键(primary key),支持唯一键(uni ...

  9. Harmonic Number(调和级数+欧拉常数)

    题意:求f(n)=1/1+1/2+1/3+1/4-1/n   (1 ≤ n ≤ 108).,精确到10-8    (原题在文末) 知识点:      调和级数(即f(n))至今没有一个完全正确的公式, ...

  10. Openfire集群源码分析

    如果用户量增加后为了解决吞吐量问题,需要引入集群,在openfire中提供了集群的支持,另外也实现了两个集群插件:hazelcast和clustering.为了了解情况集群的工作原理,我就沿着open ...