Running a virtual company

Recently I made a presentation at the CTO School in Manhattan about running a virtual company, where people work remotely from different countries. Actually, I’m a co-founder of two startups (consulting and product) where majority of the people working remotely. The slides of this presentation are here.

Programming Nazi

In the USA programmers earn more money than average workers. But the difference is not huge. It can be twice as much. Not outrageous. It seems that there is a (wrong) perception in the USA that programming is difficult and hence these eggheads deserve a better pay.

But the situation is different in developing countries where offshore programming is flourishing. The difference between the salaries of a young programmer and a young engineer can be 10 fold: $300 vs. $3000 a month. While it’s great that at least some people can earn decent money, I see some negative side effects. Some of these young well-off professionals are starting to believe that they belong to a higher caste, and regular people who didn’t learn programming are losers.

This is is not something I came up with out of the blue. I’m following the blogosphere in some of such offshore countries, and people openly make these statements. Here’s a comment that I’ve received to one of my blogs:

“People who work in the supermarkets are not capable of anything else. Only inadequate people can work there for a long time. A decent person will not keep this low paid job – he’ll find a way to earn more doing something else. Instead of working for pennies in supermarkets they can learn programming and make a decent living”.

In another article a programmer asks,”Please share your experience in finding love? Is it easy for you to pick up girls because of your high salary?”

IMO, this kind of mentality is really bad. You have to respect people even if they don’t know how to program computers.

There are lots of great people who like working in a supermarket or a post office. They will never become programmers and don’t have to be! Ideally, people should do the work they like. It may not be easy, but during a day a person can work at a cash register, and in the evening play violin in the philharmonic orchestra.

I realize, that the labor in the USA is more expensive than in most of the developing countries, and a cashier can make a living just by keeping one job. But considering yourself creme de la creme of society just because you know how to write if-statements is not only wrong, but dangerous. Being any nazi is dangerous both for a society and for the nazi.

Me no talk English? Me no good programmer.

Our company, Farata Systems, hires lots of offshore developers who work for us and our clients from the Eastern Europe, which has plenty of good developers. Ten years ago, Indian developers were more competitive comparing to Russian-speaking programmers for only reason: their English was better. You may not believe me, but not only they could read, but all of them could even speak English!

The situation is slowly changing and more and more developers working from behind the iron curtain (btw, is the cold war over yet?) can speak English. While interviewing developers living in the Warsaw Pact countries, I speak Russian for the most part, but always switch to English for five minutes or so.

Why do I want them to speak English? Of course, some projects require direct communication with our clients from the USA. But we also run internal projects where no communication in English is needed – the entire team can speak Russian. We still want them to know English, and for a different reason. In today’s IT world, almost 100% of the latest and greatest information is being published in English: books, blogs, screencasts, videos, conferences, Stack Overflow, and other forums. Sure, some of the books will be translated into other languages… in several years. It’s a bit too late. Google Translate might somewhat help, but it’s a stretch.

If a software developer does not know English – s/he doesn’t belong to our profession. S/he doesn’t care to master the latest and techniques and technologies fresh from the oven. Your English doesn’t have to be perfect (I’m sure some of the native speakers will find poor grammar in this blog too), but you must know and use English to be better programmer.

Last year, someone asked Douglas Crockford, a JavaScript guru, if junior developers have something in common. He gave a very good answer, “Lack of curiosity”. I’d add, ” and poor English”.

Starbucks and Programmers

I’m not a Starbucks regular. I go there once in a while. Many years ago, when I went there for the first time and asked for a small cup of coffee, the girl behind the counter said, “So you want a tall coffee?”. Then she explained that tall was the smallest size they had. I’m sure some smart marketing person suggested that calling a cup “tall” is better than “small”. It makes a customer appreciate the value of the purchased product. It’s better to buy something tall than something small for the same amount of money. Devaluation of sizes in action.

When I receive a resume from a 23-year old senior software developer from overseas, I think of that tall cup at Starbucks. They want me to appreciate the deal – I’ll be getting not just a software developer, but a senior one for the same price. Being still in the Thanksgiving state of mind, I’m thankful that the USA is better in this regard too. I can’t recall seeing any American college graduate calling himself a senior software developer, and rightly so. Even if a 23-year old has a BS in Computer Science from MIT or Stanford, he’s are not a senior software developer. He has better chances to become one than a graduate of a local community college, that’s for sure. But let’s not confuse the ability to produce 20 if-statements per minute with being a well rounded software developer with 5 years of the real-world experience.

Every time when I visit Starbucks I ask for a small coffee pretending that I don’t know that it’s called tall. For some reason I feel better this way. OK, gotta run. Let me put on my Hugo Boss jacket of the XL size and go to work. Well, I’m not really that big, but XL is makes me feel a large man. What’s your size?

How to Become a Professional Software Developer

I’ve recorded this video about IT career based on my last week’s talk at the Java developers conference in Kiev, Ukraine. This is not a technical presentation, so anybody can listen to it.  You may not agree with what I say, but hey, it’s my today’s opinion formed during my rather long career in IT.

In this presentation I touch upon the following subjects:

  • The process of looking for a job (sending the resume, passing the interview, considering a offer, discussing the salary)..
  • What’s the difference in interviewing Ukrainian and American programmers.
  • Comparing employees and contractors.
  • Are you really a senior developer?
  • Keeping your skills up to date.

You can watch the video here.  If you prefer, just download the mp3 and listen to it on the go. Back in 2008, I self-published a free e-Book titled “Enterprise Development Without the BS“, which is also covering  IT career subjects. Give it a read.

What the Title “Senior Developer” Really Means

When I post a job opening for a Senior Java Developer, people send me resumes, and their titles match my post title. But the meaning of the word “senior” varies depending on the geography. Here in the USA a 22-24y.o. person graduates from college and starts as an intern or a junior programmer working his way up the career ladder. By his 28th birthday or so, a hard working person may qualify for the title Senior Developer.  Having said this, I realize that there are prodigies who became seniors in elementary schools, but they never send me their resumes anyway.

In the countries that supply offshore developers it works differently. The amount of outsourced job available in India or  Russia is overwhelming, and any IT agency is willing to take just about anyone who has a Skype account, can speak some English, and has a vague understanding of what his future IT profession is about.  If you are a freshman in college majoring in any engineering profession, you can easily find a job in IT company.  A typical Junior Java Developer or a QA Engineer is 18 there. Senior in college means senior in software developer in their world.

A 35 year old person is considered brain dead, and I read all the time discussions in Russian programmers forums suggesting opening businesses by the time you’re THAT OLD. A typical resume starts from the date of birth screaming, “See, I’m young!”

Interestingly enough, most of the 25 year old sincerely believe that they are seniors. No kidding. They’ve been around for a while in this overheated market. As expected, 80% of these seniors can’t pass a technical interview with me. But, of course, there are talented and hard working people there, and your main goal during the hiring process is to weed out the fake from authentic seniors. Take it very seriously,  and you’ll be able to create a team of talented people working remotely from overseas.