Wednesday 19 June 2013

The big issue; bespoke versus off-the-shelf software solutions


Be it Microsoft, Adobe or whoever, the vast majority of the software we buy is 'off the shelf'. Whether consumer or business it’s likely to be the same application that is owned by millions of other users. The result is that it comes with all the advantages and disadvantages of a mass-packaged solution. But when is off-the-shelf a compromise too far?

The reality is that, most of the off-the-shelf software you see, probably started life as a bespoke piece of software; its value was recognised and it was produced for a wider market. You too might be considering having a bespoke application written specifically for your unique business needs, or you simply may not be able to find a product to suit your needs.  What are the advantages of going down the bespoke route? 

I wanted to use this short article to highlight some of the main benefits and negatives of the bespoke, vs. the off-the-shelf debate and to recommend that which ever way you chose to proceed- take a few minutes out to talk to a specialist software developer, like Synetec. A simple call with a reputable developer, could point you in the direction of a more cost effective solution or highlight the benefits of a more bespoke solution.

Let’s start with the positives of both:

Off-the-shelf
Bespoke
Development costs for packaged software is spread across the thousands or millions of users and means some solutions can be cost effective..






 
Normally bespoke software is seen as being costly, but compared to off-the-shelf financial software this is not necessarily the case.

Off-the-shelf solutions can be very expensive because of the huge range of functionality that might not be needed. So, bespoke software can in this instance be a far more cost-effective alternative.
Information on the setup and operation of off-the-shelf is relatively easy to find. A simple Google search is a good place to start.
Your software developer should be on hand for all your customer support and training needs - including those crisis moments that require an immediate response.

Due to the mass availability of many packages, simple tasks like file sharing can be far simpler because everyone has the software.

The software is designed to meet your needs and function to match the way you choose to operate and run your systems. It is much more flexible and can be modified and changed over time as your requirements and business practices change.

Your solution is out the box and ready to go straight away, meaning you don't have to spend the time that is taken up with the development process.

Your own bespoke software can be a key differentiator between you and your competitors, giving you a real business advantage.


And now for the challenges:

Off-the-shelf software is built to meet the needs of the masses not your specific business needs, so there will probably be operations that you require, that you simply cannot do with the software.

If you do not own or co-own the source code and the intellectual property to your software you become entirely dependent upon your developer.


In trying to cater for everyone, generic software often has features you may never use which can be complicating and time consuming to learn – both of which add significant cost.

Direct cost isn’t the only prohibitive expense with bespoke software. So is the cost of your time. A large investment of your time is required during the development process in order to produce the best results.

Generic, by its nature means that everyone has the same system- including your competitors. This means you are never likely to gain any real advantage in the market place.

There are still an unacceptable number of inexperienced and non-dependable developers out there who pose serious risks to your business.

If there’s a crisis then be prepared to be kept waiting on hold, as to the large multinational software companies, you are just another number in a queue.


The lack of flexibility means that you may have to adjust your business processes in order to made them ‘fit in’ with the off-the-shelf software. That’s not ideal, the software should fit you, not the other way around.


































Having a bespoke software solution developed to meet your business needs can provide you with major business and commercial benefits as well as create significant competitive advantage. The other significant advantage is the relationships you will build with your developer and the peace of mind that comes with having a team of professionals on hand to meet your training, development and service needs.

Tuesday 11 June 2013

Synetec’s quick guide to software development buzzwords



Synetec’s quick guide to software development buzzwords

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -C.A.R. Hoare

We’ve all sat in team meetings or conferences being bombarded with technical terms or buzzwords which we’ve never heard before. If we’re honest with ourselves, the IT team are amongst the worst offenders. Coding might be it’s own language but that is no excuse for adding so many terms to the dictionary. So here is Synetec’s short guide to 10 often misunderstood software terms.

1. Agile development
Agile Teams produce software in small stages, keeping code simple, testing it frequently often, and delivering small, functional pieces of the application as soon as they're ready. The focus is to build a succession of parts, rather than delivering one large application at the end of the project.

2. Extreme Programming
Extreme programming is a type of agile development that involves a pragmatic approach to program development. It places emphasis on delivering business results first while taking an incremental approach to building the product.

3. Feature creep
Feature creep is one of the biggest factors in time and cost overruns. It describes changes to scope of the project, usually adding news features beyond the original brief. These additional requirements can result in a significant impact to final cost, quality and schedule of the project.

