为了成为更好的开发者,我应该写些什么?

时间:2009-06-17 13:26:06

标签: language-agnostic

我倾向于很快完成与工作相关的任务,我可以腾出一些空闲时间。为了成为更好的开发者,我应该写些什么?我熟悉c ++ / java / perl / python / ruby​​。

我自己写了以下内容:

  • 简单的网络服务器
  • 简单的网络客户端(不同的语言)
  • 内部和外部的DSL
  • 一些词法分析员
  • 代码压缩器(源美化器)
  • 简单IDE

我想对一些既有挑战又有趣的软件提出一些建议。

19 个答案:

答案 0 :(得分:11)

编译器。

编辑:或模拟器。两者都非常具有挑战性。

答案 1 :(得分:9)

参与开源项目

修改:启动here

答案 2 :(得分:8)

涉及实际用户的东西。听起来很有趣,在我看来,这是一个完全不同的故事,如果其他人正在使用你的作品并依赖它!

答案 3 :(得分:6)

依赖于您目前不具备的知识的东西,这意味着您必须在创建它的过程中教育自己。

答案 4 :(得分:4)

代码生成器怎么样,完成后也会对你有用

答案 5 :(得分:4)

选择需要有关组件,增强功能或修复错误的任何开源应用程序。您的技能可以在开源世界中发挥作用。除此之外,我建议你使用你的技能来开发这些:

  1. 用于游戏开发的IDE(因为您已熟悉IDE开发)
  2. 改进现有图书馆
  3. 开发模拟器/虚拟机软件
  4. 开发文件夹和驱动器保护软件(或更好的加密相关软件)

答案 6 :(得分:3)

分布式环境中的某些东西。

答案 7 :(得分:3)

我会找出一个真正的问题并为它创建一个解决方案。 它可以是算法或完整项目:Web项目或客户端应用程序。

重要的是你解决了实际问题。

这就是编程的全部内容。

答案 8 :(得分:3)

游戏,可能是像Pacman或SpaceInvaders这样简单的游戏。这不仅有趣,而且你也将进入一个全新的领域。

答案 9 :(得分:2)

编写二进制搜索树并实现插入,删除,搜索等。完成后,编写一个splay树。如果那不符合您的喜好,请从Introduction to Algorithms中选择一些内容,然后再写下来。

答案 10 :(得分:2)

你已经对你的问题做了很多很好的回答,但我觉得有一个错过的建议:学习AS3 / Flex!

我的背景与你的背景非常相似,但我最近为一个项目学习了AS3,并且到目前为止已经喜欢它了。它与你曾经使用的其他语言(例如Java)具有相同的“感觉”,但它允许强大的视觉/听觉应用程序,而不会出现烦人的框架。 AS3 / Flex已经经历了几次微调,并且非常适合快速发展。

学习AS3 / Flex的另一个原因是,您似乎对独立运行或作为网络环境中的服务器的技术感兴趣。尝试使用AS3 / Flex可能会让您有机会使用客户端/服务器组合的客户端。

无论如何,玩得开心! :)

答案 11 :(得分:2)

一本书。一个教程。任何教导的东西。教学是一种很好的学习方式。

试图向人们解释新概念通常会迫使你进入比平常更深入的深度。试图将你的知识变成一组有凝聚力的句子的行为在你自己的思想中强化了它,并揭示了你可能存在的任何弱点或差距。

您可以随时向学生或读者学习。

答案 12 :(得分:2)

参与一个开源项目,帮助您了解一些软件开发实践,例如使用版本控制系统和错误跟踪系统。

写一个人工智能游戏,比如跳棋,我觉得这很有挑战性和乐趣。

答案 13 :(得分:1)

你可以去实现自己的版本控制系统...
它需要大量编码并涵盖不同的方面,如算法,协议,操作系统等 但是,对开源项目做出贡献总是比编写已经构建的东西更好
你也可以尝试开发一个使用AI来做一些有趣事情的专家系统:)

答案 14 :(得分:1)

我发现在一个完全不同的环境中重写之前的项目是了解新旧环境的好方法。

回到学校我用C写了一个百家乐游戏(我们不得不选择纸牌游戏,我想选择一个我从未玩过的游戏)。第二年,我在计划中重写了它。然后在第二年小谈。

在这两种情况下,我都不再理解C.

答案 15 :(得分:1)

您似乎没有做太多图片。如已经建议的游戏如何,像小行星游戏这样的2D简单物理/射击相当容易入手并且有趣的测试。

图像编辑器的效果更好,可能更有用吗?

答案 16 :(得分:1)

天儿真好,

开始编写一些片段以便在其他软件中重用?这样你就可以:

  • 通过不时地撤销它们来优化特定的功能,
  • 每当您需要将此功能合并到主要软件中时,无需重新发明轮子,
  • 开始传播它们并为自己起一点名字。

在我的头脑中,我正在考虑的一些事情是:

  • 登录
  • 从文件中读取配置
  • 建立一个共同的环境

所有这些,如果你已经写好了,那么你可以在你使用它们的其他项目上更快地完成周转时间。该功能在多个项目中也是一致的。

HTH

欢呼声,

答案 17 :(得分:1)

我同意编译器的想法。这将是一个充满挑战和有趣的项目。选择一种非常容易的语言。也许甚至设计自己的:)

答案 18 :(得分:1)

编写更多代码并不会让您成为更好的开发人员。我的一些建议是:

  1. 学习编写更好的代码。您对设计模式,重构,单元/自动化测试和持续集成有何了解?

  2. 了解软件工程。你知道Scrum,Lean,XP和其他敏捷实践吗?用例和用户故事,项目估算和管理怎么样?管理(和选择)团队也是一项完整的其他技能。你希望那成为你未来的一部分吗?

  3. 学会与用户交流(实际上是敏捷技术的重要部分)。您的客户几乎总是错误地认为他们需要什么。你如何跨越他们想要/想要他们想要的东西,以及他们实际需要你为他们建造什么?通常在两个方向都存在通信问题: - )

  4. UI设计。这比衬里文本框和设置Tab键顺序要困难得多。对于我们大多数人来说,这是一个难以掌握的学科,并且为胖客户端,网络应用程序,小型设备(电话,PDA等)提供分支机构等。

  5. 我确信其他人可以想到我已经忘记的事情,但我的观点是编写代码并不是我们作为开发人员所做的全部。很多时候,编写代码是我们所做的最少

相关问题