4 ms·
Ah this is a very difficult, multi-variable question. I think this question should be given with a lot more context. Of importance, out of the top of my head,
by franciscop 7y ago
Ah this is a very difficult, multi-variable question. I think this question should be given with a lot more context. Of importance, out of the top of my head, are:
- Do you need the get results now, or long-term maintenance is more important?
- Are you going to roll your own internal tool or publish it as open source?
- How responsive are the developers of the original library? Did you attempt to ask them for help/consulting/etc?
- Can you wrap the library so that you get 80-90% of the work out of the way? Can you fork it so that you get 50-70% of the work already done? As everyone mentions here, licensing is important for this question.
- Do you have people who have created and maintained libraries before? Do you know what it takes to publish your own library?
For example, I've written hundreds of small libraries and projects in Javascript, so I know the tools, common issues and details of creating a new library. So for me, creating a new one is fairly easy. For someone who has written the same amount of code in their career, but mainly focused on a single codebase, the cost (both short and long-term) of creating a new library is a lot higher.
- sova 7y agoIsn't it always better to open-source something that you need a solution to? (as someone else will likely need it, too)
- TAForObvReasons 7y agoIf it's something that others will likely need and will likely pay for, it may make more sense to build it and sell to them. By open sourcing, you eliminate one major potential revenue stream for unknown benefit.
- kd5bjo 7y agoThat someone may be a direct competitor to you. Giving them access to your R&D may let them undercut your prices and make it harder for you to find clients.
- chii 7y agothe most important aspect: is the functionality provided by the library core to your business need, or just an incidental need? E.g., you need a web-framework to program your e-commerce site, The web-framework is not a core business need (you are just selling shit online), but incidental. Therefore, don't roll your own. You need a web-framework to implement a SaaS app, and this SaaS app is your main business (think Canva, or lucid charts etc). Therefore, you should roll your own to suite your SaaS app, and make it fit intimately with your business needs.
- franciscop 7y agoOP doesn't mention a company at all. If they are doing a fun side project at uni, or a research project, it might that business needs are not be the most important aspect!
- chii 7y ago> If they are doing a fun side project in that case, their business need is to have fun! And i would say writing it all from scratch is most fun of all.
- kd5bjo 7y agoI heartily agree with all the concerns here, but there are also business and professional development factors to consider, in addition to your present situation: - How stable are your needs? Will your ideal setup be the same 6 months from now? - Is this a core piece of the business or a peripheral concern? - Which is more valuable: developers that understand the underlying theory, or developers that are familiar with the preexisting library? - Will the act of rolling your own library make your team more valuable? Will it make them too expensive? - How will this choice affect developer retention? Your ability to hire new developers?
- franciscop 7y agoOh yeah, I just realized I missed a whole category: personal development. I would definitely not be here (probably not in software at all) if I hadn't reinvented the wheel again and again for fun and learning.
- ptx 7y ago> Will the act of rolling your own library make your team more valuable? Will it make them too expensive? Are you saying that developers should be kept ignorant and incompetent so that they'll have no choice but to stay at your company writing poor-quality software?
- kd5bjo 7y agoI’m saying that pushing your developers to improve will increase their market value, possibly outside your personnel budget. One possible outcome here is that they decide to leave and join a company that will give them a higher salary to reflect their increased skills. On the other hand, withholding opportunities for growth is also a way to frustrate employees and cause them to leave. Know your people, and take their changing needs into consideration when planning business strategy. There’s lots of strategies that can work here, but not all of them are right for every company. A few off the top of my head: - Build a training pipeline so you can regularly hire promising young developers for cheap and help them grow into a more senior position elsewhere. - As your developers improve, be prepared to give raises and promotions to reflect their increasing value. - Hire experienced developers with the skills you need at a fair price and offer stable employment instead of fast-track growth.