Pages

Powered by Blogger.
 
Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts
Thursday, May 26, 2011

5 Tips for Offshore Software Development

As a business owner or manager, the decision to opt for offshore software development can be difficult. As anyone who has experience knows, there are advantages and disadvantages to outsourcing software development. How then, do you balance the risks and rewards and come out on top? Here are five tips to ensure that you receive an excellent return on investment:

1. Complex project management experience. When selecting an offshore software development company, ensure that they have extensive experience in complex project management. The company's internal team should run like a well-oiled machine, and they should have longstanding relationships with their own subcontractors.

2. Specialized knowledge and expertise. The most agile software development companies have an extensive network of specialists. These specialists may not be on the company payroll (which is why the company can offer you significant cost savings), but they can be depended upon to complete the necessary tasks on time and within the budget.

3. Knowledge of your industry. In theory, offshore software development companies should be able to perform custom software development for any type of business. There will be less of a learning curve, though, and greater chances for success, if the company has knowledge of your industry or a related industry. For this reason, ask for referrals and determine if the projects the company has managed are similar to or in alignment with the goals of your project.

4. Delineate areas of responsibility. Chances are, you're considering hiring an offshore software development company because you don't have the in-house expertise to get the job done and know that it is more cost-effective to outsource the project. Nonetheless, you will need to actively participate in a needs assessment and at various benchmarks throughout the life of the project. By creating a clear delineation of areas of responsibility, you will have a clear understanding of the number of staff hours you need to devote to the project, and plan accordingly.

 5. High standards. Both you and the offshore software development company you choose should adhere to high standards. Aside from the talent of the technical experts involved, successful custom software development depends upon rigorous testing. The most dependable companies use the highest industry standards in testing each aspect of the products they create so that you receive a product that is ready to implement.

Essentially, the most successful offshore software development companies are competent and flexible, and see their role as an information technology partner who solves your software problems, supports your team, and manages your projects from beginning to end. When you choose such a company, you can rest assured that you will receive an excellent return on investment.

Friday, May 20, 2011

How to Make Offshore Software Development Work for You

Offshore software development can be a dream come true. Here's how to make it work for you....
If you're the owner of a small- to medium-sized business, you may have toyed with the idea of outsourcing your custom software development. You may have even taken the plunge and hired offshore freelancers in an attempt to get your information technology needs met while saving money. Unfortunately, many business owners who have tried outsourcing software development have had negative experiences. There may have been language barriers, insurmountable time zone differences, mismatched skill sets, or missed deadlines that caused innumerable headaches and cost overruns. As one executive ruefully admitted, "We were penny wise and pound foolish."

It's two years later, and the same executive now understands the secret to successfully outsourcing software development - and is glad he didn't give up after the first attempts at outsourcing failed so badly. When did the tide turn? When he started using an offshore software development company that, in essence, acted as an expediter. In other words, he contracts with a German company that in turn works with IT professionals and companies around the world to produce applications that are tailor made to his specifications. Because the German company can call on experienced IT professionals worldwide, it can perform agile software development without breaking a sweat.

In turn, the German company carefully cultivates relationships with professionals who have a depth of knowledge in their particular specialty. In this way, the German company doesn't have a large staff with superficial knowledge, but rather can draw on the expertise necessary for individual projects. At the same time, it ultimately controls all aspects of each project, and ensures that deadlines and quality standards are met.

The executive touted the company he worked with as "forming the bridge between our company and the technical staff that develop our software." By using a company with an efficient infrastructure, he is able to avoid the typical problems and risks associated with offshore projects - problems that he had experienced in past years. He appreciates that the German company can fulfill virtually any request, whether it is for consulting and training, business analysis, systems architecture, software development, or design. He is also thankful that he doesn't have to deal with the individual programmers and that he doesn't have to find someone to stitch all of the pieces together. "Without exception, we receive software that has been extensively tested, and is bug-free and ready to deploy," he said. "We get all of the benefits of offshore software development without any of the hassles."

Unless you have a large IT department that can design the custom software that your enterprise needs - and today's business environment makes that impractical for most companies - you have to rely on people outside of your company. The most cost-efficient and effective way to accomplish this is through a fast and reliable offshore software development company that will provide you with a turnkey product that has been extensively tested.


Thursday, May 19, 2011

How To Block Direct Image Linking Using .htaccess

