Tag Archives: Software Product Development

Posted on Fri, May 2, 2014 @ 8:23 am

OFS, a leading provider of software product development services, is pleased to announce its CEO Rich Napoli has won the award for Innovative Medium-Sized Technology Company CEO in the 2014 SmartCEO Voltage Awards.

photo_1

April 30, 2014, Newtown, PA. SmartCEO, a prominent business publication, celebrated 2014’s top technology innovators and implementers with its annual Voltage Awards in NYC last night. Rich Napoli, CEO of OFS, was selected as the winner for the award of Technology Innovator of a mid-sized company.

Finalists were chosen by an independent committee of local business leaders based on the nominees’ creative vision, strong leadership and innovative solutions. Napoli and his fellow finalists were profiled in the May/June issue of SmartCEO and were celebrated by over 450+ executives and guests at the Voltage Awards ceremony at Capitale in NYC last night. photo_2

“This nomination is an honor for OFS and a testament to the hard work of all our employees,” shared Napoli. “Each member of our OFS family has played a key role in serving our customers. Our goal at OFS remains building quality software using innovative technologies in order to engage and delight users. We continue to be laser focused on building top-notch engineered products for our clients in today’s digitally disrupted world.”

The finalists and winners consisted of New York-based companies that collectively generate more than $1.42 billion in annual revenue and that employ over 7,000 individuals. Companies shared in the excitement at the event tweeting @SmartCEO #EMVAs and @ObjectFrontier.

 

 

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 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 Rediff.com, 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.