Sunday, April 3, 2011

Outsource Software Development - Cut Your Development Costs

Outsourcing has moved away from the early days of specific application development to the whole gamut of designing and developing total custom software programs of advanced complexity. Development outsourcing is now exploring new territories which include a spectrum of areas like financial services, retail services, transcription services, pharmaceuticals and e-governance.

Global giants benefit most

Outsourcing software development has fast-tracked the world toward IT enablement and there is scarcely a country on planet earth which it has not impacted in some way. This increasing collaboration has blurred geographical boundaries and made the world a global marketplace. Driven by the proven and distinct advantage in software development outsourcing, most industry giants have established full-fledged offices in developing nations. To name a few - Microsoft, Google, HP, SAP, Intel, Sun, Oracle, IBM, Dell, Apple Computers... the list goes on.

The fact that many of these are rapidly expanding their offshore facilities is testimony to the benefits in quality of software development obtained and the efficiency of their outsourcing establishments. Of course the primary benefit is a quality product at a significant cost benefit. Initially there were apprehensions about quality because of differences in perception, culture and working practices.

But these have long been successfully overcome with closer communication in a collaborative environment and better supervision. A successful philosophy is the smooth integration of onshore local project management with an offshore application development team ensuring constant dependable communication to produce highly competitive products.

Benefits of outsourcing

To summarize, software development outsourcing provides the following benefits.

- Quicker development and start up
- Reduced cost
- Reliability
- Better performance
- Increased productivity
- A well-managed e-business infrastructure
- A more efficient backend environment
- A competitive edge with no or little capital investment

Outsourcing is here to stay

These are sufficiently compelling reasons to justify outsourcing software development where the results have more than supported such decisions. Many experts believe that outsourcing, already here to stay, is poised for enormous growth to irreversibly change the way business will be done in the future. The benefits that have accrued to the both parties have far outweighed inherent pitfalls.

Saturday, April 2, 2011

An Overview Of Important Web Programming Languages

Introduction

It all began with Tim Berners-Lee at CERN and the good old HTML. CERN, which is now mostly famous for its Large Hadron Collider, has recently gained major publicity by attracting the attention of frivolous news chasing the possibility of a black hole. I think even cooler than a black hole marking the end of humanity, is the virtual world that has largely impacted her evolution. The internet happened partly because of the outcome of CERN's research and now we have a world beside the real world, functioning in parallel and becoming the flesh and blood of a terrestrial specy who was one day drawing on cave walls. HTML later became lingua franca of a world that was becoming bigger while making our real world smaller and smaller.

HTML is the basic language understood by all WWW (World Wide Web) clients. It can execute on a PC under any operating system such as Windows, Mac, Linux, or on a Unix workstation. However, it is limited in its computational power intentionally because it can prevent the execution of dangerous programs on the client machine. Web programmers, who are now much more sophisticated in their applications, provide different type of services to a growing demand of interactive content. Today, most users have competent client machines which are capable of doing much more than HTML allows. Fortunately, there is steady development in the field, and today the number of capable applications is expanding. We can easily build database-driven websites with various scripting languages such as PHP, ASP.NET, JSP, Perl, Cold Fusion and etc. This gives programmers a head ache. They generally fall into two main groups - proprietary and open-source, both have their own share of the market.

The languages mentioned below are all attempts to create the "ideal" Web programming language, which is usually done by extending and restricting existing languages. Web programming languages have a variety of ancestors: scripting languages, shell languages, mark-up languages and conventional programming languages. This document attempt to present a short introduction of the most important languages being used in Web today.

Characteristics Of Web Programming Languages

There is a diverse range of languages available and suitable for Web programming. There is no reason to believe that any one language will completely prevail and monopolize the Web programming scene. When you are developing a simple website, the question of which programming language and framework to choose can come up for things such as contact submission forms, photo galleries, jQuery Slider or any other dynamic content components that is generated by the web-server. When you are shopping for a web designer or web developer, you will hear them say "We program in PHP" or "We develop in ASP.NET/C#" and you might wonder what they are talking about and which one is better than the other.

