Category Archives: Software Development

Posted on Thu, Oct 5, 2017 @ 1:58 pm

Hardly a day passes by without someone mentioning Bitcoin, especially when the currency’s market value has reached thousands of dollars. This grabs our attention immediately. At ObjectFrontier, we are interested in Bitcoin not just for its market value, but because of the technology that makes it tick, makes it secure, and makes it successful: blockchain.

 Thanks to the likes of Vitalik Buterin, blockchain – the same engine behind the success of Bitcoin – is now available for enterprises to use and build applications on it.

 This is the first post in a two-part series on blockchain. Here, I’d like to show a brief technical view of what blockchain is and how your company can use it. In Part 2 of this series, you’ll get to learn about some of the prototypes we are building and see the opportunities blockchain enables when it’s in action.

 Please note that this post might get fairly technical, so you will need some prior understanding of databases, distributed storage, peer-to-peer (P2P) networks and computer programming.

Applications of Blockchain

As explained in Bretton Woods’ 2015 white paper here , blockchain has far-reaching applications in financial services, healthcare, retail, media, personal investment and governance. To name a few, some applications are already built for the following:

  • Clearing and settlement
  • Payments
  • Property ownership
  • Digital identity
  • Voting
  • Insurance mortgage lending
  • Release of health records
  • Title and lien holding
  • Crowd sourcing

The Blockchain

It is an undeniable fact that Bitcoin revolutionized the field of cryptocurrencies. As mentioned above, the key to Bitcoin’s success compared to many of its predecessors is its underlying technology: the blockchain. Blockchain is a distributed transaction ledger replicated in all participating nodes in the blockchain network, with no central authority controlling it.

Technically, a blockchain is a decentralized database with random independent nodes participating in the network. All the nodes in this network will have the same version of blockchain, and hence the ledger is distributed and one single version of blockchain is replicated across all the nodes. As the name indicates, a “blockchain” is a chain of blocks. The blocks contain transactions committed to the blockchain.

The state of the blockchain changes based on the transactions added to the blocks that make up the chain. Any node in the network can add a block to a blockchain. However, since a blockchain is disintermediated, with no central authority controlling what transactions make up a block or which block is added to the chain, we need a consensus between the competing nodes trying to add the block. A consensus algorithm called Proof of Work (PoW) achieves this unanimity. PoW is the consensus algorithm currently employed by the likes of Bitcoin and Ethereum. Check out this Ethereum white paper for more details.

Beyond cryptocurrencies, blockchain technology—with its decentralized, disintermediary nature—has immense potential to open up new avenues and markets for enterprises willing to build revolutionary applications on blockchain, giving them an edge over others. Private, permissioned blockchain is especially attractive to many enterprises in financial services and healthcare. It is encouraging to see increased acceptance of blockchain with states like Vermont passing legislations honoring transactions on blockchain.

Programmability of Blockchain

To understand the programmability of blockchain, we have to take a good look at how Bitcoin works. When Alice transfers a few bitcoins to Bob, this is considered a transaction in Bitcoin’s blockchain.

As shown below, a Bitcoin transaction has two sections: Input and Output.


Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd04470b9a6

Index: 0

scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446618c4571d10



Value: 5000000000

scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35549d


Without getting into the fine-grained details, the scriptSig and sciptPubKey are actually scripts that define the business logic for this transaction. When executed, this script evaluates the input against defined conditions and ends up changing the state of blockchain if all conditions are met. This ability to define logic in a transaction is what makes blockchain programmable.

Scripting in Bitcoin cannot be expanded much beyond cryptocurrencies, because it is not developed with such applications in mind. Technically, the scripting language in Bitcoin is not Turing complete. This limitation in Bitcoin is overcome by the leading blockchain platforms like Ethereum and Hyperledger, making blockchain a viable option to develop and deploy applications for enterprises.

These platforms also focus on privacy, scalability and access control, making them ready for building and deploying enterprise applications.

Blockchain Platforms

