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.
Hiring an engineer without a degree in any other industry is ridiculous. Perhaps, CS didn't evolve much from being a voodoo science?
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.
Nope.
Programming isn't that hard. I began at the age of 8 myself. You can go from zero to a hacking code monkey in a month, and from there to a decent programmer in 6 months if you are willing to learn.
But when it comes to the hard problems: design, algorithms, efficiency; most everyone is going to need a broad spectrum of formal education to be able to handle that properly.
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.
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.
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.
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
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.
I agree about the music. I think everything else you said was horseshit (and I say that as someone who matched your profile - my degree was EE - who programmed for twenty years and has been managing programmers for the last twenty). Those of us who were not formally trained in CS and succeeded in the software world learned material that was the equivalent of a CS degree. I took my own time to study algorithms, data structures, compilers, databases, complexity theory, programming language theory, project management, and other topics that a well-rounded software engineer should know. It would have been a lot easier if I had done this in college, rather than studying transistors, amplifiers, power systems, and antenna theory. However, I got into programming via the electronic CAD field and I needed to become a good software engineer, too, so I learned the other stuff on my own.
I've worked with plenty of folks who had CS degrees and they did fine. I've also worked with plenty of folks (sometimes CS trained and sometimes not) who were idiots. In general, a CS degree was not sufficient to show quality, but neither was there any indication that it marked the bearer as deficient. However, it usually meant that when I asked them why they didn't use a hash table, they were able to understand what I was talking about and usually were able give me a good reason for it. But then, maybe I was programming in fields where you actually needed to know this material. I guess if you were hacking Perl scripts for some craptacular website, you wouldn't need to know any of this stuff - the site you built wouldn't scale, but then, chances are you wouldn't ever have been successful enough for it to need to anyway.
That is all.
He'd better learn. On some occasion in the future, he'll need to interface with someone else's code.
Or with users, or with sensors and actuators, or with legacy data, or with non-ECC memory, or with resource over-commitment, or with... The poor fool confuses exceptional conditions with error conditions. He may be a mofo, but he's not a mofing good programmer.
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.
These stories invariably arouse the collective insecurities of the Slashdottosphere. Forgive me for indulging mine.
Your web app is "highly profitable." Means nothing, except that it can call a library to open up an SSL socket to a credit card gateway. It doesn't mean it required skill to code, that it provides a great end user experience, that it's robust or scalable. Without more information, I'm left suspecting that you may be taking credit for your marketing department's efforts.
As for your ability to outperform a PhD, well, what does that prove? Some poor schmuck who specialized in computer vision systems, gets his ego mulched by the hard-assed bitch that is today's job market, winds up in some job where he's using none of his university training, but is expected to make the company website sit up and bark like a seal. After years of working on that in his spare time (while juggling at least five other hats within the company), the boss gives up and calls in a domain expert.
In other words, the anecdote proves nothing about the relative merits of college vs. "the real world," but says a lot about the advantages of working inside your field of expertise.
These exchanges are generally stupid, because everyone has an ego to defend. I went to college, got a CS BS, and now feel obliged to defend the merits of that decision. You went straight into the job market, and have to convince yourself that you didn't miss out on something important. 90% of these comments are about salving wounded pride, not figuring out what experiences are most valuable.
You want the truthiness? You can't handle the truthiness!
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.