As you can see, there is a fairly good selection of languages for web developers to choose to develop their web applications. There are many more languages available, some of them more specialized such as VRML, but discussing them is out of the scope of this article. Most developers have a working knowledge for at least a few of the frameworks, but tend to specialize in one.

New languages and language extensions are being developed to increase the usability of the Internet on a daily basis. Here we will look at some of the important languages that have shaped the Internet over the years and give a brief overview of each one of them.

ASP.NET - Active Server Pages

The.NET Framework is the infrastructure for the Microsoft.NET platform. It is an environment that can be used for building, deploying, and running Web applications and Web Services with easier and quicker programming.

ASP.NET runs inside IIS which comes free with Windows servers. It enables scripts to be executed by an Internet server. This web development technology is built into the.NET Framework and utilizes full featured programming languages such as C# or VB.NET to build web applications. I personally like C# very much and I think it is a great language to code with and extremely easy to use.

ASP.NET drastically reduces the amount of code required to build large applications. With built-in Windows authentication and pre-application configuration, security and safety are guaranteed. But the main disadvantage is that ASP.NET applications can only run on Windows platform.

PHP

As an open-source alternative, PHP is steadily developed by an active and very dedicated international community. This is a great example of strength in numbers. Another strength of PHP is of course its low costs. Since it is open-source software, PHP can be compiled and customized for any operating system. In fact, there are always pre-compiled versions available for your OS of choice. In an open, collaborative and non-hierarchical environment, suggested improvements can be adopted quickly. You can count on its fast paced updates and improvements more than other languages.

I think PHP is a good investment because it is not going to disappear anytime soon. It is used by a very large group of fantastic programmers who come out with amazing websites combining PHP with other technologies. Also it is a good idea that if you have invested in an online business and you have lost one of your precious programmers, it will be the easiest to find a replacement programmer.

Java/JSP

Developed by Sun Microsystems, Java is a very powerful object-oriented language. JavaServer Pages (JSPs) are web pages with embedded Java code. The embedded Java code is executed on the server, then the page is returned to the browser for display.

Unlike ASP, JSP is a lot less platform-specific and it doesn't rely as heavily on Microsoft for support or performance improvements. Java programs for Unix can be made to run on Windows or the Mac system with little or no effort. Many development projects are taking place on the Java platform and it is getting richer by day.

You should not confuse JSP with Javascript. Note that Javascript is a programming language that runs on a web browser and does not require any server software. Since all execution takes place on the browser, Javascript is responsible for most of the interactivity on a web page. Image change or text color change on mouseover, creating mouse trails are all possible through Javascript.

Perl

Perl doesn't offer the graphics and security desired for Internet programming on its own. However, those features are now available trough Perl/Tk. Perl/Tk which extends Perl with access to the Tk GUI library and makes it fully available for web programming.

Perl is an open-source language that is both mature and powerful. It offers web developers every tool they need to create dynamic websites. Like other open-source languages, it benefits tremendously from ongoing development, and the support offered by its international community is amazing. Perl is particularly good for creating single websites quickly, cleanly and elegantly. Its major weakness is that it may be unnecessarily complicated. If you are not comfortable switching gears between different syntaxes, then you should choose from one of the other alternatives.

Python

Like Java, Python is a full featured, object-oriented language developed, but extremely easy to use, by Guido van Rossum at CWI in the Netherlands. Similar to almost every other cool language, it is initially developed in a Unix environment but is available on PCs and Macs, and applications are portable across platforms. Python's syntax resembles C and C++, but doesn't stick too closely to those languages.

Python offers several portable GUI libraries. Python is simpler and easier to program than Java and very suited for Internet programming.

ColdFusion

Built by Allaire in 1995, purchased by Macromedia in 2001 and finally ended up in the hands of Adobe in 2005, This ColdFusion might not be as cool as cold fusion nuclear energy, but it did introduce an exciting technology which hold an active developer community together up to this day.