There are many blockchain platforms available in the market today that enable the use of a “smart contract,” which is a code that facilitates the secure execution of contracts between two parties on blockchain. Applications that use smart contracts are called “Decentralized Applications (DAPPS).”

Here are the two leading blockchain platforms:

Both of these platforms enjoy good community contribution, industry adoption and enterprise backing.

Ethereum, which is backed by Ethereum Foundation, is an open software platform based on blockchain technology that can be used to build and deploy smart contracts for decentralized applications. Smart contracts are programs that are deployed to blockchain and run on the Ethereum Virtual Machine (EVM) in an Ethereum network.

Smart contracts are immutable once deployed, and because of blockchain’s decentralized nature, they will always be available for invocations. Invocations of smart contracts are transactions that make up the blocks in blockchain. These transactions can contain data for functions called on smart contracts. Smart contracts have their own storage that can be used to register state changes and can return output of the function invocations. One contract can call other contracts and create more contracts in run time. Ethereum smart contracts are developed using a contract-oriented language called Solidity.

DAPPS are traditional web applications that invoke and use smart contracts behind the scenes. Ethereum is primarily a public blockchain that can be run as a private blockchain.

Hyperledger Fabric backed by Linux Foundation is a platform for running a private blockchain (a.k.a. permission blockchains). Permissioned blockchains are similar in all aspects to the public blockchain except for the following:

  • They are private. These blockchains are accessible only by approved parties.
  • They have pluggable consensus. Participating organizations can decide on the consensus protocol.
  • They allow for specific permissions. There is fine-grained control over who can read and initiate transactions in these blockchains.

The characteristics of a private blockchain sometimes make Hyperledger Fabric an attractive option for the enterprises. You can use the factors above to determine what suits your own use case best.

In general, Hyperledger Fabric works with the same principles as Ethereum with some differences in terminologies. For example, smart contracts are referred to as chaincode and the choice of language for development of contract is Go.

Both the platforms are equally powerful and capable of building revolutionary applications.

To see what blockchain looks like in action through several use cases, check out Part 2 of this series here.

About the Author

ganGaneshram Ramamurthy is ObjectFrontier’s technical director and heads technology for presales. For many years, Ganesh has been designing and developing enterprise applications across various domains. He has a keen interest in emerging technologies and is now spearheading blockchain initiatives at OFS.



Posted on Thu, Sep 28, 2017 @ 1:19 pm

Big Data. Data Lakes. Analytics. Machine Learning.  Are these tools only meant for tech giants like Google or Facebook? Or, can these tools meaningfully assist any business and help it respond to the ever-changing needs of the market? As the software industry continues to move toward consuming and delivering cloud-based solutions, many companies now realize they sit on a gold mine of data. Although many understand the value of data, few understand how to unlock that value.

Every time one of your customers clicks on a link, completes a transaction, or views a page, it can be logged and tracked.  Some customers realize the value of this data and set up a data lake to store it. To put it simply, a data lake is a database that contains huge amounts of raw transactional data. Data lakes often get confused with data warehouses because they are similar, but data lakes are much more versatile and can grow much larger than data warehouses. With SaaS or connected on-premise solutions, data can be exported on a regular basis from the solution to a data lake, where the data is normalized. This enables you to apply analytics at a later date. If you need help choosing the right data lake, we suggest Hortonworks Data Platform. (Full disclosure: OFS partners with Hortonworks.)

Data lakes collect endless amounts of raw transactional data, but it is just that: raw data. Without applying analytics to that data, obtaining any useful information or action items from it is very difficult.  Everyone knows what analytics is, but most only scratch the surface of what analytics can do for their business. For example, how many people look at a data lake and ask, “How many people logged in?” or “How many people clicked on a link after we deployed this new product/feature?” or “How many widgets were purchased after this marketing campaign?” It’s good to have this information when answering one-off tactical questions, but it does not tell a story about how your business is doing. It does not provide insights into your customers’ and users’ activities and trends.

