我是否更愿意购买商业框架或创建我自己的相同功能版本? (经典“创造与购买”)

时间:2022-11-02 20:57:31

I have mixed views about commercial class libraries. Am I better off using a commercial class library or starting from scratch? If buying a library is the way forward which one for a C# developer?

我对商业类库有不同的看法。我最好使用商业类库还是从头开始?如果购买图书馆是C#开发人员的前进方向?

4 个解决方案

#1


8  

Put a value on your time, say $30 an hour. Estimate how long it would take you to write the library, then add two times that for debugging and testing. Subtract the time it's going to take you to learn how to use the commercial library with the given documentation. Multiply by your hourly rate. Compare.

把价值放在你的时间上,比如每小时30美元。估计编写库需要多长时间,然后再添加两次用于调试和测试。减去学习如何使用给定文档的商业库的时间。按小时费率乘以。相比。

Writing a library can be fun and rewarding, but "not invented here" syndrome keeps a lot of companies from creating anything useful, as they're stuck reinventing the wheel for additional cost. Make sure it is extensible (if you don't get access to the source) and has what you need. Buy it.

写一个图书馆既有趣也有回报,但“这里没有发明”综合症让很多公司无法创造任何有用的东西,因为他们不得不重新发明*以获得额外的成本。确保它是可扩展的(如果您无法访问源)并且具有您所需的功能。买吧。

As a personal project, it's probably worth writing it from scratch at least once to see what you can learn, but on company dime you need to be productive and efficient.

作为一个个人项目,可能至少要从头开始写一次,看看你能学到什么,但在公司角度,你需要高效和高效。

Or write it from scratch and release it open source ;)

或者从头开始编写并发布它的开源;)

#2


6  

I really think you are missing out the most important strategy:

我真的认为你错过了最重要的策略:

  • Use open source and contribute changes back to the community.
  • 使用开源并将更改贡献回社区。

I have seen lots of commercial software integrations go bad, usually because of real-life demands that are not met by the commercial product, many of which you do not discover until you are deeply committed (oh, so you wanted search to NOT have an upper limit of 1000 responses? No, we can't do that...)

我看到很多商业软件集成都很糟糕,通常是因为商业产品无法满足现实生活中的需求,其中很多都是你发现之前你没有发现的(哦,所以你想搜索没有1000响应的上限?不,我们不能这样做...)

If these things happen to you with open source, you at least always have the option of forking.

如果使用开源这些事情发生在你身上,你至少总是可以选择分叉。

#3


2  

Always use a good quality library wherever possible - but only if you can have the source code. Experience tells me to not use anything that I can't have the source for.

始终尽可能使用高质量的库 - 但前提是您可以拥有源代码。经验告诉我不要使用任何我无法获得的资源。

Also - depending on what the library is, it is sometimes sensible to have a layer on top of it so you reduce dependencies, thus making any future replacement of a library easier.

另外 - 根据库的内容,有时候在它上面放置一个图层是合理的,这样可以减少依赖性,从而使将来更换库更容易。

#4


0  

That depends on your goals. If you want to experiment and learn about a certain framework feature it makes sense to try to implement it.

这取决于你的目标。如果您想尝试并了解某个框架功能,尝试实现它是有意义的。

However, if you're trying to make money (or fame or whatever) on your software, you should ask yourself how to best spend your time. How much value do you add to the application by implementing yet another Linked List? Probably not a lot, so use whatever good implementations available. On the other hand, you could add value to your application by implementing a very specific graph control (although there are plenty on the market). So look at it from a return on investment point of view.

但是,如果你想在你的软件上赚钱(或成名或其他什么),你应该问问自己如何最好地花时间。通过实现另一个链接列表,您为应用程序添加了多少价值?可能不是很多,所以使用任何可用的良好实现。另一方面,您可以通过实现非常特定的图形控件来增加应用程序的价值(尽管市场上有很多)。所以从投资回报的角度来看待它。

#1


8  

Put a value on your time, say $30 an hour. Estimate how long it would take you to write the library, then add two times that for debugging and testing. Subtract the time it's going to take you to learn how to use the commercial library with the given documentation. Multiply by your hourly rate. Compare.

把价值放在你的时间上,比如每小时30美元。估计编写库需要多长时间,然后再添加两次用于调试和测试。减去学习如何使用给定文档的商业库的时间。按小时费率乘以。相比。

Writing a library can be fun and rewarding, but "not invented here" syndrome keeps a lot of companies from creating anything useful, as they're stuck reinventing the wheel for additional cost. Make sure it is extensible (if you don't get access to the source) and has what you need. Buy it.

写一个图书馆既有趣也有回报,但“这里没有发明”综合症让很多公司无法创造任何有用的东西,因为他们不得不重新发明*以获得额外的成本。确保它是可扩展的(如果您无法访问源)并且具有您所需的功能。买吧。

As a personal project, it's probably worth writing it from scratch at least once to see what you can learn, but on company dime you need to be productive and efficient.

作为一个个人项目,可能至少要从头开始写一次,看看你能学到什么,但在公司角度,你需要高效和高效。

Or write it from scratch and release it open source ;)

或者从头开始编写并发布它的开源;)

#2


6  

I really think you are missing out the most important strategy:

我真的认为你错过了最重要的策略:

  • Use open source and contribute changes back to the community.
  • 使用开源并将更改贡献回社区。

I have seen lots of commercial software integrations go bad, usually because of real-life demands that are not met by the commercial product, many of which you do not discover until you are deeply committed (oh, so you wanted search to NOT have an upper limit of 1000 responses? No, we can't do that...)

我看到很多商业软件集成都很糟糕,通常是因为商业产品无法满足现实生活中的需求,其中很多都是你发现之前你没有发现的(哦,所以你想搜索没有1000响应的上限?不,我们不能这样做...)

If these things happen to you with open source, you at least always have the option of forking.

如果使用开源这些事情发生在你身上,你至少总是可以选择分叉。

#3


2  

Always use a good quality library wherever possible - but only if you can have the source code. Experience tells me to not use anything that I can't have the source for.

始终尽可能使用高质量的库 - 但前提是您可以拥有源代码。经验告诉我不要使用任何我无法获得的资源。

Also - depending on what the library is, it is sometimes sensible to have a layer on top of it so you reduce dependencies, thus making any future replacement of a library easier.

另外 - 根据库的内容,有时候在它上面放置一个图层是合理的,这样可以减少依赖性,从而使将来更换库更容易。

#4


0  

That depends on your goals. If you want to experiment and learn about a certain framework feature it makes sense to try to implement it.

这取决于你的目标。如果您想尝试并了解某个框架功能,尝试实现它是有意义的。

However, if you're trying to make money (or fame or whatever) on your software, you should ask yourself how to best spend your time. How much value do you add to the application by implementing yet another Linked List? Probably not a lot, so use whatever good implementations available. On the other hand, you could add value to your application by implementing a very specific graph control (although there are plenty on the market). So look at it from a return on investment point of view.

但是,如果你想在你的软件上赚钱(或成名或其他什么),你应该问问自己如何最好地花时间。通过实现另一个链接列表,您为应用程序添加了多少价值?可能不是很多,所以使用任何可用的良好实现。另一方面,您可以通过实现非常特定的图形控件来增加应用程序的价值(尽管市场上有很多)。所以从投资回报的角度来看待它。