Most of us have a specified limit to the amount of traffic our web servers will handle for us. That limit seems very generous – until you start looking at image downloads and the bandwidth required. A few dozen users downloading an image – that's one thing. But what if you have an image that dozens of other websites like?

Worst-case scenario: suppose you run a site that gets hold of a picture taken by an Iraqi soldier of an incident that gains a lot of media attention. And...
Most of us have a specified limit to the amount of traffic our web servers will handle for us. That limit seems very generous – until you start looking at image downloads and the bandwidth required. A few dozen users downloading an image – that's one thing. But what if you have an image that dozens of other websites like?

Worst-case scenario: suppose you run a site that gets hold of a picture taken by an Iraqi soldier of an incident that gains a lot of media attention. And suppose you have the exclusive rights to that image. You want to sell it, of course, not give it away, so you don't post it as a freebie. You may have a downloadable version that others can take away to post on their own website, generally with a link to your site. But your original image is reserved for your use only.

Here's the problem. Webmasters, often amateurs not really understanding why what they are doing is harmful, want to deliver the best possible image to their own readers. So instead of downloading your free file or linking to your site, they embed a link in their own page that downloads your picture, and only your picture, as part of their own website. This is easy to do; all you have to do is use the image link straight out to the other website.

With that excellent and lucrative image referenced above, you may have blogs on both sides indexing you; you may even have news sites or image sites indexing you. How much bandwidth can your site take before it exceeds your monthly limit? Chances are, even a medium-case scenario is going to turn your site into a DNS instead, and you will lose viewers and site ranking while you are unavailable. Not worth posting that great picture anymore, is it?

But you do have another option: the .htaccess file. This works primarily in Apache servers; if you're not certain what you've got, call and ask. Because not all systems will allow them, and some can even be damaged by improper .htaccessing, you should contact your server administrator before you upload one, anyway.

What Is .htaccess?

.htaccess is a type of file that has, for years, been used to restrict access to protected web pages or areas, such as error pages and password-protected directories. You create it using a text editor such as NotePad or SimpleText, and then save as plain (ASCII) text. Upon saving it, the file extension needs to be changed from .txt to .htaccess – and the rest of the name needs to be left off. Your file should be named nothing except for .htaccess. Not file.htaccess. Just .htaccess.

If your text program insists on appending the .txt, you can right-click the file anywhere you normally open it and select Rename to remove the .txt. If your computer system does not show file extensions, look up how to make it show them! Alternately, telnet and ftp programs will also allow you to rename files and remove extensions.

Creating .htaccess Files

Your first step in creating this file should be to open your text editor and save an empty page as .htaccess. Turn off your word wrap function. .htaccess files are intended to be single-line commands, and a word wrap can throw this completely off and make your file unusable, either by breaking lines in the wrong place or by putting in unwanted characters when it's uploaded.

When you upload an .htaccess file, it should be encoded as ASCII, not binary. CHMOD the file to either 644 or (RW-R—R--) so that the server can use it but a browser cannot; readable .htaccess files can compromise your security by allowing hackers to figure out what you have protected and where the authentication files are. (You can also prevent this problem by putting your authentication files above the root directory so that they cannot be accessed via www.)

An .htaccess file affects the directory it's placed in as well as any subsequent subdirectories; if you have files everywhere you want protected, you can put the .htaccess file in your root directory. If you only want to protect your images, you can put it in your images directory alone. The closest .htaccess file to any given directory, reading up the directory tree, is the one that is applied to that specific directory. Try to use the fewest number of .htaccess files possible; redundancies can cause an infinite loop, which is bad for your site.

Preventing Hot Linking

The most important thing you want to do with an .htaccess file is prevent hot linking of non-HTML objects like images and movies. Hot linking is often referred to as "bandwidth stealing."

Your .htaccess file will disallow hotlinking; instead of the image your thief is trying to use, they'll get something else, like a broken image symbol or content you specify (angry men are popular).

Your .htaccess file content should read as follows:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]

The first two lines you don't have to modify in any way. However, the third line's http://mydomain.com needs to be modified to reflect your URL. The fourth line in the example is set up to deny use of GIFs and JPEGs; you can add, using a pipe (|) separator, any other file type you wish.

If your server is set up to deliver alternate content (call your server administrator and ask), you can add another piece to the fourth line of code in the .htaccess file to do this:

RewriteRule \.(gif|jpg)$ http://www.mydomain.com/angryman.gif [R,L]

This delivers an angry-man image you have in your directory; just as above, make certain you change that domain name to the proper one.