What makes things more difficult is analyzing data from disparate systems. Think about a typical e-commerce shop. It has multiple, different backend systems all connected to create a complete solution:

  • Customer-facing web portals
  • Shopping carts
  • Billing systems
  • ERP/OMS/WMS/other order and fulfillment systems
  • Shipping systems
  • Sales/contact management systems

Each one of these systems comes from a different provider, has its own database, methods, naming conventions and APIs. The data lake ingests all data from each system, then uses the data for various analytics.

It’s all too often the analytics applied to a data lake do not realize the true potential of the data, or the analytics provide information that is just plain inaccurate.  How many have seen this scenario? Data scientists look at pre-collected data chosen arbitrarily by an engineer, and then they show that data with charts or graphs on a web page. How many dashboards contain the same data:  new accounts this month, number of logins, and number of widgets purchased? Typically, this type of data is used to prove or disprove an existing theory by a single person or team. These solutions provide no conclusions, next steps, or trends to watch out for, and most importantly, they reveal little to no insight into overall business trends.

The industry is moving in another direction and putting a new layer on top of an analytics engine: machine learning (ML). Data scientists now use artificial intelligence engines that meticulously sift through each raw transaction in a data lake to look for crucial trends that lie either at the surface or deep within the data.  These engines are capable of gathering, comparing, and analyzing data from multiple, completely different sources, such as the ones mentioned above.  These machine learning engines consume that data, and ultimately deliver suggestions, theories, and trends that provide answers to significant questions you didn’t even think of asking. Using artificial intelligence (AI) algorithms, an ML engine even can alter its analysis and conclusions based on the changing trends it sees within a data set.

We all think about sales and marketing organizations applying ML to their data to ensure they pitch the right products at the right time to the right consumer. However, many industries now use machine learning and AI to solve very specific problems. The financial services industry applies ML to prevent fraud and reduce expenses related to it. Investment and stock brokerage firms also use AI to suggest stock trends and offer insights to traders about when to enter and exit certain holdings. The healthcare industry has seen an explosion of data collection from wearable devices and is using ML to provide accurate, more targeted healthcare services to specific individuals. Even the oil and gas industry is applying ML and AI to data sets collected from mineral analysis to predict refinery failures or service degradations before they happen.

Ultimately, each industry and business strives to accomplish two things: Identify profitable opportunities for growth, and reduce or avoid risk. Humans ask big data teams to display data they “feel” is important to make educated business decisions.  However, this leads to missing significant trends and insights living deep within the data, and even glaring trends staring data analysts right in the face.  By implementing machine learning on top of data lakes and existing analytics engines, you can gain insights from transactional data to help your business grow.

Interested in seeing machine learning and data analytics technologies in action? Check out ObjectFrontier’s iHealth application demo from our Analytics Innovation Lab. iHealth is powered by data analytics and machine learning to provide real-time insights that create better opportunities to treat patients experiencing abnormal heart rates during physical activity.

About the Author

bob-kramichBob Kramich leads all our US sales efforts and is responsible for directing all business development activities for OFS globally. Bob has more than 25 years of experience in creating and delivering high-value software engineering relationships with US and international companies. Prior to joining OFS, Bob served as vice president of Business Development, Life Sciences, for EPAM Systems, Inc. (NYSE:EPAM), a leading global provider of software product development services. Bob joined EPAM through EPAM’s acquisition of GGA Software Services, the world’s preeminent provider of scientific informatics services to global biotech and pharmaceutical companies. Bob served as GGA’s chief business development officer. Bob holds a Bachelor of Arts degree from Tufts University and a Master of Business Administration degree from Boston College’s Carroll School of Management.

Posted on Fri, Sep 6, 2013 @ 8:51 am

Today, software is universally more important to a business’s goals than ever before.  Mobile devices are now in the hands of the majority of Americans, and it’s changing the way we do business.  According to the Pew Research Center, as of summer 2013, 56% of American adults have a smartphone, and 34% own a tablet.  These devices are pervading the public, presenting an optimal opportunity for businesses to promote their brand through the innovative features mobile devices offer.  Until now though, software was simply a supplement to your brand.  Your business built a website ─ because everyone else was doing it.  You built a mobile app ─ because it was a cool thing to do.  But now that a mobile app is an expectation for these users, who interact with software around the clock, it’s necessary to take your software to the next level to differentiate your business.  Software is now your brand.  Mobile devices are in your customers’ hands all day, and they’re now demanding the same quality experience from you that they receive from brands like Apple.

