Archive for May, 2013

What every web developer should know before going for an interview

May 9, 2013

It is very frustrating to interview developers for web development roles and find they don’t understand the basics of the technologies they will be using. All web developers should understand the following.

HTTP

If I had $1 for every person I have interviewed who didn’t understand the difference between GET and POST requests I would be very rich.

Every developer should understand the HTTP protocol and as a minimum be able to explain the differences between GET and POST and any limitations of GET.

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

HTTP status codes

Every developer as a minimum should understand the core HTTP status codes, e.g. 200, 301, 302, 400, 404, 500, etc.

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

MIME types

They are fundamental to HTTP and developers should understand them. Bonus points for understanding multipart messages

http://en.wikipedia.org/wiki/MIME

Cookies

Cookies are the most common mechanism for maintaining state, storing information client side and tracking users. Developers should understand the differences between, session cookies, persistent cookies, first party cookies, third party cookies, HttpOnly cookies and secure (HTTPS) cookies. Developers should also understand when cookies are sent, which part of HTTP request and responses they are stored in. They should also understand that a cookie can be sent with GIFs, etc., not just HTML.

http://en.wikipedia.org/wiki/Http_cookie

Caching

Developers should understand the following HTTP headers that control caching

  • Cache-Control
  • Pragma
  • Expires
  • ETag

UTF-8

Another fundamental that developers should understand is UTF-8. Many developers I interview think the 8 in UTF-8 represents 8 bytes. When I tell them it is 8 bits this has one of two reactions

  1. they are puzzled as to how 8 bits can store so many characters.
  2. they sit there struggling to work out how many characters can be represented with 8 bits.

http://en.wikipedia.org/wiki/Utf-8

Joel has a good article here
http://www.joelonsoftware.com/articles/Unicode.html

JSON

Developers should be able to explain the differences between JSON and XML and explain when it is best to use one over the other.

http://en.wikipedia.org/wiki/Json

XML

XML is a big subject but developers should have a good appreciation of it.

http://en.wikipedia.org/wiki/Xml
http://en.wikipedia.org/wiki/XML_Schema_(W3C)
http://en.wikipedia.org/wiki/Document_Type_Definition
http://en.wikipedia.org/wiki/Document_Object_Model
http://en.wikipedia.org/wiki/SAX_parser

Web Services

http://en.wikipedia.org/wiki/Web_services

REST webservices

http://en.wikipedia.org/wiki/Representational_state_transfer

WSDL

http://en.wikipedia.org/wiki/Wsdl

SOAP

http://en.wikipedia.org/wiki/SOAP

SQL

Developers should be able to write examples using each of the following

DISTINCT, UNION, MAX, COUNT, TOP/LIMIT, WHERE, LIKE, GROUP BY, HAVING, ORDER BY, JOINS (inner, left, outer), Sub queries and null test

They should also be able to answer the following correctly.

  • Can PrimaryKey’s be integer/number only or can they be strings, dates, etc?
  • Can a PrimaryKey be made from a single column only or from multiple columns?

Bonus points for understanding what is wrong with the following SQL

Assume stored procedure with input1 parameter
LastName is indexed column.
select * from customer where trim(LastName)=trim(input1)

Design Patterns

At least an appreciation for what design patterns are

http://en.wikipedia.org/wiki/Design_Patterns

Advertisements

Getting a competitive advantage from offshore IT

May 9, 2013

If you have IT staff in the, US, UK, etc., the cost of, recruiting, paying, providing office space and retaining IT developers is very high.

Recruitment agencies in the UK want anywhere from 15 – 22% of the sign on salary.

According to various websites the average Java developer in London is paid £60,000 net not including bonus, national insurance, pension, etc., making the true cost of employment significantly higher.

Office space too is amongst the most expensive in the world.

If your competitors staff are located onshore you can get a competitive advantage by locating some or all of your IT staff offshore, e.g. developers, testers, support, devops, etc.

Why can this be a competitive advantage?

If you can halve your IT staff costs by using offshore resource the money goes straight to the bottom line or can be spent elsewhere, e.g. sales, marketing, etc., or better still recruit twice as many IT staff so you can process your backlog quicker and deliver faster than your competitors.

A short while ago I was talking to the CEO of a SaaS CMS (Content Management System). He was complaining that they have an 18 month product backlog which was restricting sales and that they meet every week to prioritise the backlog. All their staff were based in London. By offshoring they can recruit many more developers whilst maintaining the same costs and yet win more business.

Just recently at TechHuddle we recruited a dedicated team of experienced PHP developers for a customer in 6 weeks. That was 6 weeks from the customer signing the contract with us to the team starting work. The customer had full control over everybody recruited.

Choosing an offshore IT location

May 9, 2013

When choosing and offshore IT location it is important to take into consideration the following

Cultural Affinity

One of the most important factors in my opinion is can the people say “no” and will they raise issues, e.g. “it can’t be done that way” or “we can’t do it by then” or “if we do it that way it will have the following consequences”.