ColdFusion enables programmers to create dynamic and database-powered Web applications. With its own markup language (CFML) and tags to connect to the database, it is relatively easy to create forms and dynamic pages. Using ColdFusion, Building websites can't possibly get easier! You can deploy powerful web applications and services with minimal training. It provides an application development platform suitable for network software. It is now at version 10 and supports most major databases from Oracle to Microsoft SQL Server.

Ruby and Ruby on Rails

Ruby is a dynamic, object-oriented and open-source programming language. It has a very clean syntax which makes it a lot of fun to use. Python is ease to learn and use, and closely enjoys the Perl's pragmatism. Ruby's simplicity, productivity and ease of use has spread it usage very quickly in a matter of few years.

Ruby on Rails is its open-source Web application framework written in Ruby which follows the Model-View-Controller (MVC) model. It is a highly-productive and can empower industrial-strength web applications. It scales from the simplest expense tracking application to full-featured applications with thousands of users.

Finally

Web is the summa summarum of all these languages. There is no single application that does all the different things, in every different way and according to all the programmers need. Because of the diversity of programming tasks, choosing a language has become a critically important step. It has to be decided upon after through analysis of a project and considering every aspect of your requirements.

Esfandiar Amirrahimi is Web Developer and content manager at PerMont Soft Montreal. He completed his undergraduate program in Computer Science/Artificial Intelligence at Glasgow Caledonian University with First Class Honors. He then moved to Montreal to follow a Master program at Concordia University and he is currently working on Web-based Software Development projects at
http://www.permontsoft.com/

Article Source: http://EzineArticles.com/?expert=Esfandiar_Amirrahimi

Friday, April 1, 2011

How to Practice for a Java Technical Interview

The most tensed and perhaps the most feared round during the recruitment process of an IT company is the technical interview round. Just imagine, you've just cleared the written round and just when you were about to get happy your mind if clouded with all the random questions an interviewer might ask you. At that moment you might not know the answers to all of them, but if you don't know the answer to the questions of the interviewer then there is a very bad news for you, you would most probably be rejected.

A technical interview is not a tough nut to crack, provided you get your basics right. A technical interview can comprise of questions from any subject in your curriculum. Some of the hot interview questions domains include Operating systems, Database Management, Networking, Software engineering etc. But the hottest of them all is just one tiny little word, Java.

The interviewer might not know some of the above mentioned subjects, but he/she would definitely have a good knowledge of java, knowledge enough to give you hard time during your interview. During our java technical interview, you would not only be judged your answers, but you would also be judged by your way of answering the questions. They don't have to be flukes or guesses; they'd have to be solid concrete answers. The trick lies in focusing on the basics. The IT organizations believe that if a candidate has a decent knowledge of the Java language is also familiar with the java working environment then he/she can be trained easily and effectively to suit the company's needs. Java is the most worked upon platform in the IT industry these days, so candidates having an impressive knowledge are the most sought after of the lot.

A java technical interview can be broken down into two segments. The first segment can be core java interview questions, and the second one can of the advanced java interview questions. The normal trend is that the interviewer would move to the advanced java interview questions only after you are able to impress him/her with your responses to the advanced java interview questions. All you have to do is get your basics right and all the tough java interview questions would become the easiest java interview questions.

Core java interview questions can be like

1. What is System, out and print in System.out.print?

2. When can an object's finalize() method be invoked?.

3. What is WeakhashMap?

Some questions can also include code snippets, questions like:
public class GeekTryCatch {

public void doSomething(){

int iCount = 10;
int result = 20;
try{

for(int i=0; i<= 10; i++){

result = i/iCount;
iCount --;
}

}finally{
System.out.print("Result "+result);
}
}

public static void main(String args[]){

GeekTryCatch geekTryCatch = new GeekTryCatch();
geekTryCatch.doSomething();
}

}

Will the above code compile and something be printed in the Result?

Such questions are only put up to know whether you are familiar with the java source code or not

There are certain web portals online having a collections of advanced and core java interview questions and answers which might help you to prepare before your technical interview.