shutterstock_46709995-resized-600Keeping your software up-to-date, compelling, and innovative for the modern consumer, however, is not easy.  It requires rapid releases to resolve issues quickly and to stay relevant to the needs of your user. Social media, blogs, and open forums have facilitated and increased customer communication in recent years, providing businesses with almost immediate feedback from their user base.  Listening and responding to it results in more satisfied customers, better product ideas, and increased revenue in most instances.  Neglecting it will often leave your brand to be lambasted unapologetically all over social media.  The rapid releases needed to avoid this public flogging are something that traditional IT shops don’t have experience with because software wasn’t central to driving revenue before.  In today’s modern, tech-savvy world though, a rapid velocity of releases is necessary, and an agile methodology is the only way to get you there.

Advantages of Agile Software Development:

Release Your Software Quicker –

  • You can begin work immediately without having to take time to flesh out the project requirements initially.  That’s because agile focuses first on quickly creating a bare-bones product with only critical functionality, so the most important features are completed first.  The details take shape as the project progresses so time can be used efficiently.
  • Operating in short sprints keeps the work focused and prioritized.
  • Software testing is conducted throughout the project rather than simply at the end. This is done to avoid any hold-up in testing that would delay the release date.

Add Features Late in the Game –

  • Agile development velocity allows for rapid response to change in a project, as agile is an adaptive method that encourages continual planning.
  • Given that today’s world is so fast-paced, your project’s targeted consumer and the needed capabilities may change over the course of development.  With agile, you can modify and add to the application requirements throughout the project so that the final product is one that is still of value to your users when it is released.

Minimize Overall Risk –

  • The tight feedback loops characteristic of agile velocity produce regular and measurable results, creating a transparent view of the project’s status.  It’s easy to see where the project is and where it’s going.
  • The daily stand-up meetings required to keep up with the velocity of agile development allow for easy collaboration and continual process evaluation.  Any miscommunications can be caught early and any necessary improvements to the development process can be made easily.

Meet Your Deadlines –

  • Software development is more predictable with agile.  Agile velocity is easy to calculate and track, making it a useful and efficient planning tool.
  • With this, the business can then have confidence knowing that the delivery dates they set will hold up for customers.

With software now critical to the survival and success of your brand, it is necessary to update your strategy for developing it.  Adopting an agile methodology will accelerate the velocity of your software releases and allow you to stay current in this ever-changing, modern tech world.


Posted on Fri, Jul 26, 2013 @ 1:17 pm

multitenancygraphic1Outsourced product development firms have been helping software companies for years to build robust, multi-tenant software products, such as SalesForce, that allow each customer to feel they have their own version of the software and data while in fact sharing a common infrastructure much like the tenants of an apartment building. This can allow IT shops to eliminate the replicated environments they might otherwise need to set up to support different large customers and have a single instance of the software with appropriate configuration settings and separated data. Good outsourced product development firms can even take an older software code base and add mutli-tenant capabilities such as the following:

(1) Tenant level data isolation

(2) Tenant level data model extensibility/customization

(3) Tenant level customization of UI themes/look and feel, forms and data capture widgets, notification templates and delivery mechanisms

(4) Tenant level creation and administration of roles and privileges, field level access permissions, data access policies

(5) Tenant level access control settings for modules and features, so that specific modules and features could be enabled /disabled for different tenants

(6) Tenant level business rule and workflow customization

(7) Tenant aware reporting tools

Migrating a single tenant data model to one that supports multiple tenants involves implementing a data architecture that provides the optimal degree of isolation/security of data at the tenant level, typically one of the following three approaches or a combination of these approaches is used to achieve this:

(1) Separate Database (Every tenant gets its own database)