Sunday, May 1, 2011

Can Software Get It Right For Business Owners And Professionals

Software has achieved the status of deity over its short fifty or so years of life. Software is all embracing in that it invades everyone’s life in some way or another

Software has achieved the status of deity over its short fifty or so years of life; to such an extent that we pray to the altar of the software industry and pay homage to the organisations that invoke incantations to conjure up new commodities. In much the same way that the Egyptians constructed temples and revered them in the name of their gods, so we wait for the next sign that is passed down from on high.

Software is all embracing in that invades everyone’s life in some way or another, and as a consequence it is too huge a subject for any single organisation to completely encompass. There are notables who dominate a certain niche, but the industry is symbiotic; needing software users, Original Equipment Manufacturers and Software organisations feeding off each other to keep the snowball rolling and growing.

From the outside it would appear that these esteemed organisations have a great deal to think about. It would seem that they employ the most erudite of people, who ponder endlessly on the software that the organisation specialises on. In my fantasy moments I visualise a library-like environment with software developers sitting with a chewed pencil between their teeth and a furrowed brow that is deep in contemplation. I visualise the silence broken by footsteps and a whispered voice, deliberately muted to avoid any disturbance.

And then I awake, and realise that reality is somewhat different. Most software projects start in mushroom mode, with no one knowing what has really been sold, or alternatively what shifting market is being addressed. It is rare to include the customer in early deliberations (if at all) because inevitably the salesman has sold the organisation as being ‘market leader’ or ‘best of breed’. It would be difficult to turn around and say to the customer ‘excuse me but how do you do this particular activity’, or ‘I don’t know how this works’.

Thus the Thames barrier is raised between the customer (including the end user) and the software supplier, and a game is played out with the developers screaming for detail, and the legal beagles parrying each other. Perhaps without this facade no one would ever win a contract, but I would personally prefer to work with someone who is honest about their limitations, and who will work with you to arrive at the best possible solution to the problem.

All products evolve, no one ever gets it right first time, but we pretend we do. Whilst I agree that it takes a fair amount of trust between software developer and customer it is surely better to work together to get through the cycle of evolution than to build a glass wall which we fight over.

The customer does need to have some veto over what is happening, since (heaven forbid) there are those who will milk such situations for what they are worth, but if the product is going in the right direction, you will surely get a better outcome.

Better Software Foundations

It is all too often the case that Software development organizations and their customers make the same mistakes over again.
I visited the ruins of a Roman settlement, the other day that was set in a lovely valley in the middle of an island.

The setting was idyllic, sheltered from the winds and not too far from the main market town, it seemed an ideal spot to farm and bring up a family.

Its history was thoughtfully provided on signs around the ruins of a substantial dwelling, which had been expanded in Roman times to include a hot and cold bathroom and mosaic floors. All of this was very attractive and a considerable investment for the landowner. But the settlement was abandoned, and it occurred to me that there had to be a good reason since it was clear that someone had put a lot of effort and finance into their dream.

I wondered if Vikings, who were known to be active in this area after the Romans left, had attacked it but there were no signs of charred brick work or the aftermath of battle.

Looking around another sign revealed the problem. There had been more than one attempt to settle the area, but the land formed a natural point of drainage for the hills around, and successive buildings had each eventually succumbed to subsidence.

I was left in no doubt that the buildings were of a good quality and that the builders were competent at construction, but clearly it had taken a few generations to work out that this was not a suitable site for construction. If we really wanted to settle this place now we would drive piles deep into the ground to overcome the subsidence.

The point that this drove into my mind was that of developing software. It is all too often the case that Software development organizations and their customers make the same mistakes over again. If the foundations are shaky then there is no point in building, but with a little forethought someone will could solve the problem and provide a safe way of delivering a good foundation.

The biggest mistake that organizations make is to rush to cut code before they understand the problem they are solving. That doesn't mean you have to be complacent and that sitting around in a few meetings will solve all your problems.

What should be done is: -

Ring fence what you know.
Ring fence what you don't know.
Make sure you are developing the right product.
Build the software that you know will not change.
Check that what you are building is what is wanted.

Often the customer just doesn't know exactly what they want, so you need to involve them in the development process. The earlier they get to know the product then the more likely they are to buy into the solution.
Having said all of that..

Code should be built where it enhances the understanding of the problem both to the customer and the developer.

Updates Via E-Mail

Labels