Tag: Software development
The Prelude
Software Development has shaped the economic and social face of the world in the last three decades. What was once considered gibberish and confined to the elite minds that put humans on the Moon and cracked the German Enigma is now a popular profession that has created landmarks like the Silicon Valley and icons like Bill Gates and Steve Jobs. With the spurt in revolutionary product ideas in the late 90s, the need to put those ‘ideas’ into execution demanded the best development-skills, and this ‘demand’ has been only growing with time.
This brings us to an aspect of software development that has always been a vital business decision for companies – the most cost-effective engagement model. Business Software development has moved from being a mandatory in-house requirement by relaxing its rigidness and now accepting offshore and even freelance development. Choosing the right engagement model for software development is therefore essential to create state-of-the-art products without which it is impossible to survive in this cut-throat market.
Here is what we think about choosing the right engagement model:
1) The Package Tour aka the Fixed Price Model
Imagine this: You have decided that you want to visit a popular tourist destination, and it’s just to check an item off your bucket-list. The best bet you probably have is to take up a package that includes every attraction in the city; you may even fix the sightseeing spots which interest you before the tour starts!
This is a great option if you have done some meticulous research on the places you need to visit, the distances between them, the time spent in traveling from one location to another, the opening and closing hours of museums and galleries, and so on. The flip side is that you are in no position to experience flexibility. However, you can be satisfied that everything you’d asked for was provided and that you are not paying anything more or anything less than what you had agreed on initially.
Extend this to the realm of software development engagement; if you know your requirements, and your financial and temporal limits, this ‘Fixed Price’ model is the best choice for you. The Fixed Price model can also serve as a litmus test for hiring freelancers or development partners.
The Pros:
- It’s well-defined and well-negotiated. There’s no room for lapses.
- There is a push to get the complete picture of the software even before the development starts.
The Cons:
- There is no room for flexibility. Your eureka moment of a new feature should wait to materialize.
- Any gaps in communication would mean that the delivered product could be unsatisfactory.
The Fixed Price model works best for developing products on a short-term basis with features that are hot in the market, maybe with some additions and features that give it an extra garnish of appeal!
2) The Chauffeur-Driven Hired Car aka the Time & Material Model:
So, you’ve arrived at your destination, and you are feeling a bit adventurous and you are sure that you do not wish to confine your experience to a ‘package’. So, you decide to hire a car with a driver and pay that person for the time spent and distance covered (the experience and expertise of the driver would be an added variable).
In this manner, you are free to add items to your itinerary, and you are free to remove them at your will. You feel free to stop at any place and enjoy as much as you want, as long as cost and time are not concerns.
This is what the Time and Material model feels like for both companies and freelancers alike. Great products are not built because of a moment of realization, but by systematically accumulating and integrating ideas. For this to happen, flexibility is an essential attribute, which in this fast-paced market, in Sherlock’s words, is Elementary, Dear Watson!
This model also ensures continuous communication and a transparent and healthy vendor relationship.
The Pros:
- Super-Flexible
- You Only Pay For What You Get (If only there was an abbreviation like WYSIWYG!).
- There is a definite possibility for networking, not just on professional, but also on social lines.
- Granular Monitoring on a regular basis, especially in Agile Methods.
The Cons:
- You pay until you get what you want.
- In rare instances, in unethical companies, there could be a deliberate delay in development.
We’re yet to come across a situation or an industry where this might not work; who would not want to get into a development method that is so flexible, accommodative and modular.
3) The Self-Driven Car aka the Dedicated Developer Model:
You arrive at your destination, and instead of trusting a package, or instead of hiring a car by the hour, you decide to take a car all by yourself. It doesn’t matter whether you drive your car for an hour in a day or 23 hours and 59 minutes in a day, it’s all yours. Drive it on the road, and (if the car allows) offroad – there’s no stopping you!
However, this comes with a condition – you will need to know where you’re going, and everything about where you will go, maybe not the route map, but at least the time and distance. All this might sound difficult, but at least, the comfort-point you have is that the car you’ve hired is as good as yours, except that it’s not.
Hiring dedicated developers to work like that – you can take them in-house, and you need to pay them a fixed amount on a monthly basis. Once your product is done, you can, without the guilt of firing or the pain of attrition, ask them to leave. This also means that you have saved up on the recruitment costs, and you don’t have to keep paying for a resource you no longer need.
This model brings the best of both the above models – you have agreed for a fixed payment on a monthly basis (with no hard restrictions on the product-features) and you are free to alter the product or the features, or even shuffle the resources based on their skill-sets!
The Pros:
- You are in complete control. It’s almost like having an in-house team.
- You don’t have to go through the hassles of administration and hiring.
- There is a sense of ‘belonging’ for the dedicated developers in terms of both- the product and the organization.
The Cons:
- It needs management skills and a blue-hat vision of the product to get the best out of a dedicated team.
- If you have both in-house and dedicated developers, there is a chance of conflict.
- Or even worse, there can be possible siphoning of talents!
The Verdict:
You might have already sensed that we’re leaning towards the Time and Material model as it gives significant control, and with strategic planning, it could be cost-efficient as well!
Our recommendation is still strong towards the Fixed Price model for smaller products with limited functionalities, and for short-term projects like developing a module for an already robust tool. Conversely, if your project is long-term and extensive, it makes more sense to hire dedicated developers.
You and your business are in the midst of a spanking new industrial revolution, driven by technology that binds all living things and nonliving things, everywhere, anytime – the Internet of Things! Staying relevant and in the picture will not be as easy as before for businesses. The S7P 500 index shows how the average lifespan of companies has fallen from 61 years in 1958 to just 20 years in 2015. This is expected to fall further, making it too hard for companies to strive. Companies should be prepared for what’s ahead, conduct researches, listen to experts, keep a watch on latest analysts, reports, observe your market and trends to anticipate the changes that your business will take.
So, what technologies in the year ahead will play crucial roles in the success of your business?
Let’s see some of these:
Providing better user experience through web based platforms:
Businesses can utilize the potential of latest technologies to the maximum to offer personalized experience for customers, and to create better and meaningful relationships with them. There are several ways you can improve the customer experience through web based platforms: Developing an online customer advisory community, integrating social media intelligence, adopting face recognition methods using augmented reality in sales, etc. are a few examples. Business strategist and futurist at Altimeter, Brian Solis says, “The customer experience is a very human emotion, it is the sum of every engagement that a customer has with your business”. Researches show that 98% of customers agree that poor customer experience means going for another option.
Make sure your business has a flexible/scalable technology:
If you plan to win a marathon, would you invest in cheap trainers falling apart in the first half? Likewise, while making tech purchase decisions for your business, keep in mind the brighter side your business will get into through it. Go for tech that can evolve in pace with your business. For instance, it has always been wiser for small businesses to use cloud applications or cloud based business platforms if they aim to grow fast, in order to accommodate their growing customer demands seamlessly. New features and functionalities can be easily integrated into cloud platforms with growing business needs. The vendor can also manage the updates ensuring everything runs smoothly. There is little overhead on the business owner, who can forget the system and focus on the business goals.
Connectivity:
Offer a reliable, widespread internet connection to ensure the information you and your employees need are readily available. This allows the employees, owners and partners to have secure access on their own devices enabling tasks on the go and increasing their productivity. Onsite Wi-Fi access is critical for companies which deal with daily interaction with customers. Wi-Fi CRM also helps businesses to get details about their target audiences who uses the Wi-Fi, which in turn can be used to provide personalized experiences for customers.
Social Media Branding:
Almost all your customers use most social media sites out there. Social Media is a comfortable medium for you to reach out to your target customers instantly. Businesses can raise their brand awareness via social media among current and prospective customers. Your brand pages in Social Medias like Facebook, Twitter or LinkedIn is a great way for you to interact with customers (via emails, updates, messages or push notifications), promote your brand, market your products and also obtain customers’ opinion about the products via feedback. It enhances the way in which your business communicates with customers, clients and suppliers by increasing responsiveness and in turn, improving the reputation of your brand.
Mobile First:
First and the foremost thing to do for your business is to have a Mobile friendly website or a Mobile App of its own, to enable business owners manage their tasks in their own mobile devices. In coming years, businesses will serve customers more through mobile apps which is why you see most online websites encouraging users to make purchase through their mobile apps. Technology giants like Apple, IBM and HP investing more in mobility is another hint of how large this market is going to get. Enterprises will create new and native apps taking advantage of the device’s unique features and form factors. Businesses will also increasingly incorporate mobile payment system into their apps offering fast, secure and easy payments online. It provides new ways of payment system for customers through chip card technology in credit cards and mobile bill payment applications.
API- first design is opening a new door to software development. In a multi-platform environment, API first principles allow to create quick and efficient products and experiences that work across any kind of device. ‘Develop an API First – Before building the website, mobile , web, or single page application and then you get to work on defining the channels you will be making the API resources available on’. All the major players in market, like Oracle, IBM, Intel and others have been preparing for the API-centric software development for years.
Security:
Whatever technology you opt for in your business, security and privacy should be its primary feature. Every app, software, hardware or platform used must be self-aware and self-protecting. You can’t compromise the company’s confidential data for a better user experience; rather everything should be an integral part of the system.
Preventive maintenance through IoT:
In critical business environments, it is important to ensure continuous uptime by diagnosing and preventing malfunctions in real time. Previously, companies used to send field technicians to perform routine checkups and preventive maintenance on fixed schedules. Recently companies started fitting equipment with sensors to alert operators when there are chances for things to go wrong. With the power of Internet Of Things and machine to machine communication, your business can analyze operational data and take predictive actions in real time. This will help your business to predict resource availabilities and take actions before problems occur. You can predict equipment malfunctions even before they occur and take preventive actions.
This year, make a wish to give your business the latest, best-in-class tech, and we are here to help you achieve that.
There have been major changes in the way software and applications are built in software companies. Enterprises have moved beyond the conventional waterfall development model to more flexible Agile development environments. The whole idea of agile development methodology is to manage change incrementally and effectively in software and external functionality, and to speed up the development of quality software. And a major challenge here is to provide quick feedback on the change introduced in the software and the impact of it. The cornerstones of a proper agile approach to software development are early testing, rapid feedback, and effective communication.
Load testing in agile environment
Load testing is feeding the system with largest/ toughest tasks it can operate with, to see if the system can endure the stress. Historically, in waterfall development model, load testing gets pushed to the end of the project, assuming that only minor tweaks will be required to meet the performance criteria. With agile, load testing should be carried out often, and incrementally. But due to lack of adequate, trained and dedicated testing resources, lack of flexibility of load testing tools, lack of proper criteria, or due to infrastructure limitations or the common misconceptions among people around what’s possible with load testing and performance testing, these often get pushed to the end of agile development process.
Unless employees get beyond the following testing myths and delve deeper into the process, and realize what all is possible with today’s performance testing capabilities, we can’t do justice to the fully agile concept. So, here are the common misconceptions that employees should get rid of, to drive their testing initiatives deeper into the agile environment.
Myth #1: Load testing is all about breaking the system, so, unless the system is fully developed, load testing can’t be attempted.
Load testing is like a full-throttle, threshold limit or peak-usage stress test. Thus, in a way, people think of it as forcing the entire system to its breaking point. So, unless the entire system is built, how can you break it? Naturally load testing can’t be fitted into the small, iterative batch of Agile; thinks most of them.
You can help dispel this myth by creating a suite of modular performance test scenarios for common queries and crucial transactions. Performance test can be carried out in individual modules as easily as functional tests are done. Performance tests should work alongside functional tests with every sprint. This will prove that there’s lot more to performance testing than its objective mentioned previously, and will unveil the different ways it can fit into the usual Dev-Test-Ops cycle.
Myth #2: It’s risky
Load testing might sound risky, but, it is always safe to run a controlled test than to let the system fail under scenarios which were easily preventable and thereby avoid putting your reputation, revenue and users in jeopardy because of it.
Myth #3: It takes a long time in Agile
This can be a valid excuse if you push the load testing towards the end of the project, but in agile environment, the process of creating and executing the test at scale needn’t be that complex and time consuming. Think about the requirements upfront and put performance SLAs (Service Level Agreements) on the task board. This will help to automate basic testing processes. In fact small, iterative tests with incremental objectives allow testing in equal or much less time.
Myth #4: Developers needn’t concentrate on Performance until Functionality is complete
One of the key ideas of Agile programming is to find issues early and fix them fast and at lower costs, which is why we find a lot of testers learning to code, and adopting trends like automated tests and test-driven programming. This helps them run tests alongside development. The same is expected from load testing. Isn’t it always better to find errors or issues right when the code is written than to skim through the entire program to find a tiny line of problematic code at the end of development? Many back end interfaces like, Web services or SOAP open up opportunities for testing performance along various application paths even before the app functionality is completed.
Myth #5: Load Testing Doesn’t Involve the Whole Team like in Functional Testing
Earlier, we had a single individual or a group dedicated to conduct specific tests like the performance testing, but in an agile environment, everyone is a Tester (or developer) and all members contribute in every phase of software development to achieve the quality end product. Though there are testing experts and QA specialists, developers are still made to write their own test cases and similarly, operation specialists can identify issues and work to fix them.
Myth #6: Load testing is unnecessary if we do thorough testing in lab
Testing in a lab environment is good for testing the app, but it doesn’t cover the broader infrastructure. Many a times, we have seen serious, unexpected issues cropping up outside of the apps. Load testing in production can’t replace lab testing, but it reveals issues that other tests can’t, like, Database issues, Network bandwidth issues, unbalanced web servers, App server issues, DNS routing problems and Firewall capacity issues.
Myth number #7: The right load test tool will do everything for me
You can’t trust on tools to do every task perfectly, however smart the tool may be. You will have to do certain basic tasks yourselves like, setting up meaningful KPIs, realistic master data, creating valid, repeatable test cases, realistic master data, analyze the results, etc. Eliminating the human involvement completely during the test might reduce the confidence in the code you deliver.
Myth number #8: Load testing is too manual
From the previous point, it’s sure that you have tools to automate certain aspects of Load testing, so that the test isn’t completely manual. There are so many ways you can automate load testing, it’s just about choosing the right processes to automate.
Load testing can reveal functional problems in the code that can’t be otherwise detected using single-user tests. However, unless you make load testing an integrated part of the development process, you can’t completely say that you have an agile development methodology, nor can you extract its benefits.