(2) Shared Database, Separate Schema (multiple tenants use the same database but each tenant has its own set of tables grouped under a schema that belongs to that tenant)

(3) Shared Database, Shared Schema (common database and a shared set of tables store multiple tenant data, a tenant ID is used to associate data with a specific tenant)

Each of these approaches have their own distinct set of benefits and trade offs that make them appropriate in some cases and not in others depending on a number of technical and business/economic factors. Some of the criteria that a product development firm (OFS) would evaluate thoroughly before recommending an approach are as follows:

(1) Economics/Cost: More sharing of infrastructure (Shared Database, Shared Schema) between tenants reduces hosting/hardware and operational costs, the models that offer the most isolation cost the most and are least scalable.

(2) Security: The nature of the data that is being secured and the SLAs that have to be supported will determine the security safeguards that the chosen approach has to provide, However opting for the most isolated data model is not a prerequisite for implementing a robust security architecture. A shared data approach will also be able to provide the desired data safety if the appropriate design principles are incorporated.

(3) Tenant Considerations: Number of tenants the application will have to support, data storage requirement per tenant, the number of concurrent users that will have to be supported per tenant, support for data backup and restore on a per tenant basis, and the degree of data model customization and extensibility that tenants would require.

(4) Regulatory Compliance Issues: The regulatory and compliance requirements that tenants would have to satisfy might affect the data storage and data security choices.

(5) Technology Stack/infrastructure: The limitations that the underlying database platform imposes such as the maximum number of schema a database can support, the maximum storage per database etc. will have to be carefully considered.

Regardless of the approach that is chosen to convert a single tenant data model to once that supports multi-tenancy, a product development firm’s (like OFS) resultant model would be Scalable, Extensible, Secure and Efficient. 


Posted on Mon, Apr 29, 2013 @ 11:42 am

shutterstock_115353574Life used to be much simpler for us IT folks when there were two distinct types of software—the custom software you wrote for your own firm had only to meet your company’s unique requirements. For example, if your company only did business in the US, the software you built only had to deal in US dollars and to show screens in English. Product software made by a commercial software company, by comparison, was designed and built to work in multiple languages and currencies, with multiple options and configuration settings to accommodate the thousands of different companies that might one day use their product. So building product software used to be more complicated and involved than building custom software – but that is no longer the case today.

Increasingly today, IT organizations have to view their own internally-developed software with the same eye towards productization as commercial software firms. Why the change? And what is prompting it? We have found that many of our large IT customers are now facing many of the same challenges that our software product customers have been dealing with for years and the solutions that work for these IT customers are the same techniques used for developing product software:

  • Planning a Release – With the IT organization supporting an ever-increasing and diverse user base spread around the globe, changes to corporate software have to be carefully planned and timed to avoid helping one department while hurting another. IT customers need to add release management disciplines to their internal IT software using impact analysis, capacity planning and product roadmaps to help make sure that the software upgrades they are planning are managed well and delivered as scheduled.
  • Software Build Management – Traditionally, IT organizations were unlike software firms and did not have to worry about how to control multiple versions of their software or coordinate the development of their code across multiple development groups. This is because IT typically only had the current version of the code to manage and just a single, employee-based group of developers to maintain it. But now, with multiple instances of the software running in different organizations around the world and with a team of onshore and offshore resources maintaining the code, the need for tight software build management has increased dramatically. Software product build management skills can help IT organizations bring the same, consistent build environment to their work by using the latest source control and build tools to help them successfully manage the process.
  • Regression Testing – As custom IT software becomes more and more complicated, the need for thorough testing has increased. As new releases come out, it is critical to test not only the new features that were added but also the existing features from previous releases to make sure they still work. IT organizations used to just ask their departmental users to “bang on the system” for a while to test it out but now these IT must now approach testing in the same way that software companies do– with a robust test suite of automated regression tests that replays all the existing test scripts to ensure that nothing that used to work has been broken with the new release. There are a number of great tools that can help do this, and we have been introducing them to our IT customers to help them maintain the quality of their software.
  • Multi-Tenancy – This is a term that was once unknown to anyone outside the software industry. It’s the concept that lets a software vendor host their customers on a version of their software in the cloud without having to set up a single instance of their product for each and every client. Each customer is considered a ‘tenant’, much like the tenants in an apartment building that have their own space and share common services or amenities. In technical terms, this means that software vendors create their code to be multi-tenant so that each of their clients has access to all the features of the software while sharing some core services across them. For example, the vendor can store all their clients’ individual data in a single, managed database with appropriate security and controls so that no one customer can see or change another customer’s data. IT customers now want to set up a multi-tenant environment for their customers they now support to replace their replicated versions of their software they currently use for each client. They want a single instance of the software, with appropriate configuration settings to handle all clients

