2010-03-05 43 views
4

我是一个在我工作的地方的单人店,当我在那里开始工作时,我没有经验和一个低于标准的计算机科学学士学位。最重要的是,我在公司的第一个项目不仅要搞清楚好的设计原则,还要学习一门新的语言。不用说,我的代码在一开始就很糟糕,从那时起我添加的所有新功能都被黑客攻击了。对我来说,我的软件能够像以前一样运作,这真是太神奇了。编写额外的代码以避免学习新的框架

我任职期间我学到一吨,和我渴望我的重构代码,使其更具可读性所以未来的新员工可以深入并帮我一下吧。我也非常希望能够更轻松地添加新功能,而无需一起破解东西。我认为学习像Prism for WPF/Silverlight这样的框架是有用的,但是我有一个很大的待办事项列表(因为我是一个人的商店),而且看起来它需要相当长的时间只是为了学习如何使用它。

现在我已经阅读了关于棱镜的地方,我知道它背后的基本原理一点点。此外,编写我自己的代码并不难,它可以完成Prism所使用的一些相同的功能。我已经在一定程度上做到了这一点,并且我正在取得更好的模块化。

我的问题是:我应该去写更多的基础结构代码,让我正是我需要的,并没有更多的,或者我应该花时间去学习类似棱镜的时间?或者可能会这样问:我应该花时间写自己的简单定制解决方案吗,还是应该花时间去掌握一个可能比必要更复杂的丰富,庞大的框架?在作出决定时应考虑哪些因素?

回答

5

我写了我自己的PHP MVC框架,用于最近的项目,正是我所需要的。这很有趣,教会了我很多,并且总体上很好,我永远不会再做。虽然是一个很好的辅助分心项目,但它极大地降低了我在项目中的生产力。

真的,这很大程度上取决于您需要开发多少基础设施。如果它只是一点点,不会超过一个小时或两个小时,那就去做吧。如果需要花费大量时间,请使用其他人的工作,继续前进,并完成项目。

2

如果要保持你的写作将是一段时间了,并安装了该应用,特别是其他开发人员,那么任何时间花在学习和整合的标准框架将是值得的。

它会为应用程序是怎么写的任何熟悉框架开发者将能够更快地把它捡起来提供文件。它应该减少必须编写的代码量,并帮助您专注于具体的业务问题,而不是编写应用程序。

1

的核心问题是,有多少次,你将重新使用框架,每一次的再实施类似的东西工作,而不是为您节省?请记住,你从头开始编写的东西,如果它应该是任何好的东西,都必须经过测试,针对不同的环境(客户端& c)进行验证,并且保持不变 - 所有内容都将免费提供给您“通过使用一个良好的,积极维护的框架。

如果你打算仅仅使用该框架几次,也许净收益仍然赞成从头开始重写 - 但是如果框架覆盖了一个字段,而不仅仅是几个例子,学习使用该框架的投资回报(假设它是好的! - )和从头开始重做的东西将会是,极大的正面!

1

我大学毕业时也处于类似的情况。在我入住这家小公司的时候,我收到了一家大公司的报价约1.5年。我的教训是这样的(可能是你和其他人不同):

  1. 这是一个真棒想法,在一家小公司工作的权利失学。我这样说是因为你必须戴许多不同的帽子。例如,您可以编写代码,测试代码,部署代码,编写存储过程等。最终的结果是您熟悉从概念到任何其他过程的整个过程。我认为这种经历是至关重要的。
  2. 我喜欢写代码。我记得那些日子我会开车回家,想起我在生产支持问题上花费的时间。我花了更多的时间来支持客户,写一些“我不主要写代码”的东西。
  3. 为一家大公司工作对大学来说是一个糟糕的主意。当你在一家大公司工作时,他们对你有特定的角色,并且你有特定的界限。如果您是一家大公司的开发人员,则可能是您没有将应用程序部署到生产环境,或者调整存储的特效库。
  4. 为一家大公司工作对于一个小公司来说是一个好主意。那是因为如果你在小公司工作,它会迫使你不仅仅学习编码而且要学习更多。如果你明白你会成为一个更好的开发者。
  5. 与优秀的开发人员一起工作会让你变得更好。当你和一群好人一起工作时,你会变得更好。这是因为每个开发者都有一个特定的历史,他们为这个团队带来了,而且你们都相互学习。在我主要工作的团队中,有:MSBuild专家,Silverlight专家和F#专家以及其他好人。所以有些人从我那里学习MSBuild,我向他们学习。只要跟那些很好的人谈话就能让你变得更好。