Do they have similar tastes in humour, films, music, sports, etc. It’s surprising how much of your language and culture is picked up from these.

Language

Are sufficient resources available who are competent with your language.

At what age do their schools teach your language.

Are university courses taught in your language.

Availability of talent

Are there sufficient resources with the level of experience you are looking for and what is feeding the talent pool, e.g. universities, colleges, etc.

Staff churn rate

What percentage of staff are likely to leave each year.

Employment model

Are staff employed as contractors or permanent members of staff. It is common in some countries, e.g. Ukraine, Serbia, etc., that staff are employed as contractors to reduce the cost of employment. If the governments crack down on this practice in the future you could be looking at a significant cost increase.

Cost of staff

Have you factored in all employment costs, e.g. recruitment, gross salaries, office, social packages, social events, insurance, legal costs, payroll, accountants, etc.

Is the government giving special tax breaks that could be taken away.

See Employment model.

Cost of travel

Have you factored in costs of, flights, hotels, taxis, trains, food, insurance, visas, etc. These can be significant especially when travelling long distances.

Getting there

Ideally you want a location that is quick (less than 3 hours away) and easy to get to as you or your staff will likely travel there fairly frequently. I would recommend a location with direct flights and a choice of airlines that fly at different times of the day. You want to avoid this type of travel experience

Ideally you want a location that has freedom of travel, e.g. visa waiver

Hygiene

When travelling to India with one of my staff he was hospitalised with some kind of severe food poisoning from a 5 star hotel. He was treated exceptionally well at a private hospital but required a week off work when he got back home. One of the worst experiences of my life was phoning his wife and telling her that her husband was in a comma like state.

Inflation

Is staff salary inflation stable. Don’t forget to factor this into your cost model.

Stability

Is the country both economically and politically stable enough.

Currency

Do you share a common currency or is the currency relatively stable. If there are large currency fluctuations it can materially affect your costs.

IPR (Intellectual Property Rights)

Does the country provide sufficient IPR protection.

Time Zone

0-2 hours difference is best. It gets more challenging above 2 hours but the more autonomous the teams are the easier it is.

Do the countries implement Daylight Saving Time and do these change at the same time.

The following is a handy resource for checking times www.timeanddate.com/worldclock/

Holiday

How many personal and public (including religious) holidays and what is the level of overlap.

Laws

Does the country have a sensible legal system.

How we can help

We founded TechHuddle to help companies chose the best offshore IT location and make the process of setting up and managing offshore IT staff as simple and hassle free as possible.

What is the difference between offshoring and outsourcing?

May 9, 2013

People are often confused about the differences between offshoring and outsourcing. In my opinion they are as follows.

Offshore

Offshoring is the practice of moving certain business activities to another country often to a foreign subsidiary. For example a company might setup an offshore IT team in India or Eastern Europe to develop and maintain their backoffice systems or website.

Proponents of offshoring cite greater control, flexibility and transparency over outsourcing.

The term is often used by people incorrectly to refer to offshore and offshore outsourcing.

Nearshore

Nearshoring is a form of offshoring albeit much closer physically. For example a company in London sets up operations in Eastern Europe and India. Eastern Europe being less than 3 hours travel from London is nearshore whereas India being 8-10 hours from London is offshore.

There are other benefits including but not limited to

  • Time zone difference is typically 1-2 hours
  • Cultural affinity, e.g. humour, music, sports, education system, etc.
  • Freedom to travel, e.g. visa waiver
  • Laws, e.g. if source and destination are part of Europe
  • Currency, e.g. if source and destination use the same currency

Outsourcing

Outsourcing is the practice of hiring an external organisation to perform certain business activities whether they be in the same country or a foreign country.

Offshore outsourcing

Offshore outsourcing is the practice of hiring an external organisation to perform certain business activities in another country. For example, outsourcing IT development of a website in PHP to a company in India.

Critics of outsourcing often cite lack of control, flexibility and transparency as issues.

How we can help

If you would like to learn more about offshore IT and nearshore IT please visit our website www.techhuddle.com

New Office

May 8, 2013

TechHuddle‘s dedicated offshore IT teams model is proving very popular with startups and established companies as a way of cost effectively increasing resources whilst still retaining full control. We have expanded so quickly we have had to move to a new office.

We have the entire 7th floor of this brand new building completed in early 2013.

View from the office balcony. Yes there is a ski resort on that mountain. Its 30 mins from the office. You can night ski there.

Metro (underground) is 100 yards from our office so staff can get to work cheaply and quickly.

One of several shared meeting rooms. This being the larger. All offices and rooms are fitted with modern air-conditioning units.

TechHuddle chill out area complete with large LCD TV, sofas, view of mountains and balcony.

Example of one of our customers dedicated teams. Larger offices are available. Each office has its own balcony.

TechHuddle staff hard at work.