With all these new challenges, IT organizations are increasingly blurring the line between custom software and product software, thinking of themselves more as software vendors that design, build and test software for their corporation’s departments around the world. The old methods of building custom software no longer work in today’s modern, distributed economy. Increasingly, IT organizations must think like software product firms in order to compete with effective solutions that work around the globe in different working environments. In order to make sure that they are adopting the most advanced product development principles, IT organizations should turn to experienced software product development vendors with experience of building commercial software for ISVs (independent software vendors) for a solution that will work now and for the futute needs of their business.


Posted on Thu, Apr 11, 2013 @ 1:49 pm

shutterstock_78634858-resized-600Though Silicon Valley remains the top-spot for founding a startup, innovative minds are now also eyeing other US cities as prime locations to jump-start their new business.  Excellent universities turning out bright young minds, lower costs of living, and attractive offerings by local governments are causing startups to multiply across America, from Boston to DC, Chicago to Austin, and New York to Seattle.

With all this startup fever, however, comes a lot of competition to secure VC funding.  As a startup, you have to consider what it is that Venture companies like to see when they look at a start-up as a potential investment opportunity.  One area that a startup can make itself stand out is in its reliable and efficient product development.  This, however, can be one of the toughest areas to manage in a business, as it can be very difficult to hire and pay the right talent that will deliver predictable results.  One way to achieve this, though, is through taking on an outsourced product development partner that truly understands product engineering, as it can solve a number of your early startup woes:

 1.   Hiring the Right Talent

It’s tough right now for tech employers in the US.  It takes time to find the right talent given that the best are being snapped up by Google, Apple, and Microsoft.  It is often difficult to find the budget to pay the right talent what they’re worth, and it can be hard to attract talent as a startup because you’re not proven as a business yet.  If you use an outsourced product development firm like OFS, it frees you up to focus on your business while they concentrate on selecting and securing the right talent for you from their large pool of resources.

 2.   Setting Up Corporate and Engineering Infrastructure

Startups often don’t have the corporate and engineering infrastructure needed to successfully build a product development department domestically.  You have your core, small team of “idea guys” at your company, but you don’t have the infrastructure needed to be productive.  Outsourcing lets you use somebody else’s well-established systems and equipment to take care of HR, administration, office space, and servers and software for your product development resources.

 3.   Having the Necessary Flexibility

Hiring resources in the US creates a permanent expense.  As a startup, it’s difficult to predict what the needs of your company will be in the near and long-term future.  With outsourcing, you get the expertise you need without the permanent financial commitment, which allows you to easily scale your team up or down, with little notice, depending on your business needs.

 4.   Impressing the VC’s

VC’s are not going to put millions of dollars into your startup without seeing a level of professionalism and predictability that gives them comfort.  By outsourcing your product development to a well-known provider, you will get your product releases done on time with innovative features, sound architecture, and modern development practices and tools. Demonstrating this sort of dependability makes VC’s confident that choosing to invest in you is a good and stable financial decision on their part.  Also, because using an offshore provider keeps your costs down, the VCs will be happy to see their money go further in building your business.

Through these advantages, an outsourced product development partner can be just the thing to advance your startup to the maturity needed for securing VC backing.


Posted on Tue, Mar 26, 2013 @ 3:21 pm

