这是对这篇博文的回应:https: //prog21.dadgum.com/80.html
2010 年,正在康复的程序员James Hague 给了新程序员一些建议。
他说,如果你是这样写的人:
嘿大家!刚学了Erlang/Haskell/Python,现在想找个大项目用它来写。如果你有想法,请告诉我!
……那么,你做错了。他接着说:
与解决问题或整体有用性或应用程序与原始发布者的利益之间的任何相关联系无关。您会相信由非音乐家开发的乐谱程序吗?由从未专业使用过 Photoshop 的人编写的 Photoshop 克隆?
他所说的是,为了学习工具而学习工具是不值得的。他建议漫无目的、兴奋的程序员:先找到问题,然后想办法使用工具来解决它。这样你就成为了[一个小的、严格定义的领域]的专家。
我不喜欢这个给漫无目的、兴奋的程序员的建议。如果编程只是一种工具就好了。但事实并非如此。这也是一门手艺,练习手艺本身就很有意义。
我的建议是:
你选择了一条非常有趣的道路!只有一件事:不要期望很快就能找到任何项目来编写您所学的语言。编写自己的项目。让他们毫无意义。编写一个 FTP 服务器,编写一个 BitTorrent 客户端,编写一个 PNG 解析器/库,构建一个俄罗斯方块游戏,一个国际象棋引擎,以及一个太空入侵者克隆。
所有这些可能都毫无意义,因为已经有大量这些程序的高质量开源实现。它们也可能毫无用处;也许他们只有一个用户,你。
但这并不重要——只要您在编写代码——这就是其中有趣的部分。不仅如此,当您享受所有这些乐趣时,您实际上正在学习大量关于用您选择的语言构建软件的知识。在编码时,您还可以检查您正在制作的其他现有的开源克隆。通过这种方式,您可以看到不同的问题如何映射到不同的设计。通过这个,您也可以学习如何阅读代码。每当您看到另一个开源国际象棋引擎时,您就会学会寻找特定的组件和设计选择。例如:这个程序员是如何解决问题 X 和问题 Y 的?
所有这些在研究、设计界面、编写代码、阅读代码、理解权衡、接触许多不同领域的技能练习,主要是很有趣,但在不经意间,也会非常有用。只是不是马上。就我个人而言,我坚持不关心有用性,但如果你这样做,我认为首先毫无意义地编码是要走的路。
“我真正关心的是接触到一个人。据我所知,那个人可能就是我自己。”
— 豪尔赫·路易斯·博尔赫斯
原文: https://nutcroft.mataroa.blog/blog/responding-to-advice-to-aimless-excited-programmers/