所以如果我是你,不要在那里花太多时间。也许1年或2年后,找到一个有一些有才华的开发人员的工作。你将在5年内成为更好的开发者。我知道我是因为我的举动。

4

随着你给的背景 - 大多是受过自学和没有同行讨论你当前的发展 - 你应该绝对检查出其他库和工具。至少,获得新的输入是如何设计代码和解决问题的。你可能会觉得你已经取得了一些成就 - 而且你有,祝贺 - 但这是一个高原,而不是高峰。

“我没有时间去学习新的东西,因为我有太多的事情要做”
- 这就是我在你的理由更多的代码读取。 这是一个警告标志 - 您正在将自己转移到危险的位置。没时间学习?没时间记录?没时间想想所有的影响?没时间做对了吗?没时间培训新员工?没时间一天打电话给它?

你不会通过学习棱镜或任何其他库来解决这个问题,但这是错误的理由。

三,代码让你沉闷。有更多的代码维护会让你变得更慢。一个人创业公司可以每天和几周启动数百个,甚至数千个LOC。随着项目和组织的规模越来越大,最终平均只有几十个。

作为一个个人经验的建议:写建筑块,而不是框架。当你不得不一遍又一遍地用不同的公司标识制作同一个应用程序时,框架非常棒。或者,正如TDWTF的Alex所说,the key is in the differences不是相似之处。


我不希望你停止写代码,远离它。但是你正在讨论一个权衡问题,并且根据你提供的信息,我会建议把重点放在学习新事物上。

+0

“没时间做对了吗?” - 哎哟。谢谢。 +1 – Phil 2010-03-05 05:29:40

+0

想象一下在地平线上冒出的大恶魔......;)---代码从来不是完美的,但有一些代码足够好,很多代码没有。 – peterchen 2010-03-05 08:08:31

1

我会玩逆势:YAGNI(你不需要它)。

如果什么框架

  • 设计很糟糕?
  • 是越野车吗?
  • 太慢了吗?
  • 两年内会有所不同,旧版本将不被支持?

关于框架的讨论通常假设框架很好,现实情况是框架与其他任何东西都有所不同,许多框架都被你永远不需要的东西所覆盖。

这里的一些建议,希望对你更具体的问题熊:

  • 继续使增量改进。这听起来像你正在使用这种方法很有成效,而且它为你付出了代价。

  • 了解更多关于框架的。或者多个框架。也许你可以在1到4天内尝试一个小型试点项目。

  • 学习框架不是为了使用框架,而是为了挑选出最好的想法并将它们应用到自己的设计中,这是一种光荣的战略。

  • 如果您决定暂时不采用框架,这是一个很容易的决定,可以稍后再访问。如果你决定采用框架,以后退出可能会非常昂贵。提前支付一些额外费用可能是值得的,以减少制造非常昂贵的错误的可能性。

我想我被烧的最多的是依靠别人的代码库,从我下面改变出来。我称之为“我写过的每一个Perl脚本在一年后都被打破了”的问题。但是我在许多不同的小项目上工作,这些小项目往往会受到突如其来的影响,并且与创建时间相比,它们的寿命很长。如果您有多年的日常工作,那么您可以更轻松地适应外部框架的变化。

0

谁拥有该工具?

这就是我每次需要解决每一个问题时都要问的问题。这是评估开发该工具所需努力的主要因素。

当启动一个大项目时,每个人都定义众所周知的(在项目范围内)有用的语句;思考放大抽象层取决于频率的问题,重要性的问题解决方案,努力开发解决方案。