Migrating Legacy Systems

With IBC fast approaching, you are probably already considering that you’ll return from the show with a list of new features and requests from your existing customers and prospects. We know that not every company has the resource pool to handle the volume of software changes necessary to secure the desired orders, and DSR is here to help. With nearly 20 years of experience in helping vendors build software, we truly understand how to listen, define and manage projects, and implement solutions that work in the media & entertainment industry.

Many companies are considering porting existing applications to the cloud in order to increase automation, enable innovation, and reduce operational costs. However, migrating legacy media services and applications poses a variety of technical issues including trouble with porting codecs and methods from a desktop environment to a more distributed, service-oriented environment. On some occasions, this can be more complex than moving from linear threading to multi-threading with worker thread separation from data sources, service identification, availability publication, and service management. Working with a company like DSR that has experience in building and porting applications to web services can substantially ease your burden.

Legacy Migration Process:

DSR acts as a partner, which sets us apart from other companies. We take the time to truly understand your existing application, and are then able to take what we learn to help you move forward. While moving forward is different for everyone, DSR has the technical expertise under its belt to address any challenges that may arise. DSR will be with you step-by-step through your unique migration.

We have extensive expertise in this industry, having worked with major clients like Sony, Quantum, and Netflix, as well as with companies like XenData, Brightcove, and many others.

Are you going to IBC this year? If so, take this opportunity to schedule a 10-15 minute consultation with one of our media and entertainment application specialists today!

Email: ecarson@dsr-corporation.com

 

 

 

European Utility Week, Amsterdam Recap

Last week (October 3-5) DSR took part in the European Utility Week in Amsterdam. European Utility week is the premier business, innovation and information event that connects utility community with network operators, vendors, consultants, and integrators covering the entire smart system value chain.

 

 

 

 

 

 

 

Together with Watt + Volt, the 3rd largest energy provider in Greece, DSR Corporation showcased its 4-times Gold Award for Utility Solutions (SmartWatt) at our shared booth. DSR is proud to be contributing to the success of SmartWatt by empowering the solution’s embedded software, mobiles apps and the hardware solution.

The event also showed a trend of utility companies moving towards analyzing smart metering data to enable them to provide advice and insights to their customers, enhancing the customer experience and delivering a more complete package of services for the modern day energy consumer. However, there still appears to be a large fragmentation of metering protocols and different standards in the European energy market. As the solution providers are continuing to work on unifying the market, the trends towards utility companies becoming more of lifestyle providers are evident.

Would you like to learn more about DSR Corporation, utility trends or Zigbee? Get in touch with us via e-mail: contact@dsr-corporation.com

#EUW17 #DSR Corporation #IoT #DSR ZigBee

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CES 2017 Impressions

Every year CES is the culmination of the latest and greatest in technology and invention. From TVs to cars, cellphones to virtual reality, industrial grade hardware to watches and players, everything is competing for consumer attention and it’s barely possible for a person to see everything displayed. CES 2016 was all about TVs, virtual reality and drones. 2017, while still following last year’s trend, moved towards the Smart Home, Smart Appliances, and Artificial Intelligence (AI). The entire IoT industry was there: starting from end-to-end solutions to wireless connectivity chips and platforms. This includes the well-positioned ZigBee Alliance booth, which included the products showcase powered by DSR with an impressive 105 products from 30+ companies for both Residential and Commercial markets.
CES2_1
This was the largest wireless ecosystem display in the entire show and is a true testament to ZigBee interoperability and presence on the market. The devices in the display were connected to DSR’s zHome IoT cloud and mobile apps, working through DSR’s low cost gateway. 
 
CES1_1
The discussion and questions at the ZigBee Alliance products demo were mainly around the gateway and ecosystem. The impressive wall also raised some questions if the products all truly  function together and they do. The impression from previous shows is that consumers as well as installers have experience with a mixed bag of installation and controls. Providing a single display demonstrated a cohesive and diverse ecosystem of interoperable products.
 
CES3_1
 
 
Some other interesting observations from the IoT/Smart Home space showed that Data and Security applications are as relevant as ever. Voice control, driven by the major push in AI is gaining major traction, with Alexa embedded in Echo leading over Google Home. The start-up area is always full of new and reinvented ideas, including speaker products, data analytics, energy consumption profiling, health sensors and apps, analytical mirrors, security and nursing products. Finally, a visible expansion in child caring and monitoring beyond the standard baby monitors and cameras are looking to address the growing needs and demands of the market and modern day parenthood. 
 
