福布斯告诉你为什么程序员这么多仍然不够

这个问题是从Quora上提出来的。

下面是Brian Feldman(有远见的企业家,Quora上的创新顾问和机器人技术专家)的回答:

成为一个优秀的程序员是非常困难的,这过程不会很快。

我们不能期望种植一些树木,并要求它们在一夜之间就长成有两千个年轮的红杉,而不顾它们本身的需求。

个人特质

基本上一个人要想学习编程就不得不学会自学。在对必要的知识进行数年的练习才能超越基础水平,这时候你就能够写点能用的小型程序了。从来没人能靠上课和读书成为伟大的程序员,因为还需要很大量的练习。与流行的看法相反,计算机科学是不教编程的,这门课教的都是理论知识。

作为一个程序员,你需要有近乎无限的执着来持续努力解决问题,修复和开发一些东西。一个特别的人需要有更多的执着,特别是当它看起来好像一直没取得任何进展的时候。这更看重的是个人特质,没有这种执着会把大部分人挡在这个行业之外。

你需要特别擅长数学和解决问题。编程就是要去解决大量的问题。

你需要有很优秀的短期(和长期)记忆,这样才能在脑袋里同时处理多个事情,并且能记得一个月前写过的东西。你需要对事物之间的关联非常了解,并且知道怎么去设计一个好的架构。如果我在这里更改了这一点,可能会破坏到其他哪些地方呢?你需要对细节有令人难以置信的关注。关闭后不会在程序里删去它。在某处忘写了一个分号?程序就不会进行编译。拼错了一个函数名?你的程序可能会做些与你预期完全不同的事。没有这些个人特质足以淘汰大部分人。

主旨

你需要对数据结构和类有深入的了解,并知道何时及如何使用它们。

你需要对已有的库有一定的了解,这样就不用白费力气做重复工作了。

你需要熟悉大量的基础(和高级)的算法,这样你就不必白费力气做重复工作了。

通常你需要知道你所用硬件的限制,这样你就能做些正确管理内存和避免内存溢出,或者正确使用你的内存来减少处理器中浪费的数据转移并加速处理器的事情了。

这样,你就能开始编程了。太棒了!但你懂数据包格式、TCP/IP协议、HTML、CSS、用户交互设计和数据库的任意事情么?编程不是独立运作的。有大量需要你明白的东西,并且它们还一直在变化!如果编程不是你的主要关注点,你是不会真正擅长这个的。你可不能只在周末的时候来点编程,这样是不会有什么收获的。

工作/生活环境

你需要有大段大段不被打扰的时间,这样在你编程(学习编程)的时候才不会分散精力。许多工作(家里)环境很难达到这样。手机响了?好吧,这就需要你接完电话后还得15分钟的时间才能重拾你的思路。你需要经常做些关于动态权衡的决定。当然了,你可以写一个能处理单个事件的程序,但一个人把“零”当做输入会经常发生么?另外,我们是落后于计划的,更重要的是上手一些事情,让它们现在就正常运转起来。

在这一切之上,你所认为的次重要的编程语言只是一时流行而已,5年后就没人会用它了。现在你转到下一门很酷的语言,有可能从现在起的5年后就没人用了。你不得不时时未雨绸缪。

最重要的是有管理方面的问题

程序员经常会被当作工厂工人一样对待。没有编程天赋(和没什么生意头脑)的人通常是项目负责人。他们认为程序员就是机器里的齿轮。事实是,程序员是艺术家,并且想要项目获得一个好的结果的话,聪明的做法就是去问熟练掌握编程的人事情应该怎么做!几乎每一个项目都是以超预算和落后进度结束的,负责人会逼程序员去做些没报酬且不讨好的加班,然后发布一款设计拙劣和测试不佳的产品。伟大的程序员意识到他们没有差劲的程序员回报更多,因为管理层根本分辨不出来,而最重要的是,他们会为补偿能力不够的程序员而做些额外的工作。那些无保留地说出自己想法和尝试去把事情做的更好的伟大程序员通常是让管理者比较害怕的,因此管理者经常想辞退他们。很容易明白为什么好人会对一个行业产生厌倦,因为还有很多其他的机会。即使是普通的程序员,只要他们能正常与人们交流,就有足够的能力能在许多其他行业获得成功。编程是一个很容易转出而不容易转进的行业。

优秀的程序员很少可能去随机找工作

招程序员很简单,难的是招到优秀的程序员。差劲的程序员可能永远都在找工作。优秀的程序员如果让公司意识到他们的优秀,应该会不惜一切代价留住他们,所以他们可能不会很频繁的找工作,但他们找工作时会对他们工作的地方很挑剔,这也许就能解释很多公司都声称“根本没有优秀的程序员,我们能找到的都是些差劲的程序员”的原因了。就像在其他地方所说过的,优秀程序员的价值能顶上好几个普通程序员,差劲程序员甚至还会有负面影响。差劲的和普通的程序员想要变为优秀的程序员真的很难(如果不是不可能的话),应该专注在快速开发和推出产品的初创公司在是不值得在这方面投资的。

未经允许不得转载:SuperMan's blog » 福布斯告诉你为什么程序员这么多仍然不够

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址