给不知深浅的初出程序员们的建议

英文:Advice to Aimless, Excited Programmers
作者简介:I’m James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.

我偶然看到一些漫无目的、精力旺盛的程序员说出类似这样的话:

嘿,大家好!我刚刚学会了Erlang/Haskell/Python,我正在找一个大型项目用它们去写。如果你们知道,请告诉我!

或者

我喜欢Linux和开源软件,我想通过开发一个项目来向开源社区贡献我的力量。有没有一个很重要的软件,但只能在Windows上运行,而你希望有个Linux版本的?

这些找不着方向的问题总是让我困惑不已。他们把程序语言或操作系统或软件许可协议当成关键条件。他们的目的跟解决某个问题或跟创造价值或跟说话人对软件的兴趣没有一点关系。你能相信一个不爱音乐的人能开发出一个好的乐谱软件吗?对Photoshop没有专业了解的人能克隆出一套Photoshop软件吗?不过我不想在这里详细讨论这些负面的问题。

下面是我对那些发出这些问题的人的一些建议:

停止发问。想一想你所有的个人兴趣,去解决一个跟你这些兴趣相关的简单的问题。例如,我用电子琴来联系我的吉他技能,但我想给这电子声乐里加入一些人性的元素,像自动音效补偿,偶然的变奏,等等。怎样才能做到这些呢?我可以写一个简单的声乐处理程序——不需要图像界面——看看效果如何。我照了很多的照片,我需要一个照片分类标记工具,不需要像Adobe Lightroot那样全能。简单但够用,一个下午我就你解决此类问题。

两点:(1)要简单,(2)是你实际要用的东西。

一旦做出能够运行的东西,接下来的工作是要一步步的改进。不要试图做出一个可以对外发布的版本来给自己制造压力,你只要花时间多看看现有的程序,改进它。我是否能用HTML5来实现我的照片分类器的前端界面呢?

如果你坚持这样,用不了多少回,你就会成为一个专家、一个对于一个界限清晰、也许只是跟你的问题相关的小领域里的专家,但,仍然是个专家。成为专家有一个有趣的边际效应:有些之前看起来令人畏缩、好像不可能的改进工作或功能特性,当你尝试着开始去做后,你的程序很可能因此而突然显现出吸引力,受到广大用户的关注。

加载余下内容▼

相关文章:

;