Category Archives: Software Development

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.

 

Please follow and like us:
0
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. 

 

Please follow and like us:
0
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.

 

Please follow and like us:
0
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.

 

Please follow and like us:
0
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.

 

Please follow and like us:
0