Category Archives: Software Development

Choosing the programming language

Categories: Software Development | Tagged , , , , , , | Leave a comment

This is a funny story that happened in real life

Unfortunately, this story was heartwrenching for me.
I had a great programmer. He worked for a company that I had hired for many years. He knew my sites well, and there was another programmer who knew the site well too. In any case, these two software developers both knew ASP Classic. I thought that lots of people knew this language and that there was no problem. I was wrong.

He started with 2 years of experience
At the time one of the programmers was hired, he had only two years of experience. His salary was modest. He was a fast learner and accumulated up to eight years experience during the time I knew him. His salary went up, but not that high. The boss was a very sharp guy (I know him well). However, the boss didn’t scour the market looking for ASP Classic Developers (Programmers). He already had his two programmers and that was all he needed. The boss didn’t realize that the market value for someone as capable as his head programmer was a lot higher than what he was paying. We both didn’t realize this — until the programmer got offered DOUBLE his salary and promptly quit.

5 programmers later
That left me in a bind. I didn’t know who to hire for programming. I went through five different programmers until I found someone really acceptable (not perfect, but quite good). So, the plot thickens.

Translation to PHP or .NET?
As the head programmer announced his departure, he gave me some good tips. He said that I needed to recode my site into .NET because very few programmers knew ASP Classic these days. In just a few years, the world’s supply of ASP Classic Programmers had dried up. The boss couldn’t find anyone good to replace the leaving employee. One suggestion I got was to translate the entire site into PHP — the reason being that there are far more PHP programmers than .NET, and also far more .NET developers than ASP Classic.

Later I learned, that it is easier to translate the site to .NET, since you can do this little by little, module by module — and there are many modules. Imagine the complication of tranlating the site to PHP and launching the new version all at once. There would be 100+ bugs that would take half a year to build.

So, I decided NOT to translate the site. I voted for .NET programming simply so I could do the work gradually. I wanted to rebuild each module to much better specifications than before. I had learned that my old way of running the site had much room for improvement. Some of the older modules didn’t need to be used anymore, and there were many new functions that needed to be built.

The irony
After much shopping around for programmers, I found that not only is there a bad shortage of Classic ASP programmers, but in America, you can no longer get any programmer who has good skills and availability. You have to go to India or offshore no matter what the language is if you want more than a handful of hours per week of actual work. What I learned is that there are many Classic ASP Developers in India. The trick is finding them, and finding ones that I like. So, I didn’t need to rebuild anything — yet. Although, I eventually would have had to rebuild anyway, because even India’s supply of developers who know Classic ASP is a diminishing pool

Mixed-level software teams: a business model that works!

Categories: Software Development | Tagged , , , , | Leave a comment

I have talked to people at all types of companies. I know people who have one office and want another. I know people who work remotely. I know people who have an office in India and a sales office in the United States. All of these company structures are part of the bigger picture of what a business model is. But, I learned a secret from reading blogs and seeing who performs best in real life — and I am going to share this with you.

Bottom heavy
Typical companies in India are bottom heavy. They have lots of workers, but very few managers. Many workers are self-managing. This type of business model could work if you exclusively hire workers who are capable of doing a great job being self-managing. Most people are not self-managing, so I would avoid this business model.

Mixed teams — a winning idea!
But, companies with what I like to call, “mixed teams” seem to work optimally. They have a skill mixture in each team. Teams could even have replaceable members just as rickshaws all use the same parts which you can transfer from one rick to another in seconds. Imagine a team of five people. You have a project manager who is very seasoned, a mid-level worker, and three junior programmers. The grunt work gets done by the lower level workers. The planning and supervision gets done by the project manager. The more complicated work gets done by the mid-level employee. Brilliant and cost effective too! You are still getting cheap labor for the majority of the project paired with the superior thinking skills of a seasoned professional! But, there is more!