4. Genetic programming
In artificial intelligence, genetic programming (GP) is an evolutionary algorithm-based methodology inspired by biological evolution to find computer programs that perform a user-defined task.

5. Pasta Theory of Programming
The pasta theory of programming refers to the idea that various programming structures are like pasta dishes. An unstructured procedural programming is called spaghetti code, while a more structured and layered programming is called lasagna code, while object-oriented programming is named the ravioli code.

6. Pair programming
Pair programming is an agile software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.

7. Scrum
Scrum is an iterative and incremental agile software development framework for managing software projects and product or application development. Its focus is on "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal" as opposed to a "traditional, sequential approach".

8. Scrum master
The scrum master is accountable for removing impediments to the ability of the team to deliver the sprint goal/deliverables. The Scrum Master is not the team leader but acts as a buffer between the team and any distracting influences. The Scrum Master ensures that the Scrum process is used as intended. The Scrum Master is the enforcer of rules.

9. Shotgun debugging
Shotgun debugging refers to the debugging of a program, hardware, or system problem by attempting multiple possible solutions at the same time in the hope that one of them will work.

10. Sprint backlog
Part of the scrum methodology, at the beginning of each sprint, the team has sprint planning with an end result being a backlog of work that the team anticipates completing at the end of the sprint.

11. Waterfall model
The waterfall model is a sequential design process, often used in software development processes, in which progress is seen as flowing steadily downwards through the phases of Conception, Initiation, Analysis, Design, Construction, Testing, Production/Implementation, and Maintenance.

12. WIP
WIP refers to Work in Progress and is any work that has been started but has yet to be completed. WIP meetings usually involve all stakeholders to ascertain degrees of progress against set objectives.

Wednesday 5 June 2013

Does an in-house developer make business sense?



Hiring great people is never easy. I’ve talked a lot about the importance of the relationship between the client and your software developer. But I wanted to turn my attention for a minute to the value of an in-house IT team, and how a trusted developer can support your decision-making process.

The starting point must as always be, “does the decision to employ an in-house IT professional or expand your existing IT team make business sense? What is the ROI?“

The increasing pace of technology and the demand for skilled IT professionals can make hiring the right team a complicated process. If you are a smaller firm, you’ll also be acutely aware that people are your biggest expenditure- so you have to get it right. Like in any profession, simple mistakes can easily undermine your search for IT talent.

Filling a vacancy
Recruiting for a vacancy doesn’t mean simply looking for someone to fill an existing position. Smart firms look at ways to develop the role and how top IT talent can bring added commercial and reputational value to their businesses.

But for those small to medium sized firms, who don’t have a dedicated CTO, there can be a knowledge gap. Too often recruitment is based upon what you think you need, rather than viewing a vacancy as an opportunity for development. I would always recommend speaking to a trusted software developer; use them as a consultant to help you understand your needs and map out a strategy. They are also likely to know people in the industry at all experience levels and be able to provide recommendations or assist in the selection process.

Making the move to in-house
Occasionally firms decide that it makes more sense building an in-house IT team from scratch. I see this most often when a company has had a poor experience with an inexperienced developer or they have reached a point of strategic growth.

Particularly at the start of this process, working with an external software developer can be a great way to support your new internal team, freeing them up to focus on core business needs.

Team players
Whilst the best talent can bring significant benefits to your business, they need to be team players. I would personally take three junior developers on a starting salary, working in a team; than one senior developer at three times their salary, left to their own devices.

If you’re starting with a junior developer, then consider hiring them straight out of university, before bad habits set in. If you’re looking for a more senior position, then build a relationship with your software developer or recruitment consultant so they understand your business needs.

The freelancer versus established staff
Depending on your objectives, directly employing contractors can be both costly and a continuity risk. Employing an established member of staff will require an investment in payroll and infrastructure, but over time they will certainly be cheaper and hopefully more loyal. Consider 6 month probation periods and whether the individual has additional skills, such as social media or marketing, which mean they can pick up other roles within a smaller team.

It is one of the key advantages of working with a specialist software development firm (as opposed to contractors), in that a developer behind the scene may change but you still have a single point of contact delivering results on time and on budget.

Conclusion
Hiring the right person for the right job increases productivity and avoids having to deal with non-performers down the road. Experienced managers have job specifications accounting for specific short-term priorities and long-term organizational objectives.

In a realistic business setting, not everyone is busy all the time. If you hire a developer with secondary skills; you can get your development done in-house while having support on hand in other parts of your business- when you need it.