Zoho Don't Need No Stinking Ph.D. Programmers
theodp writes "When it comes to tech academic credentials, Zoho CEO Sridhar Vembu has The Right Stuff: a Ph.D. in EE from Princeton. But Vembu has eschewed Google's Army-of-Ph.D.s approach to software development in favor of tapping into the ranks of high school grads who would not normally go to college for Zoho. Seeing his youngest brother succeed at programming without a college degree convinced Vembu that others could follow that example with the proper training and guidance. And studying the best employees in his own company led to another epiphany: 'What if the college degree itself is not really that useful?' thought Vembu. 'What if we took kids after high school, train them ourselves?'"
Whoa. Someone with common sense. Someone in charge with common sense! I need to get some people around my workplace to read this blog entry.
While I'm sure that everyone's personal experience is different, this observation matches perfectly with what I've seen over the last 30 years or so in the field. On-the-job performance is the application of skills that are atually needed somewhere. Education in school is teaching something that may be needed at some future date. A new graduate still has to learn how to adapt their knowledge to the real world. Given what schools seem to be teaching these days, and the typical student's retention rate and enthusiasm, I'm not surprised that grads and non-grads are about equal in skill after working for awhile.
Kudos for admitting that, Vembu. I hope others follow your example.
College is a mix of vocational training (particularly important for some professions) and personal growth in the "learn to be a good citizen" sense. It's socially irresponsible to encourage people cut back on the latter, and being lax on the former results in a lot of "not seeing the big picture" kind of thing. I suppose it might be good for businesses that want to lock their employees into working for them long-term, but it's bad for society.
For every problem, there is at least one solution that is simple, neat, and wrong.
The company gets crappy code written by people who understand the syntax of the language, but has no deep understanding of algorithms or data structures. They might think they know what they're doing, but having been at that point myself once, they really don't.
The workers end up not really knowing their craft, and have a much harder time getting their next job without a degree.
The only winner here is management, who makes a quick profit off bonuses for cutting costs so much, and don't need to worry about long term maintenance.
I still have more fans than freaks. WTF is wrong with you people?
Any other reason? Perhaps they are a bit cheaper?
I do think he has a point that a degree in anything doesn't mean you're going to be any good, and I learned a heck of a lot of programming back in the 80's on my own, in my basement.
But, the motive here seems to be cost, not anything else.
And Zoho products show it. They are poor quality knock-offs of other, more commercially popular packages.
The are the Rodger Corman of software.
(Apologies to Mr Corman)
I admire what he is doing here. I think that any reasonably intelligent person who's willing to learn can do any job reasonably well, regardless of their background. I think too many HR idiots assume that someone gets far enough down a career path, they are incapable of doing anything else.
The sending of this message pretty much inconveniences everyone involved.
That is how I learned to program. I started out at 13 with basic and have moved up. That is also how I learned about computers. 22 years later I am a full-time programmer and a Network Admin. Self taught all the way.
Kosh: "Understanding is a 3 edged sword, your side, their side, the Truth."
The students are taught very little theory, avoiding computer science altogether.
Yes there are many things you can do in programming without a formal education, and I'm all for rewarding people who want to make an effort. But by not studying theory they are missing out on all those giants whose shoulders they could be standing on. This will lead to wasted effort as they reinvent everything from the wheel to Unix badly.
I am Slashdot. Are you Slashdot as well?
It's full of self-taught, degree-free programmers who learned on the job... just like what this bozo wants. It also kills two out of every three projects that it starts. Job security is terrible. Much of the code is unmaintainable. Software engineering discipline is regarded as a waste of time for bureaucratic wusses.
Teaching people on the job means they make their costly, disastrous mistakes on the job instead of making them in college, where nobody gets hurt.
I piss off bigots.
Would Google's index (and infrastructure) be as good as it is if they relied on high schoolers?
Umm...no.
Non-cookie cutter programming requires serious, well-educated people.
With almost no computer science and a disdain for math, these guys will fit right in with the majority of the programming workforce, probably on par with a technical college grad (and perhaps myself) in coding ability. However, in my experience, I have seen very little correlation between raw ability to code and the success of projects. Zoho better have some kickass business analysts and project managers for these coders.
Millions long for immortality who do not know what to do with themselves on a rainy Sunday afternoon. -- Susan Ertz
This actually isn't new... it's a return to the classic "apprenticeship" model. I think it's a great idea.
Consider the benefits. It's all real-world experience, learning how things actually operate and how they are actually used. The modern academia "ivory tower" model, in which people with no industry experience are teaching students only a small portion of what they need to know, isn't serving the industry particularly well. There is also the issue that college/university these days seems to be at least as much about political indoctrination as job skills, but that's another discussion.
Additionally, the instruction in the apprenticeship model is much, much more effective. The mentor-to-apprentice ratio is far better than the teacher-top-student ratio, and the instruction is always what the apprentice needs (you're not going at the least-common-denominator pace, time isn't wasted on rehashing things you already know, you can ask questions as they arise, and you can't hide what you don't know behind standardized Scan-Tron style tests). As a result, the apprentice learns much more quickly, and will become a seasoned veteran in less time.
The one hazard I see is that there is the potential to lowball the apprentices on pay. At the very least, a conventionally-trained college grad has demonstrated they have what it takes to make a four-year plan and get it done in... um... let's call it five years. They aren't going to settle for minimum wage (except in the video game industry), and they aren't going to pull down the average wage for others (again, except in the video game industry). The potential does exist for these issues arising, but it's by no means certain that they WILL arise, and if an employer gets a rep for either turning out ill-trained apprentices or for being an exploitative sweatshop that leverages the naivete of an 18-year-old (sorry, if you're 18 you're a rookie no matter who you are or what grades you got), that employer is going to get blackballed by the rest of us real quick-like.
I do hope Zoho's approach succeeds and gains traction.
Everybody gets what the majority deserves.
After some 15 years in the industry one thing is amazingly clear; Formal computer science education is more of a warning sign then a merit badge.
The vast majority of people I've worked with that actually had a CS degree have been inept to put it kindly. Regardless of experience, if they went to college for computers chances are good they have trouble wiping their own ass. While I've worked with a few very notable exceptions, the rule still firmly stands. Maybe it's because I'm a product of the dot.com boom, but most people that get a CS degree did it purely for the money and not at all because they had a talent or interest in computers.
The one unifying trait in good, practical computer professionals is an aptitude for music. Pretty much all played an instrument and most still regularly do. Any college degree they have tends to be in something random that interested them, like sociology, if they have a degree at all.
My
How about looking tech schools not dropping resumes from people who when to them they tech stuff that uses in the real work places vs the big schools that some are more about sports then classes also they have less filler classes that have little to no use in the work place that most IP people / codes are in.
How about hiring people who can construct sentences that make some fucking sense?
Good god man, this is the Internet in 2010 not a telegram in 1910. There isn't an extra charge for punctuation.
That's not true. A degree is a requirement for access to lots of different kinds of high-paying jobs, if only because the HR manager has a degree and decides on wages.
Whether a degree is actually useful in day-to-day work, well there I might agree with you.
and hiring manager....
Two stories:
The first one is about a supervisor I had who felt one must have a college degree to program device drivers. He blew off a really brilliant (I've never worked with a guy since who was that smart - even the PhDs at IBM) guy because he had only a HS diploma.
Second - a bit longer:
There's a company in SE Florida that needed someone to test circuit boards. A two year technical degree was all that was needed: plug board in, read test equipment, note failure.
When they were looking for someone, an EE shows up. They hired him. This guy then takes advantage of the tuition reimbursement and gets a MS EE. He leaves for greener pastures and maybe to actually use his education. Now, they list his job. Guess what? Requirements for thejob: MS EE. A test job. All because this guy got one on the job. They're reasoning? Well, because he got one he must have needed one.
It wouldn't have surprised me if they were one of the companies that said "We can't get any qualified Americans" and eventually hired a H1-b.
RIP America
July 4, 1776 - September 11, 2001
who finished the story still thinking "What the fuck is Zoho?"
I'm surprised at the amount of posts supporting these ideas? Are any of the supporting posters university/college trained programmers? I'm not going to rant too much about the subject, it has been discussed by many others much better than I could. There is a reason why the Software development industry is in crisis (in terms of quality) Bjarne Stroustrup has an excellent interview on the subject: http://itmanagement.earthweb.com/features/article.php/3789981/Bjarne+Stroustrup+on+Educating+Software+Developers.htm Ideas like this of taking high school graduates and give them developers positions without the proper education is taking steps backwards. There is a reason why Google produces some of the best software in the world (starting by the algorithms behind their search engine), their employees have all the required education credentials to go with their experience.
Hiring coders out of high school may very well work for some projects, and those kids may be happy to have a "real job". But in the long run the joke will be on them. Unless they plan to spend the rest of their life in that company (unlikely, as they seem intent on using a cheap supply of fresh young kids) they will find that most projects do appreciate (and need) a bit more education. Back to school for them, and not at the time when it's most convenient - it's hard to go back.
On the specific issue of coding vs. education. 20 years ago I started working as a software developer full time before I had any education above high school. I did some useful things that seemed "cool" then and worked out well enough for my employers. 20 years forward and two masters degrees later (Comp. Eng and Comp.Sc./Infosec) I can see that I am by far a better engineer (and coder too, but that's almost secondary), in part due to all the experience and in part due to education. I would have never been able to do what I do now without additional years of studying.
YMMV
I agree with you and also from a business perspective another large benefit is that by going through a college degree program, you have developed the skills necessary to be diligent at slogging through very mundane work and presumably developed intelligent communication skills as well. Probably the two most important things you will need in the white collar business world.
The sending of this message pretty much inconveniences everyone involved.
I'd prefer English majors. Then I'd teach them to program. I find communication is easier.
In my experience commercial software programming productivity is greatly hampered by the successful completion of a PhD. To complete a PhD you need to convince a committee of professors that you have done unique work in your field. You do this by publishing research and collating it into a dissertation. The type of software required to obtain research results for publication in most fields is completely different then what I need my programmers to deliver for me to ship a marketable product on time and on cost. PhDs often don't get things like O(n^2) algs should NEVER appear in commercial code because they will always blow up, and that not anticipating invalid input and just crashing isn't allowed. Both of these practices are just fine in research code. You may need a couple pointy heads around to make sure you are applying the best solution to your problem at hand, but give me anyone with a BS and demonstrated skills over a PhD any day for writing production code. (I want the BS/BA because it shows me you can complete something and can deal with crap you don't like because I'm paying you to do it).
"This mission is too important to allow you to jeopardize it." -- HAL
He'd better learn. On some occasion in the future, he'll need to interface with someone else's code.
...no deep understanding of algorithms or data structures.
That depends on your job. Realistically, how many folks graduate with a CS degree and actually do CS? Very very very few work on operating systems, database engines, and other really intense CS type of stuff where you really would need datastructures and other CS skills. Embedded systems and device drivers are usually done by engineers from I can see and as far as algorithms are concerned, companies hire the folks with graduate degrees in math for that. Business algorithms? The accountants and business types developed those.
Let's face it. You graduate with a CS or MIS degree you're going to be a code monkey. You need to go on to grad school to get into real computer science. A BS CS makes one no more a computer scientist than a BS Physics makes one a physicist.
Data structures? Please. When was the last time you had to code a linked list or sort an array or any of that second year CS type of stuff? I stopped coding that in the mid nineties when the Standard Template stuff came out. And if you coded any of that in Java, C#, Python, or whatever, you'd just be reinventing the wheel - a wheel that has been thoroughly tested and debugged. All you need to know is the basic difference between them and that's it: there's no reason to know how there implemented.
Programming is becoming more and more of a skilled blue collar job.
RIP America
July 4, 1776 - September 11, 2001
I'm not sure I'd call a majority of the coding that takes place on the planet engineering.
More like plumbing.
That includes most of the stuff done by degreed "computer scientists" working in industry, and it's not necessarily because they're incompetent (though it's often a factor) but because the work simply isn't engineering work; it's plumbing.
I've worked with god awful programmers, and a few excellent ones. My conclusion is that the majority of programmer graduates of elite schools are very good; but the reason is probably that their degree affords them plenty of choices of career, and they would have no reason to stick to programming if they didn't excel in it.
There's another problem, though, and it hasn't got much to do with the reputation of their alma mater, but the vast majority of programmers did not study CS. I didn't (and I'm a sysadmin anyway) but I tried to educate myself in theoretical stuff. Take for instance compiler theory; formal grammars and what not. Most programmers I've worked with have absolutely no idea what the fuck it is. The result is brain dead regex-only based parsers full of glaring bugs. The other day I discovered that a piece of software I had been delivered stored financial transaction amounts in floats. I dare to advance that no CS graduate who didn't get his degree from a diploma mill would commit such a sin. But here the self-taught developer looked at me as if I was nitpicking.
In school I was considered a "whiz kid" and (from my wife) I know what a programming apprenticeship looks like (there is NOTHING that you don't learn in the first 3 months of the first semester of computer science studies). When I look back to my codes from school and add the content of apprenticeship - that would be a friggin tinkerer!
You can teach them to use iterators, to use hardcore object-orientation, derive classes, overload streams etc.
but to be really good, you need profound knowledge about thread-synchronisation, discrete math (esp. graphtheory), automatatheory, and complexity classes, because without these, you will unavoidably code shit!
your programs will be slow:
you will use backtracking (exponential running time) for polynomial problems (e.g. problems related to matching- or network-cut problems). You will not use branching-vector minimization or kernelizations (you won't even understand why you should use those and your programs for NP-complete problems will be to slow to actually use them and you won't even be able to recognize these problems). Hell, you won't even be able to understand why polynomial running time is good and exponential running time is bad...
your programs will have race conditions and mutual-exclusion problems
or don't you want to benefit from any further processor-developments? processor development means more cores at the same speed nowadays, so you need multithreadding or you are stuck at using one core (which will not improve speed anymore)
you won't model parsers as (pushdown-)automata and you will NEVER be remotely able to know whether your program is reliable (whether it works for all inputs)
you won't be able to distinguish a fast program from a slow program, so you won't even know the quality of your programs.
My wife works at a software company's support hotline today and just ask her: bazillions of problems with all programs except those from the graduate computer scientists...
If you really think that ALL major software companies pay so much just for fun, then you are out of your mind! They just know and value how much more quality you get out of graduate computer scientists.
IMHO this guy just tries to make "we are nearly broke and can't afford good programmers anymore" sound good to the shareholders...
The MAFIAA is a bunch of mindless jerks who will be the first up against the wall when the revolution comes
Nobody is infallible. This friend of yours may be smart, he may be extremely good at writing bug free code, but he is worthless as a developer for a company that needs to create anything useful if he is naive enough to believe he can write totally bug free code.
I rather have someone working with me that is an average developer who does their best to write bug free code, but deals with unexpected situations than one who thinks they're smart enough to forsee every possible outcome during code execution.
This guy sounds like the 'Greek Tragedy' of programming. An infallible developer... HA!
---
Programming is like sex... Make one mistake and support it the rest of your life.
He must be one of the guys that thought that building an entirely new computer language without exceptions (Google Go, for a name that doesn't Google) was a good idea too.
Oh, how I love code that is written like this:
boolean ok = true;
if (!someMethod()) {
ok = false;
}
if (ok && !someOtherMethod() {
ok = false;
}
return ok;
Now you've got rid of all the exceptions. Oh, but the method calls are hidden within if statements, and although you have a single return at the end, the *triggering* of the return value is in the if block. You've already used up the return value too, and people can easily make the mistake of not checking it. Google Go solved this by being able to have multiple return values, but that just simplifies the argument handling a bit.
Of course in many cases Exceptions are NOT the way to go. I've created a nice lib that uses result listeners instead of exceptions on most places. Then the user of the lib (the business logic more or less) can make a decision on what to do with a result. That does not do away with RuntimeExceptions or the exception that the user can throw to stop after a bad result.
Hah, no need for exceptions at all? He must live in another world entirely than the one I'm living in. It *must* have been an exaggeration.
Anyway I am now on the fence about a PhD. But overall it won't make me a better programmer. It will make me a researcher. And in fact many companies won't hire a PhD to be a programmer because they will see them as overqualified (in fact my work mate who is almost done with his has mentioned he wouldn't hire a PhD to work in his team).
As far as me, college basically added some advanced math and a broad overview of computer science. But do I actually use any of that on the job? No. Basically I use high school algebra and the same basic loop structures you could get from Teach yourself C# in 20 days or something. I taught myself SQL as a freshman in college for a summer internship, and in both my undergrad and graduate database jobs the SQL was much less advanced than what I did on my own. In college I have not met a program that I couldn't do. They mostly consist of stringing together a few algorithms to do this or that based on concepts learned in class. On the job you don't even code the algorithms, you use the collection libraries (C++/Java/C#/Almost all the scripting languages have these...). Most of it is about taking the business rules, and converting it to code with loops, conditionals, etc... I could do all this after high school (because I learned C on my own to fiddle with a MUD).....
Anyway once I finish my Masters I hope to find one of those few jobs that actually uses at least a Bachelors level of computer science education..... In some places there are a few senior guys who do the interesting work and then all the normal guys end up using their libraries... In others it is all just business applications to link to files/database and it is all about the business rules. And then there is Google where the company is on the bleeding edge in many things... Or even Microsoft, although I think the windows kernel would be a nightmare to touch... And office as well.
Short version - We hire wage slaves.
Long version - We hire straight from college to ensure their thinking and work habits are untainted.
I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
I lived in England and traveled around Europe for 3 years. Great beer, old/ancient cities, and gorgeous women. Everything else pretty much sucked ass though.
Let's see a 25% sales tax rate, $8 for a gallon of gas, houses for 3 times the price at 1/2 the size, electronics, clothing, food, and cars that are nearly twice as much, oh yeah did I forget the cronic 10-19% unemployment rate among adults and 75-99% unemployment rate among teenagers.
Get me a plane ticket I want to move right now!
Most college degrees in the US are pretty much not worth the paper they're printed on. Euro degrees even more so. I think the concept of hiring young people the moment they are legal to work and then train them according to their skills is a long missing concept in society.
All the rest of a "well rounded" education can easily be filled in by watching the discovery and history channels and reading a few books.
US employment rate has consistently been higher than the UKs over the last decade (currently USA 9.3%, UK 7.9%). The youth unemployment rate is 19.1% (2009 figure, latest I could find), almost exactly the same as the USA rate for the same year year. Sales tax (VAT) is 17.5%. Petrol is currently £1.14 per litre = £4.31 per us gallon = $6.53. Food is not double the price - its very hard to compare basics like bread and milk are about the same, other things are a little more. Cars are a lot more, but I think 1.5 times as much for most common models. House prices is hard, £250,000 could get you a large 4-bed house in Inverness or a studio flat in Chelsea. Houses are generally smaller, but certainly not three times the price unless you compare the city of London prices.
Except you don't understand that there was a meritocracy based selection process which acted to dampen out the negative aspects of a free for all system.
This is pretty much what a lot of us in the U.S. do not understand, and which is at the root of the matter when it comes to personal student loan debts. Couple that with this pedestrian, quasi-ludite fear of tax-based services (ZOMG, the gubermenmnt took mah money!), and you can see why many of us fail to understand that.
We have a culture that
Put all that together and you can see how we are the way we are. We do have a measure of belief in self-reliance and independence. The idea of depending on a government-sponsored program is abhorrent. We stupidly equate government programs with hand-outs. Ergo people don't have qualms in getting in debt for getting an education.
The unfortunate side effect of this is that:
We don't provide our youth with a chance to explore a vocational trade. Then boom, they are out of HS and we expect them to work as adults. But they have no skills and nobody wants them except as hamburger flippers. The only way out is to get a 4-year college degree, even if that is not what is in their hearts and would be much better off learning a trade.
A fine merit-based, government-paid college education system coupled with equally funded vocational training and a society that appreciates and nurtures the later is what we need.
Unfortunately, that would require a cultural change of a great magnitude. It ain't gonna happen in my lifetime, I'm sure of it.
I once was the technical lead at a place where a CompSci degree (advanced preferred) was the norm. The project staff became divided into two groups, one which was the in-house staff with CompSci dgrees and those without (the division ocurred because in-house staff where administratively untouchable, resulting in that group being assigned their own code chunk to program anyway they preferred).
The CompSci degree'd inhouse(Insiders) staff advocated what they had worked with and championed techniques that their educations had given them. The outside (Outsiders) consulting staff were hired primarily because they had needed to learn programming on their own to get specific tasks done. The outsiders were goal oriented, the insiders were means oriented. None of the Outsiders had degrees in computer science, some had partially completed college degrees. Outsider degrees areas were electrical engineers, linguistics, sociology, and business real estate.
The Outsiders developed extremely robust debugging/optimization techniques which resulted in error-free code generation rates of about 150 statements per working day of productivity and had a debugging system built-in to a macro pre-processor that allowed anyone to quickly find and eliminate bugs. The macro pre-processor had debugging modes from trust nothing (testing new code) to minimal checking (for production executables).
The Insiders had very low code productivity where everyone did their own thing. Only the Insider who wrote some code could effectively develop it, resulting in major problems when Outsider code depended on Insider code. One memorable bug in Insider code took three weeks of intensive effort by the Outsiders to find where in the Insider code an error actually was.
The Outsiders controlled all of the interfaces, so they could permanently have code that never trusted any Insider code which resulted eventually in all Insider errors being detected as data structures and their contents were always checked coming and going between Insider and Outsider coding.
The net result was a 250,000 statement program (about half of which as comments) which ran for five years without a progamming error being encountered by end-users and which performed at near assembler-code performance levels (the system was developed pre-C era in Fortran) by taking advantage of compiler optimization techniques and replacement of most subroutine calls with in-line code.
Experience since then has indicated that programmers advocate what they have been educated in (e.g, inve$ted in), what they have used, or what is currently being paid most attention to by the trade press or coporate decision makers. The best programmers have turned out to be persons who learned programming to get something else done; the worst programmers where those who were defending the validity of their resume/C.V.
That experience has lead to the conlusion that most programming systems and languages do not place a design priority on maintainability by someone other than the developers. Also that most developers have minimal knowledge of cost-benefit trade-offs and related business matters.
Another major cause of problems is that top-level management being sold on operating system/development system/language/etc. combinations by very capable sales forces and hiring persons with experience in that combination whether or not it is doable.
The result of this is a very bad completed as initially budgeted and featured as initially promised record.