If the lower level employees get stuck, they have not one, but two seasoned people to ask for help. But, there is yet another even bigger problem that the mixed level model solves. It is very hard to hire higher level programmers in any country these days. They are systematically gulped up by big companies and seldom available. It is easier to hire inexperienced people since there are so many of them and nobody really values them. So, what is the strategy? If your high level programmer leaves the company after a few years, your mid-level employee will be experienced enough to promote to that higher position in many cases. Internal hiring solves this huge problem of a worldwide shortage of experienced programmers.

You might also like:

How to make sure that the software company you hired will deliver!
Click here

How to test a software company
Click here

A new pay scale lifecycle strategy for India’s younger IT workers

Categories: Software Development | Leave a comment

I just got off the phone with one of the most intelligent managers from India who I have ever talked to. He had visited 25 countries in his life and had decades of experience working for very respectable larger U.S. companies. He and I commiserated about how helpless we felt that the good programmers and IT workers almost all seemed to get poached or eaten up by the larger companies out there.

Trying to find good programmers is hard when they get poached.
As a person who relies on software outsourcing companies for tasks such as PHP, .Net, VB, Java, etc., it is always a problem to find experienced programmers. There are experienced workers out there, but their level of availability is always very low which is a huge problem if you need to get something done. The less experienced workers are always available, but seem to get stuck on programming tasks the minute there is any unexpected complication. The most efficient way to deal with this dilemma is to have the more experienced workers watching over a dozen less experienced workers. The more experienced worker should ideally not do any work himself other than to help the others, or fix their errors, test them, and guide them. But, what can you do if every worker you’ve ever had leaves the company after working exactly five years because a bigger company bought them out so to speak?

A job at a large company helps you get married in India
In India, the culture is different than other countries. Marriage is a big deal in India. To get a good match, you need to come from a good family, your dad needs to have a government job (as that was fashionable a generation ago,) you need to have a software or engineering job for a large company (preferably a JOB at a MNC that does BPO and will give you good PAY.) Even if employees have to take a pay cut to work for a larger company, they often will simply because the status of the bigger company will help them get married and impress those in their social network and family. Additionally, the prospect of foreign travel or working overseas is possible in larger companies like Sun, Tata, Infosys, Wipro, etc. Smaller companies typically offer a dead-end with no room for advancement — or at least that is the perception. In countries in Eastern Europe, it is more common for experienced programmers to be willing to work for smaller firms, but not in India.

The solution is a pay-grade change and status change at smaller companies.
Since the five year mark is when most decent employees get inducted by larger companies, small companies need to create a system offering an incentive not to quit to join a larger company. Women also pose a problem as they have the biological habit of getting pregnant. So, incentives for what Americans call, “Planned parenthood” would help if it could get ladies to plan several years in advance when they want to get pregnant and leave work. My idea for incentives would be that employees should get smaller pay and smaller raises their first two years. But, starting at around three and a half years, they should start getting larger raises and their pay should go significantly up if they are any good. They should also know other older people who stayed at the company who are getting substantially higher than average pay. It might be worth it for the company to take a loss on senior employees just to set a precedent that those who stick around will be rewarded without question.

3.5 years — the raises should start adding up
The more sophisticated companies such as Google don’t like bonuses as much as giving regular raises every 90 days. It keeps people on their toes more. The raises could be slower the first 3.5 years, and then speed up from year 3.5 to around 7. Once an employee hits seven years, their raises could slow down a bit, but they would be getting paid a lot more than most other employees at similar levels in India.

International travel as a status benefit in small to medium Indian software firms.
For companies with 20-200 employees, it might make sense for them to send some of their employees overseas to meet with clients or even work overseas just for the status appeal. In India, status can make you or break you. If employees at the 5 year level feel confident they will be able to travel to Australia to have higher level meetings, they will be less likely to leave the company. Even if the meetings are not completely necessary, don’t tell them that. Make them feel like a star, and then your team as a whole will stick around for many more years. If Naran gets to go to Ireland on business, then Pratip, Prakash, and Prashant will stick around in anticipation that one day maybe they will be able to go on a prestigious business trip and feel like they are going somewhere in life!

