by Andrew C. Oliver

9 app dev projects you should cancel in 2013

opinion
Dec 20, 20127 mins
Build AutomationJakarta EEJava

Rolling your own in software wastes both time and money

Many developers like to create software from scratch, even when thereโ€™s perfectly good reusable code from other projects, open source, or even commercial products available to do the job. The justification for rolling your own might be ego-driven, based on a notion that no one else will do it as well as you do. It might be a habit, perhaps derived from computer science school projects where students had to create their own compilers so that theyโ€™d understand what really happened to code at the machine level.

Whatever the reason, rolling your own code can be a waste of time and effort, as well as an opportunity for bugs to creep in โ€” after all, new code is more likely to have bugs than existing code thatโ€™s been reviewed and tested. There are nine types of software projects that really shouldnโ€™t be roll-your-own efforts. In order of increasing bad-idea-ness, they are as follows.

[ Ever the autodidact, Andrew Oliver wonders if a computer science degree is worth the paper itโ€™s printed on. | Download InfoWorldโ€™s PDF of tips and trends programmers need to know in our Developersโ€™ Survival Guide. | Keep up with the latest developer news with InfoWorldโ€™s Developer World newsletter. ]

9. Your own load test framework (for Web applications)

Outside of a few edge cases (especially for things that are not Web applications), load test tools exist. So why create new ones? For load testing, you have everything from โ€œoutsource to usโ€ websites like WebPerformanceInc.com and bloated, painful, but mature tools like LoadRunner. There are even open source tools like Selenium and Testmaker. You may need to create your own load test, but you really donโ€™t need to write your own load test tool for Web applications โ€” so donโ€™t.

8. Your own cache (especially distributed ones)

Before the NoSQL buzz, rolling your own cache was a great way to get your boss to fund your R&D so that you could launch your own startup and hopefully get acquired by an industry Goliath before retiring โ€” either โ€œin placeโ€ or to Tahiti. However, if you start a new project today, you probably wonโ€™t get the startup cash. VCs donโ€™t like to fund last yearโ€™s trends.

Thatโ€™s OK โ€” you donโ€™t need to create your own cache. Sure, it isnโ€™t technically difficult to write your own, but it is oh so easy to make one that kills the database when starting up under load, leaks memory, or causes threading problems. At most you might need to write your own custom cache loader or cache store for one of the existing cache tools, such as Gemfire, Terracotta, Infinispan, and Coherence. Best of all, some of them are open source, so you can fix them if you must.

7. Your own inventory system

The same concept guides inventory management and your public libraryโ€™s operations, minus the part where it dreads e-books. You may need to customize them a bit, but several general inventory management systems are already on the market, such as the open source OneCMDB, IBMโ€™s Taddam, and Hewlett-Packardโ€™s UCMDB, to name a few.

6. Your own workflow engine

Yes, people still write their own workflow engines. After all, they learned about state machines in school. But since graduation, they havenโ€™t bothered to look up the open source Activiti, JBPM, or any of the countless others. Things happen, states happen, you store those, you continue from that point with that state. The problem is solved. We donโ€™t need 100 more of these.

5. Your own e-commerce suite

I left the โ€œeโ€ in โ€œe-commerceโ€ to show how โ€™90s it is. Remember when putting โ€œeโ€ in front of everything made it cool? (At least CNN thought so.) Now theyโ€™re simply called commerce suites, and there are scores of them: the open source Broadleaf, Magento, Spree, and Zencart; SaaS offerings such as Shopify; and horribly overpriced proprietary monsters like ATG, WebSphere, and WebLogic. If you donโ€™t have a traditional stuff-in-a-box business, you may need to customize one of these tools. No matter what you sell online, you will inevitably need to skin the commerce suite and possibly integrate it with your payment processor. But you almost certainly donโ€™t need to write one from scratch.

4. Your own reporting engine

Iโ€™ve guilty of rolling my own reporting engine, but in my defense there wasnโ€™t anything available at the time. Iโ€™d done reporting stuff in Java at several companies because they couldnโ€™t get one of the existing ones to do exactly what they wanted. In the end, they dumped to Excel to fudge the numbers and appear to be Sarbox-compliant. So I founded the Apache POI Project (a port of Microsoftโ€™s file formats to Java), but joined JBoss before I could write even one line of code on my larger plan for an open source answer to Actuate and Crystal Reports. Meanwhile, JasperReports, BIRT, Pentaho, and others emerged to fill the gap. You should start with one of those.

3. Your own message bus

Last decade, this was the hot thing to write and rewrite. The slow and dusty MQ Series WebSphereMQ was no longer good enough, so we saw entire startups around messaging. JBoss, BEA, and other Java EE vendors each wrote one, then replaced it with another implementation.

You do need to write stuff to queues and have things pick them up. You sometimes need to write on a wall and let everything pick up the same message. Thatโ€™s why there are various options for availability and load balancing from HornetQ, RabbitMQ, ActiveMQ, and many, many more. There are heavy, full-featured options, as well as lightweight but powerful choices. You can most certainly have your needs met without the burden of creating and maintaining this beast yourself.

2. Your own single-sign-on (SSO) implementation

There might still be time to launch a startup here, but your boss should stop your backdoor pilot project and make you use Picketlink, ADFS, OpenAM, Ping Identity, or any of several others. You shouldnโ€™t be writing point-to-point SSO, either.

Donโ€™t get me wrong: There will be custom work and integration here, as sadly this is an area of poorly implemented standardization. Technology vendors all play lip service to interoperability, but in the end they are thinking of a happy world where you buy their โ€œplatformโ€ or โ€œsuiteโ€ of products and can never leave them or buy anything from anyone else. However, you can save a bundle by picking one overall provider and take a wheel-and-spoke integration approach versus having a hundred point-to-point integration projects or your own probably flawed SSO implementation.

1. Your custom content management system

The world has enough content management systems. They come in many different forms: Some are Drupal-like, some are Interwoven Teamsite-/Adobe CQ-like monsters, and some are SharePoint-like. Some even unite the three approaches (Alfresco, for example). They are all somewhat similar. To quote Tyler Durden: You are not special. Any CMS you implement will turn into one of these three types. Your company most likely does not have content so unique that it wonโ€™t fit into one of them. At most, you might need to customize or modernize an open source implementation. Making your own CMS is so โ€™90s!

Donโ€™t roll your own!

This article, โ€œ9 app dev projects you should cancel in 2013,โ€ was originally published at InfoWorld.com. Keep up on the latest developments in application development at InfoWorld.com. For the latest business technology news, follow InfoWorld.com on Twitter.