software-development-team-3-resized-600If you work at a software product company, you probably struggle with the idea of outsourcing development work on your product to a third-party vendor.  After all, why would you outsource your core competency?  You’ve become successful exactly because of your ability to develop great products yourself.  The truth is, you’re correct to think that way.  You shouldn’t outsource what you’re best at, as long as you don’t have any of the common resource challenges typically faced by growing product companies today.  If you can answer “no” to the questions below, then you should stick with the team you have and not bother with outsourcing.  However, if you’re like most product companies, you’ve probably found that these problems are not so easily avoided…

1.  Do you have difficulty finding people in your region who can do the work?

The U.S. only turns out about 11,000 computer science graduates a year from its universities according to the Computing Research Association.  That’s far too small a number to fill the US’s hiring demands in the software industry.  These few graduates are highly sought-after and can be difficult to secure at a growing business when big, flashy companies like Google and Apple are making them incredible offers.

2.  Do you have budget pressures that prevent you from paying the going rate for top talent?

Because software engineers and developers are in such limited supply in the US, they don’t come cheap.  Many growing software businesses can’t afford all the new hires they would need in order to get their product out the door in time.  This leads to either hiring more junior resources that don’t understand software product development or higher turnover as skilled resources jump to the next job for a big raise.

3.  Are you under tight deadlines and can’t add capacity fast enough?

Your business may be experiencing rapid growth and require a greater capacity to keep up with customer demands, but it takes time to find new, quality talent to hire.  Unfortunately, you don’t have that time when you’re under strict deadlines for developing new product.  Additionally, hiring full-time talent carries a burden of employment that is tough to unwind if the company’s development needs ebb and flow.

If any of these resource problems plagues you, then outsourcing some of your product development may be the way to go.  Outsourced Product Development (OPD) firms can quickly provide your business with the skilled talent you need at an affordable price, along with the ability to easily scale up or down depending on your needs.  Most outsourcing firms use Indian labor markets to mine the rich quantity of skilled technology resources.  India turns out an impressive 140,000 computer science/engineering grads a year according to the All India Council for Technical Education cited on, and the cost for this labor is extremely affordable.  You can instantly take on all the resources you need rather than having to find them on your own, and you can easily increase or decrease the number based on your demands in the future.

So what’s holding you back?  Despite all these problems that outsourcing can solve, many of you have probably tried it and had a bad experience at one time or another.  Outsourcing can be a real hassle.  Communication is so essential to building software that it’s best to keep your team close by in order to facilitate interaction.  However, sometimes you just don’t have that luxury, and you have to go a different route because of resource difficulties related to availability, budget, and time.

The good news, though, is that there are now companies like OFS who actually understand what product engineering is.  Rather than just turning to a body shop of developers who simply write code, you now have the option of turning to a company that can act as an extension of your product development team.  These outsourced product engineering companies understand what it means to build software that serves a whole market rather than internal IT software built for a singular purpose.  They have developed in-depth processes and controls to mitigate the communication challenges of offshoring because they understand how essential communication is to building quality product that is scalable, configurable, compelling, and multi-enabled.  These practices include:

    • Working shifted hours offshore to allow for an overlapping, collaborative work period every day with the onshore team
    • Putting a senior resource onsite to create a constant connection between onshore and offshore, with the resource working extra hours communicating offshore in the mornings and evenings to ensure all-around understanding of the project
    • Participating in daily stand-up calls and weekly project calls to further facilitate communication between your team and the offshore resources
    • Providing all emails and mobile phone numbers of team members onshore and offshore so they are able to reach out directly to each other
    • Working in 2-week Delivery Cycles so you can quickly see the progress being made and constantly review the work being done with the teams

Through these improved communication practices, outsourcing has evolved, and companies like OFS now make it as painless as possible to do outsourced development while leveraging their deep understanding of product engineering.  Of course it’s not as ideal as having all the work done by your employees onsite, but if you don’t have the budget and time to find that type of resource, you have to go another direction.  Choosing the right offshore partner with expertise in product engineering creates a faster and cheaper option for you to still get the job done well.