Summary
My solution is very simple. Give people what they want when they want it and make it hard for them to leave you. You could have nice offices and better working conditions to keep people around as well. There are hundreds of techniques for getting your workers to stay. It is worth investing in this science of psychology, otherwise you’ll end up like the others with only inexperienced workers who can’t function under pressure!

joke:
How would you like your programmers?
Preferably seasoned & well done — and I would like them broiled, but not poached!

How to test a software company

Categories: Software Development | Tagged | Leave a comment

How to test out a software company!
 
If you have important projects, you can not put them in the hands of strangers without taking a huge risk. Interviewing companies will only let you know how well a company presents themselves, and background checking companies may get you inconclusive information.  One problem is that you have to give your FTP codes to new software companies, but what if they are not reputable?  What if they take two months to do a week of work after a lot of cracking the whip to get them to do something?  What if they won’t let your site function without paying them some unreasonable sum of money? It is risky hiring programmers.   Additionally, once a company has your FTP codes, it takes time to have server admin people change the FTP codes and send it to the new party.  Many things can go wrong and the process that should have taken a day or two took close to two weeks to have the new party able to login with the server codes. 
 
So, what can you do?
I interviewed many software companies.  The problem is that when you talk to the salesperson, they always put on a good front, so that you will feel confident about their company when they might not even be able or willing to work with you. Salespeople will tell you any type of lie to get you on board, and then once you are involved, you will be talking to the technical manager, and will never hear from the salesperson again. 
 
Lesson #1 – never believe anything the salesperson tells you — no matter what.
 
The technical managers will tell you what they can’t do, and will tell you all of the limitations, and will very happy to reject you as a client.  Also, technical managers typically do not like people like me talking directly to their programmers.  My projects are complicated, and without direct communication, we will have a mess that you can’t believe.  It is better if I am sitting side by side with the programmer during the tricky part so we can get it right the first time, but programming folks like to keep their clients as distant as possible — why?
 
Lesson #2 – dig by asking questions.. see if their staff is really in America or somewhere else?
Even if you are in India, you need to know if you are dealing with a real company.  Visiting them before you hire them makes sense. If you see a big office with dozens of very busy looking people, that is a good sign.  If it is a small office, and there are only a few people who look sluggish, or are absent a lot of the time — watch out!  If they are hiding their office and don’t want you to come — AVOID these people.   Many American companies have back office workers in Vietnam, India, China, or somewhere else, but want to charge an American price.  You might as well deal directly with India yourself unless that company is a great intermediary.
 
Lesson #3 – don’t believe a company that says they want you as a client
I was told by a few companies that they were willing to work with me as a client.  Many were anxious to set up interviews, but the interviews led to them asking me lots of questions and me not knowing who they REALLY were.  I only knew how they presented themselves.  I was flat out rejected by the most expensive company I interviews during the interview.  It was insulting, but at least they didn’t play games.  Another company said they wanted to work with me.  However, when I called for more information there were problems.  I could only get the information from Amanda, but whenever I called, Amanda was either out for the day, at lunch or at a meeting. This company refused to let anyone else answer my questions.  Finally after trying Amanda four times, I was told that I was not “A good fit” for the company.  I spent half a million in programming in the last decade. I’m not sure which part of half a million is not a good fit even for a fancy company.
 
Lesson #4 – Test them out on the phone
Many people at software companies are lazy and unresponsive by phone.  Call people and ask them to call you back and see what happens.  If they leave you high and dry now, you can rest assured that you will be left high and dry after you hire them and they have your FTP codes.  Call companies up and ask for information — see how fast they get back to you if at all.  Ask for an appointment to work on a small project to test them out.  See how long it takes them to call back.  Or, better yet, ask for the programmer to personally call you at a specific date and time.  Most programmers would not pick up a phone if they had a gun pointed at their head.  You can learn a lot by asking people to lift a finger and putting the ball in their court.
 
