2009-06-17 45 views
6

我倾向于很快完成我的工作相关任务,并且我有一些空闲时间在我的手中。我应该写些什么才能成为一名更好的开发人员?我熟悉C++/java/perl/python/ruby​​。为了成为更好的开发人员,我该写些什么?

我写了下面的东西我自己:

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

我想就某些软件提出一些建议,这些软件既具有挑战性又有趣。

+0

你的IDE做语法高亮吗?如果是这样,我会对你使用的源代码和/或工具感兴趣:p作为你的问题......是不是有你感兴趣的任何宠物项目?你认为世界会发现有用的东西,这对你来说是一个有趣的问题? – mpen 2009-06-17 13:31:39

+0

是的,它的确如此。我将在大约一个月后在我的博客上发布代码。 – Geo 2009-06-17 13:32:54

+0

马克,你应该看看JSyntaxPane。这是我用于语法突出显示的内容。 – Geo 2009-06-17 17:51:09

回答

11

一个编译器。

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

3

分布式环境中的东西。

4

怎么样一个代码生成器,这也将是对你有用,你完成

+0

和使用我们! ;) – 2009-06-17 13:37:24

+0

它会产生什么? – Geo 2009-06-17 13:37:52

+0

@Geo,你需要确定你的工作的共同方面。许多系统都有一个基本的通用结构框架,可以在实现新功能时根据需要生成。 – 2009-06-17 13:43:43

3

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

重要的是你解决真正的问题。

这就是编程的全部内容。

6

依赖于你目前不具备的知识的东西,这意味着你将不得不在创建它的过程中对自己进行教育。

1

我同意编译器的想法。那将是一个充满挑战和乐趣的项目。选择一个足够简单的语言。甚至设计自己的:)

8

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

2

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

编写一个AI游戏,比如跳棋,我认为这很有挑战性和乐趣。

2

编写一个二叉搜索树并实现插入,删除,搜索等。完成后写一个splay树。如果这不符合你的喜好,请从Introduction to Algorithms中选择一些,然后写出来。

3

一场比赛,可能是一个简单的比如Pacman或SpaceInvaders。这不仅有趣,但你也将进入一个全新的境界。

1

G'day,

什么开始写一些片段在其他软件中重复使用?这样,你可以:

  • 不必重新发明您需要的车轮每次

    • 优化的特定部件的功能由飘飞revisting他们,有这个功能集成到您的主件的软件,
    • 开始传播它们并为自己创造一个名称。

    关闭我的头顶,我的一些正在考虑的事情是一样的东西:

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

    所有这些,如果你有他们已经写了,会让你的其他项目的周转时间更快地使用它们。这个功能在多个项目中也是一致的。

    HTH

    欢呼声,

  • 1

    你可以去实现自己的版本控制系统...
    这将需要大量的编码,涵盖像算法,协议,操作系统等各个方面..
    但它始终是更好地促进开源项目比压缩编码已建成的东西
    你也可以尝试开发使用AI做一些有趣的事情:)

    专家系统
    1

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

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

    在这两种情况下,我走了C.

    1

    的更深入的了解,您似乎没有做过太多的图形。如前所述,游戏如此简单,2D简单的物理/射击(例如小行星游戏)相当容易,可以从测试开始并获得乐趣。

    甚至更​​好,可能更有用的图像编辑器如何?

    2

    一本书。教程。任何教导。教学是学习的好方法。

    试图向人们解释新概念通常会迫使你进入比平时更深的状态。试图将你的知识变成一系列有凝聚力的句子的行为加强了你的想法,并揭示了你可能有的任何弱点或差距。

    你可以随时从你的学生或读者那里学到一些东西。

    4

    拿起任何需要组件,增强或bug修复帮助的开源应用程序。你的技能可以在开源世界中发挥作用。除此之外,我建议你使用你的技能开发这些:

    1. IDE游戏开发(因为你已经很熟悉IDE的研究与开发)
    2. 改进现有的库
    3. 开发模拟器/虚拟机软件
    4. 开发文件夹和驱动器保护软件(或更好的加密相关软件)
    2

    你已经得到了很多你的问题很大的反应,但我觉得有一个sugges错过了:了解AS3/Flex!

    我的背景与您的背景非常相似,但最近我学到了AS3的一个项目,并且迄今为止都很喜欢它。它与您曾经工作过的其他语言(例如Java)具有相同的“感觉”,但它允许强大的视觉/听觉应用程序,而不会产生烦人的框架。 AS3/Flex都经过了几次微调迭代,很好地适应了相当快的发展。

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

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

    1

    写更多的代码并不奇迹般地让你成为一个更好的开发者。一些建议,我有如下:

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

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

    3. 学会与用户交谈(实际上是敏捷技术的重要组成部分)。你的客户几乎总是错误的,他们需要什么。你如何跨越他们认为/想要的东西与他们真正需要你为他们建立的东西之间的鸿沟?通常两个方向都有通信问题:-)

    4. UI设计。这比将文本框填充并设置Tab键顺序要困难得多。这对于我们大多数人来说是一门难以掌握的学科,并且对胖客户,网络应用程序,小设备(手机,PDA等)都有分支机构。

    我相信其他人可以想到我忘记的东西,但我的观点是编写代码并不是我们作为开发人员所做的。很多时候,编写代码是我们所做的至少

    相关问题