To conclude, CES 2017 was as big as ever and full of new, amazing, and improved. DSR was excited to be part of the experience and to also represent the products demo wall at the ZigBee Alliance booth, making it the largest display of products from different companies working together via a single protocol in one space. 
 
For more information about DSR products and services in IoT, please visit www.ioticity.solutions and www.dsr-zboss.com.

DSR`s ZBOSS ZigBee 3.0 stack is now part of ARM IOT offering

DSR is happy to announce that ARM has chosen DSR ZigBee 3.0 stack to support their new product, ARM® Cordio® radio IP. ARM® Cordio® radio IP belongs to the ARM family of 802.15.4 and Bluetooth 5 standards-based low-power wireless IP solutions. It provides a complete RF-to-Application solution for WPAN (Wireless Personal Area Networks) radios.

ARM reckons Cordio radio IP is the only fully integrated platform in the market and includes a transceiver, baseband, and link layer (LL) subsystem including firmware. Moreover, ARM claims devices using Cordio radios will last up to 60 percent longer between battery charges due to falling under the typical wireless circuits that run at 1.2 volts.

ZBOSS 3.0 – ZigBee 3.0 stack from DSR is now offered as the stack of choice for those willing to utilize ZigBee on top of the Cordio radio. Built with great attention to a fixed memory footprint, ZBOSS also provides optimized power consumption, making the end device last even longer.

More information about the ARM Cordio can be found here: https://www.arm.com/about/newsroom/arm-accelerates-secure-iot-from-chip-to-cloud.php.

For additional information about ZBOSS 3.0 ZigBee Stack, please visit: http://www.dsr-zboss.com/#!/.

DSR is an end-to-end IoT partner and is always ready to support your IoT solution. Feel free to contact us with any inquiries at contact@dsr-company.com.

Open Source Yeoman generator for AngularJS Is Released by DSR

DSR understands that open source community is what pushes the modern IT world forward. DSR is well known for ZBOSS, ZigBee® open source stack certified by the ZigBee® Alliance. Moreover, DSR continuously contributes bug fixes for issues found during development with various modern development platforms and technologies.

DSR understands the value of sharing tools, standards and best practices that we use internally. So recently DSR team released a Yeoman generator for AngularJS. It has some useful optional features, like JWT support, basic components, tools for responsive UI and some others, and, of course, good documentation. The source code is available here:

https://github.com/DSRCorporation/angular-generator/

This is only the beginning. Soon we’re going to release a Yeoman generator for Node.js, several advanced AngularJS UI components and many other fancy things. Stay in touch and sign up for our newsletter to get the latest updates from DSR or check out our blog.

To Mesh and Beyond

Not too long ago Bluetooth® SIG announced that Bluetooth® is going mesh, giving a rise to a new wave of interest to Mesh networking. Although the interest is growing rapidly, solutions available on the market keep using just the trusted star topology. But what are the real possibilities?

Mesh, Ad hoc and MANET

Most networks on the market are declared to be “mesh ad hoc,” so in most cases these terms are used together in turn blurring the difference between them. But there is a difference and it’s important to highlight it.

Mesh network is a kind of a network topology where all the possible connections between nodes are established. This leads to the main mesh network feature – self-healing, where broken routes can be restored using different access links between devices.

Ad hoc network is a decentralized wireless network that does not require any infrastructure to form and maintain. Nodes connection depends on its possibility. This network is self-configuring, which means that devices can join or form it on the fly.

In this way, mesh network is the most robust static type of ad hoc networks. But when both terms are used together, they typically mean ad hoc only. Mesh explains just the physical layer of wireless communication that is broadcasting from its nature where all devices that are close enough hear each other (i.e., connected) and form enough links for self-healing. To be completely accurate, it should be mentioned, that “ad hoc” means that the nodes are stationary. There is a term for mobile nodes – Mobile ad hoc networks (MANET’s). But today in PAN/LAN context (Wi-Fi, Bluetooth, ZigBee) nodes are assumed to be static due to their use cases, even if they can be moved sometimes from place to place.

Wi-Fi

Wi-Fi is an area that already has ad hoc solutions available through documents and open source. Official specification IEEE 802.11S is the less effective and innovative one. It introduces two new kinds of devices: Mesh portals and Mesh points. Mesh portals are ordinary Access points with wired connection to the Internet. Mesh points act as wireless routers between stations and portals. Everything that has “mesh” prefix is connected together where it is possible. The standard is completely the same as B.A.T.M.A.N. adv Wi-Fi mesh that is already included in the Linux core.

In parallel, open source community works on cjdns (Hyperboria) that is a real candidate for the DarkNet set of protocols. Cjdns is developed in the way to create a wireless mesh network that is totally disconnected from the Internet. Its core advantages are:

  • End-to-end encryption
  • Tunnels between segments over the Internet
  • Decentralized generation of IP addresses

The last one is a headache for all Wi-Fi ad hoc networks. Old DHCP conflicts with the essence of the ad hoc network and mobility.

Mesh networking using Wi-Fi sounds ready but not for small low-power devices. Thus, we better pay attention to Bluetooth® Low Energy (BLE) and ZigBee®.

Bluetooth®

The first thing that Mesh-network-sceptics say about Bluetooth® is that it was not designed for Mesh networking. However it is widely spread, so why not to try using it?

Existing solutions on BLE are nothing more than trying to sell things that we already have in ZigBee® under the “Mesh network” label. To build a “mesh” the customer should buy a BLE gateway that forwards packets to the cloud. All main-powered BLE devices act as routers and interconnected with each other, while battery powered devices talk to routers only. Nothing special.

But BLE wins in that it is already in devices that have the Internet connection through 3G, LTE, Wi-Fi, and even the cable. That means that in theory the customer can get more than one gateway connected by the Internet. Moreover, customer’s tablets and smartphones bring the mobility to such network.

The power of the Wi-Fi + BLE collaboration has already been explored by Apple: check out the Multipeer connectivity framework for iOS 7 and, for example, FireChat application that proudly announces “Internet is not needed to chat.”

ZigBee®

When talking about ZigBee® one thing should be kept in mind – it was initially designed to be ad hoc. The routing mechanism implemented in ZigBee® is called Ad hoc On-Demand Distance Vector (AODV). Although RFC is operating IP frames, there are no major differences. The algorithm is quite simple for CPU and gentle to ROM and is available even for a bulb or smart socket or any other main-powered device.

As it was mentioned earlier, ZigBee®-based systems on the market currently prefer to use star topology, even though it has everything to be a mesh network and should be used as such. When Wi-Fi or BLE implement mesh, it is not only a technological step forward, but a marketing reason. The truth is ZigBee® is already a step ahead in terms of technology, but maybe a step behind in terms of marketing.

One might mot like that ZigBee® network is not using IPv6. Well, neither does BLE, but it does not disturb it. Nevertheless, there is IEEE 802.15.4 + IPv6 + UDP solution called 6Lowpan and Thread or JupiterMesh built over it. Though they haven’t still made a splash on the market, probably nobody has positioned them as “mesh.”

As we can see, if the market wants mesh/ad hoc/MANET, there are all the pre-requisites for it. It is already around but the customer is not aware of it because either the market is too “shy” or that field has not yet been covered in depth. Anyway, the results will come soon and they will come from Wi-Fi, BLE, ZigBee or even a collaboration between them.

Why Scala Is an Awesome Programming Language

No one will argue that IT is one of the fastest developing areas of engineering. New tools, approaches and ideas complete or even supersede the existing ones. One of the quickest growing technology stacks is the Scala language stack.  In this blog we explore what makes this language awesome.

Language Design

Scala was designed to help write thread safe and laconic code. It overcomes some JVM limitations and provides features that could not be achieved in Java. Scala has a clean, expressive, and extensible syntax with lots of built-in shorthands for most common cases.

Since less code needs to be written to accomplish the same task, the programmer can now focus on the problem’s solution instead of spending the time for boilerplate code. It is especially nice if you pay your programmers for SLOC. Furthermore, Scala reduces the number of places mistakes can be made and hence improves implementation quality.

Here is a short list of Scala language and compiler features:

  • Type inference – in most cases compiler can automatically detect types of values:

val i = 1 // Int

val s = “Hello, world!” // String

  •  Named and default function arguments:

class Point(x: Int = 0, y: Int = 0)

new Point(y = 1) // Point(0, 1)

  •  Tail recursion optimization – recursive function self-calls transforms to loops – no more StackOverflowError.
  •  Support of both imperative object-oriented and functional programming – in Scala object composition, methods, state encapsulation and inheritance, traits and mixins combined with lazy evaluations, algebraic data types, pattern matching, type classes and, of course, first class functions.
  •  Lots of immutable and mutable, finite and infinite collections with many implemented transformations like map, reduce and filter:

users.filter(_.lastVisitDate before today).map(_.email).foreach(sendNotification)

// Sending notifications to all users that visited our  site   too long ago

  •  Concurrency through mechanisms of actors and futures:

val sum = sumActor ? List(1, 2, 3) // sum == Future(6)

val x = sum.map(_ * 2) // x == Future(12)

  •  Generics – JVM does use type erasure and knows nothing about real types of generics in runtime, but Scala keeps that information.
  •  Compile-time meta programming – in addition to runtime reflection, Scala compiler supports macroses – functions evaluated during compilation.

Distributed Computations and Big Data

One of the fields where Scala found its widest application is distributed computing. Scala has great mechanisms for working with data sequences even in a cluster, which is why it is frequently used by Big Data engineers and data scientists. Here is a list of the most well-known technologies that use Scala:

  • Akka –  a framework for creating distributed systems. It is based on actors model and makes it easier to implement concurrent applications without race conditions and explicit synchronization.
  •  Spark – a very popular batch data processing framework. Spark has integration with different data sources such as Cassandra, HBase, HDFS, and Parquet files. In addition, it has a Streaming extension that provides tools for building stream processing pipelines. One of the most powerful features of Spark is the ability to run quick ad-hoc tasks to check hypothesis. Such functionality is reached by Spark’s design that in some cases gives more than 100 times performance impact in comparison with Hadoop jobs.
  •  Kafka – a high performance message queue, one of the key middleware components in data streaming systems. It is distributed by design and usually acts like a data buffer in streaming systems on the different stages of the processing and as a media between different system parts.
  •  Samza – one more framework for stream processing. It is similar to Spark Streaming but works in a different way. It does not create micro batches as Spark does. Instead, it processes data pieces as soon as they arrive, which makes Samza more preferable in some cases.

In addition to these tools, it is also possible to use Scala for implementing good old Hadoop map-reduce jobs, directly or utilizing Scalding. Anyway Scala is a great choice for data processing and distributed computing.

Compatibility with Java

One more important thing is compatibility with libraries written in Java. Java code can be used in Scala directly and without limitations. This allows to keep existing modules without the need to re-implement them. It could be quite helpful when it is needed to use a rare library, legacy code, or API that have implementations only for Java.

Why Scala?

To sum it up, Scala is well designed and very extensible. It has special processes (SIP and SLIP) that let any Scala developer propose enhancements. In conjunction with the large community, Scala ecosystem has been growing rapidly. Scala has its own stack of tools and is compatible with existing Java code. It brings new effective approaches that give the  programmer an ability to do their job more efficiently. All these features make Scala one of the most attractive modern programming languages.

Contact us at contact@dsr-company.com to learn more or if you have a Scala project to discuss.

The Next Wave of Media and Entertainment Consumer Experience

The coming transformations in the media distribution space provide ample opportunity for both vendors and operators to work together to improve efficiencies and increase user satisfaction on the consumption experience.

DSR believes that after the failure in uptake on in-home 3D, the media & entertainment market is primed for the success of the next wave of consumer experience improvements, which we believe will be driven by high dynamic range (HDR) video, continued over-the-top streaming distribution (including 4K video resolutions) and virtual reality. Beyond the consumer experience, the backend of media operations can be substantially enhanced and prepared for these changes by embracing IMF, IP ingest & playout and virtualization of media processes.

As a software engineering provider for media & entertainment vendors for more than a decade, DSR is uniquely positioned to provide our expertise in building applications and backend services to assist companies ready to embrace these transitions.

IMF, HDR, & 4K Video

Consuming video wherever, whenever has become mainstream, and enabling those consumption habits has increased the workload on media transformation by several times in the last 5 years. IMF (a SMPTE standard for Interoperable Media Format) finally holds a promise to simplifying versioning for this wide array of consumer consumption channels.

IMF can simply your media workflows by using a single package to hold an original version video, along with all possible substitutions and exclusions referenced by composition play lists (CPL). Since additional CPL are just XML documents and substitutions and exclusions are much smaller than creating new additional versions for each distribution point, IMF not only promises simplicity in distribution, but also a possible reduction in media storage.

BroadcastingIMF_VR_VM_BlogDiagram_pptx

Within IMF, it is also possible to handle 4K video and coming soon, high dynamic range (HDR) content, along with downmix instructions, so that a single file package can hold the true master content, as well as the recipes for creating premium and lower cost versions.

DSR has already built tools for customers based upon IMF parsing, packaging and file playout, and we can bring that expertise to your project as well.

Virtual Reality

Consumer appetites for new and exciting video experiences appear to be increasing, and virtual reality experiences are poised to fulfill those desires. Several challenges exist in preparing content, however, including:

  • Camera rig creation and assembly
  • Video splicing/stitching for seamless visual experience during user pans
  • Spatial distortion correction

DSR’s wide array of experience in handling video for ingest and playout puts us in a position to help advise and create applications within the virtual reality space, particularly when dealing with video and audio layouts.

Backend Media Process Virtualization

In the last several years, DSR has helped many of our clients migrate and manage their applications from on-premise deployments to virtualized deployments, both on the cloud and in local datacenters. Our knowledge of multiple hypervisor technologies allows us to be agnostic in helping our clients migrate applications.

DSR has a wide range of expertise in refactoring applications, removing tight couplings between user interactions and data processing to enable the addition of web services. Our database expertise and API knowledge also helps speed the transition of applications from those dependent on single machine processing to those that can scale between multiple virtual machines.

Whether your organization is facing the challenges of:

  • application refactoring for virtual deployments,
  • handling multiple versions of media with IMF or HDR, or
  • needs to bring a virtual reality application online quickly,

DSR stands ready to help. We have over 10 years of experience in media & entertainment applications, working with enterprise application vendors and start-ups, with a stable team of engineers that understands video, audio, captions and containers (and English). Let us bring our engineering team to help in your next project.

Contact us at contact@dsr-company.com

Keep Calm and Implement ZigBee Security

At the end of last year, a group of researchers from Cognosec presented their “ZigBee exploited” report at the BlackHat conference in the USA. They demonstrated a tool that allows an intruder to open your doors, shut up motion sensors off and even turn the lights off in your bedroom, of course only if these devices are controlled via ZigBee. IT and for the most part non-IT sources repeated the news many times with excessive drama effect and as a result, we had got a categorical accusation of lack of security in ZigBee and even the entire IoT. Based on the forecast that there will be 29 billion of IoT devices in the not so far 2020, “experts” convinced their readers that it is not the problem of the future but the present and that all devices are vulnerable. Now when the panic has calmed down, let’s see what happened in terms of ZigBee.

First, let’s talk about silent motion detectors. Motion detection in the system that was hacked works the following way: when a sensor detects a movement it sends a ZigBee message to a gateway (you may call it smart hub, ZigBee hub, etc.), which uses TCP/IP to deliver this message to the user. Cognosec researchers used a jammer to break the ZigBee link between the sensor and the gateway. Even when the jammer had been turned off, the motion alarm was not retransmitted because the retransmit attempts were over or the sensor decided that the link was lost (we can only guess). Samsung, whose hub was attacked during the research, has already given the proper comment and we agree with it 100%: ZigBee Motion sensors are not designed to be a professional, highly secure alarm system. We wonder if anybody has already seen a professional alarm based on a wireless protocol. Although the jammer attack is not specially a weakness of ZigBee, it may be useful for those customers, who want to get an alarm but do not want to pay a high cost.

Moving on, now we are going to discuss the weakness that was introduced as a supermassive hole in the ZigBee security, but it is actually not ZigBee specification’s fault. The reality is that a large number of ZigBee devices available on the market use the default Trust center link key to encrypt active network key transport. This key is open and there is not much difference for security in sending the network key as plain text or encrypted by the default key. ZigBee specification warns developers about such threat and recommends out of band or not-by-the-air methods to deliver an initial master key to both the trust center and the device. Researchers criticize this recommendation because it is not a requirement when the required by the specification default trust center link key in its turn breaks the security. But why shouldn’t the not in-band key delivery be a part of wireless protocol specification? Moreover, as anybody, even researchers, agree, unsecured key transport is ideally performed only once, during an association and most likely is not a threat, of course unless a maniac with an enabled ZigBee sniffer is spying on your house 24/7. And here the thing that everyone is talking about comes to the surface. Assuming that a quick, low-power, unsecured key transmission is performed once, hackers enable their jammer again to force link loss. When the link is lost, there are two ways to get the key:

  • A “typical” user triggers association one more time when an intruder’s sniffer is enabled;
  • Device tries an unsecured rejoin (that is allowed by the specification).

Respectively, there are two ways to dispute:

  • Strictly saying a “typical” user will most likely reset the device, reset doesn’t mean a factory reset, just power off/on. The reset will trigger a rejoin process and now we move on to the second point;
  • Although ZigBee allows unsecured rejoin, secured one is not forbidden; it’s just a policy, an option that can be configured by the manufacturers. The problem wouldn’t exist if the devices under the test implemented secured rejoin. There also wouldn’t be any problem, if there weren’t high security requests to the devices that implement unsecured rejoin.

The main conclusion from our dispute is that the found exploit is not a “ZigBee” one, it’s “Current ZigBee implementation exploit.” It will not be superfluous to say that researchers from Cognosec are ZigBee users too and they pointed out that ZigBee specification provides all the good recommendations to build a secure system. But dramatic headlines and maybe mass hysteria turned the device problem into the core standard one. There won’t be any panic, if anybody interested in IoT (or ZigBee), based their opinion on the original source:

https://www.youtube.com/watch?v=9xzXp-zPkjU

https://www.blackhat.com/docs/us-15/materials/us-15-Zillner-ZigBee-Exploited-The-Good-The-Bad-And-The-Ugly.pdf

8 Things to Know Before Choosing a Contract Software Developer

Introduction: Balance = Profitability

To operate profitably in today’s economy successful businesses must balance market conditions with product/project opportunities and available development resources.

Many companies attempt to achieve this balance using contract software developers—some realizing more success than others.

This white paper identifies eight things successful companies consider when choosing a contract software development partner. Understanding them can mean the difference between profit and loss—and between your project’s success and failure.

1. Successful Contract Software Developers Have (and Hit) a Schedule

If you’re investigating a contract software developer, your project probably already has some schedule risk. If you miss your schedule, you fail. Turning over development to a contract software developer who can’t answer schedule questions is a sure-fire recipe for you missing your schedule.

So, choose a contractor who asks you lots of detailed questions about your schedule and deliverables before taking the job. Then, you ask them about the tools they use to plan development work and allocate developer resources. Ask to see those tools with live data from a current project. Look for how detailed those plans are. Since you will often be paying by the hour, the tools the developer uses should provide scheduling and resource usage to the hour.

If they have this, they will likely hit your dates.

2. Successful Contract Software Developers Commit to Your Budget Requirements

Companies large and small have been victims of “outsourcing hype”—the promise of cheap engineering at a fraction of the cost of hiring and using your own employees. While the hourly rates were low, the number of hours spiraled out of control. The result—“outsourced” projects come back (too often significantly) over budget, and late as well.

When your budget can’t slip, and you can’t afford any surprises, look for a contract software developer who can bid the work in a way that meets your budget requirements. Three common ways to have them bid the project are:

  • Fixed hourly rate
  • Time and materials rate
  • Fixed price bid

If you have clearly defined requirements, a competent contract software developer can make one or more of these methods work for you and your budget. However, if you need assistance in defining the software requirements, ensure that the contractor you choose is experienced (and can provide examples and references) to assist you in requirements definition stage of your project as well.

Also, make sure the developer provides up-to-date time sheets. These are the best indicators that 1) the developer has sufficient resources working on the project, and 2) the developer is tracking to your budget requirements.

3. Successful Contract Software Developers Have Real-World Business Understanding

Talented contract programmers are a great asset; however, talent alone doesn’t guarantee your project will succeed in the marketplace. Experience in taking projects/products to market can be as important as the amount of technical competency possessed by a contract software developer. Knowing what works and what doesn’t work in the marketplace is an invaluable asset.

Look for a contract software developer with a track record of completed projects actually delivered to and used in the marketplace. Ask to see some up-and-running examples of live work done for other companies. This kind of portfolio is the best indicator the developer can bridge the understanding of their client’s business with the client’s project deliverables.

A developer who provides you with market experience-based feedback is a greater asset than one who simply agrees with you because you’re the client.

4. Successful Contract Software Developers do Quality Work (and Provide a Warranty)

It is rumored that US Government procurement people operate by an unwritten rule that purchasers expect at best to realize two of the following three attributes in buying a product or service:

  • Quality
  • Timely
  • Cheap

Because you already know you get what you pay for, applying this rule to contract software developers is simple: You want a quality product in a timely fashion.

Find out if the contract software developer operates the quality assurance (QA) function separate from the development function to test deliverables. Superior developers will even warrant their work and provide free bug fixes during the warranty period. A developer who is fearful of providing a warranty is a “red flag” from a quality-of work perspective.

5. Successful Contract Software Developers Provide Documented Deliverables

For companies that build their businesses on the backs of their software deliverables, few things are more frustrating than contract developers who deliver poorly documented (or undocumented) projects and source code.

Successful contract developers understand the need for accurate, readable, useable documentation. Ask for representative samples of:

  • Project requirements documents
  • Design documents
  • Fully commented source code
  • Test cases and methodologies
  • Project documentation
  • User training and help documents

This is vital for venture-funded companies, as these documents are essential in any exit or liquidity event.

6. Successful Contract Software Developers Keep You Informed on Your Project’s Status

Knowing where your project is at, and who you can talk to find out the details is critical to being successful when using contract software developers. It’s not a good sign when your contract developer keeps you in the dark about your project’s status. Direct access to project managers, programmers and QA staff can mean the difference between getting a question answered in five minutes or five days. If you’ve ever had to report that you “don’t know what’s going on with the contract programmers,” then you know what we’re talking about.

Clear communication using multiple means is a vital key to successfully working with contractors. See that the developer allows you to talk directly with the programmers, project managers and QA people. Find developers who share their code-developing tools with you so you can stay in-the-loop. Look for developers who offer multiple means of communication including:

  • Phone
  • Web conference
  • E-mail
  • Instant messaging
  • IP telephony
  • Web-based project management tools

These give you an added advantage and ensure collaboration when working with contractors and resources in multiple geographies and time zones, and will keep you in-the-know at every step along the way.

7. Successful Software Developers Protect Your Intellectual Property

A word to the wise: intellectual property (IP) ownership is one of those clauses that even the biggest companies forget to take care of. If you fail to do this, questions will almost certainly arise over what happens to the intellectual property (IP) or who has rights to it.

Another word to the wise: IP ownership conflicts are compounded when your contract software developer is incorporated in another country than your own.

Last word to the wise: Avoiding “open source” software licensure and IP entanglements is critical to protecting the value of your company’s IP in a technology sale, license or transfer to another company. You will be required to assure the buyer that your code is “clean” from an IP perspective.

From an IP ownership perspective, two of the biggest success factors for operating a contract software developer engagement are: 1) choosing a contract developer who assures you that what they develop for you is yours and yours alone; and, 2) choosing a contract developer incorporated in the same country as yours–and thus subject to the same laws as your company; and 3) choosing a contract developer with experience in delivering “clean” code free of any “open source” contamination. (You can lose your legal shirt on this one.)

These three factors will provide you with legal confidence and means of recourse that avoid the costs and difficulties associated with adjudication under US and international law.

8. Successful Software Developers Deliver Great Value for the Price

The one topic you’re guaranteed to discuss in every contract software developer engagement is price. Managing project headcount requirements by making additional labor costs a variable item rather than fixed item on the balance sheet is compelling to the people in your organization who count the money and manage profit and loss.

While this white paper has already raised multiple items to consider regarding budgets and pricing, the short answer is this: You get what you pay for. Low hourly rates are no assurance of a value-based engagement. If you do your part with clearly defined requirements (or find a contractor that is experienced in help you define your requirements to create a smart product), a successful contract software developer will deliver with high-predictability on those requirements.

Developers who deliver quality, timely software may cost a little more up front, but they’ll assure you have a solid deliverable in your hands by the deadline and will have delivered solid value for the dollars you spent.

Conclusion

Successfully using contract software developers to achieve your objectives doesn’t just happen. Companies who enjoy this success don’t do it on accident. Give your company a quick “self-diagnostic” and ask if your current contract software developers:

  1. Have (and Hit) a Schedule
  2. Commit to Your Budget Requirements
  3. Have Real-World Business Understanding
  4. Do Quality Work (and give a Warranty)
  5. Provide Documented Deliverables
  6. Keep You Informed on Your Project’s Status (Clear communication)
  7. Protect Your Intellectual Property
  8. Deliver Great Value for the Price

Find out today how DSR can help with you balance market conditions with product/project opportunities and available development resources. Contact us at contact@dsr-company.com.