Lesson #5 – Have them do a small project
You don’t really know someone unless you have done activities with them. You can find out people’s quirks, and how cooperative or helpful they are if you do a mini-project with them.  If they are reliable on a small project, then try them out on a bigger project, and keep it growing.  You are in trouble if you have a huge project that you are desperate to finish, because programmers are typically busy and don’t have time to give you more than a few hours per week.
 
Lesson #6 – Consult a psychic
It is hard to know who to use.  Sometimes a good psychic can steer you away from a bad situation.
 
Good luck — you’ll need it!

It is done — said the outsourced programmer

Categories: Software Development | Tagged , | Leave a comment

It is done — have you heard these words recently?

In America, when you say something is done, it is generally done.. But, I have had many experiences in India where an Indian programmer completely sabotages their entire career future (and their boss’ future) by saying, “It is done”, when it is not done.  I am baffled by how dishonest and careless some people are. Maybe they yearn to be fired. What other explanation can you give.  Keep notes on people you hire for outsourcing. If they say, “It is done” more than once when something is not done, then you say, “You are fired!”, or “No, YOU are done!”.

Communication could be part of the picture assuming that dishonesty is anything less than 100% of the problem. There are many tricksters in India, but blatantly obvious tricks won’t fly unless YOU are paying less than 100% attention, right?  And if you are not paying attention, then you will be the one who is done regardless of who you hire.

Don’t be done — and don’t hire others who lie through their teeth or who are incapable of communication.  Choose your programmers with care and tolerate nothing less than substandard mediocracy!  Why not set your standards high? Because really good programmers charge US$150 per hour minimum and you might not be able to afford such good workers.

The trick in outsourcing is to find people who can slog through projects in a clunky way and keep moving..  If you can hand pick really talented people, then you are in a very unusual position and might prosper beyond expectation. But, for the rest of us, we need to find bare functionality — expecting more will leave you disappointed if you engage in outsourcing.

Which parts of the USA have better programming companies?

Categories: Software Development | Tagged , , , | Leave a comment

When we think of BPO outsourcing, we often think of offshoring, but you can also nearshore to other parts of the United States for example. Many California BPO companies hire in the Midwest or the East Coast for example. The question is, which parts of the country have the most reliable service providers?

What I learned through a lot of searching around and interviewing people is that California is the worst place to hire programmers. Interestingly enough, 17 years ago, I remember that my aunt told me that her husband’s friends with businesses never hired California companies to do anything because of the unreliable service. They always hired companies in the East Coast. I remembered her story long after the fact and found it to be generally true. I also learned that people who live in California who are FROM a reliable part of the world, tend to be more reliable.

In any case, the Midwest is a place where the level of integrity is much higher than the rest of the country or perhaps the rest of the world. We encountered personality issues with a few emotionally unstable service providers in the Midwest. We also found some people who were not that smart. But, we encountered far fewer liars and cheats in the Midwest than in other parts of the Country.

New Hampshire was another good place to find programmers. New Hampshire is a no nonsense state for rugged nature loving individualists. The folks there bring new meaning to the term, “Live free or die!”.

Massachusetts, my place of birth had mixed results. There were many highly intelligent software companies there, but many wanted to charge 200 hours for a project that experienced people typically bid 35-45 hours on. What does that tell you? Are they bidding high so that they can get rid of us? Very dishonest if you ask me.

No place in America is perfect, but New Hampshire and the Midwest are where I would refer a stranger to find good outsourced help in programming or perhaps other specialties as well. If it were me, I would strongly consider outsourcing to India. Good Indian teams can get your job done quickly and cost effectively. Good luck!

You might also like:

How to make sure the software company you hired will deliver
http://bpo.123outsource.net/2013/06/22/how-to-ensure-that-the-software-company-you-hired-will-deliver/

Slow-but-good verses fast & sloppy programmers
http://bpo.123outsource.net/2013/06/16/slow-but-good-verses-fast-sloppy-programmers/