How do I get a job?
Just 3 weeks back I had 2 guys come to me through a common link, looking for jobs. Both of them were engineers in electronics.They have been looking for a job over the last one year and haven't yet cracked one interview. They seem to be doing a web development course as it seemed but when I asked them to design a wireframe of a product I had in mind , it seemed they were going to have a cardiac arrest from the expression on their faces. Anyway one week back I had another guy come to me looking for a job. When I asked him what kind of work would he prefer to do, his answer stumped me. He said he wants to do coding. When I asked him if he ever built a product and what tech stack did he use, he had absolutely no clue what I was speaking. Now I've had millions of such guys over the last 16 years come down and knock my door asking for a job. Their entire definition of a job is about something that can pay them to take care of their expenses. They have absolutely no clue about anything else pertaining to the job. Its rather surprising that a country that has produced the likes of Sanjay Ghemawat, Vinod Khosla, Satya Nadella, Vivel Ranadive and many other tech legends is plagued by mediocrity at its best. I would have loved to write more stuff on the sad Macaulayian education system we still follow even after 71 years but perhaps thats best for another day.
I wish to discuss the reasons why Indian engineering students are technically crippled. Let me also issue a disclaimer that my blog is limited to engineering students only in computer science, information technology, software engineering and maybe electronics to some extent. It does not apply to any other disciplines of engineering purely because my knowledge is limited only to software. Well to answer that, let me take you through my engineering and how it helped me or perhaps did not. I was a sore loser back in class 12th with 43 in Computers. Since everyone was doing engineering my parents wanted me to pursue engineering. Unfortunately since I was a huge loser and had absolutely no interest in cracking any competitive exams, I probably didn't make it to any top college. To ensure I get into a college and end up getting a degree or a job , my parents sent me to one of those private colleges that had mushroomed all across India. I went to a private college which took pride in calling itself an aspirational deemed university of sorts. There were many subjects that were taught namely Computer Programming and Application,Discrete Maths,Network Analysis and Synthesis, Algorithms,Theory of Computation, Computer Architecture, Operating Systems,Microprocessors,Compiler Design, Computer Graphics,Data Network,Parallel Computing, Software Engineering,Databases,Image Processing,Neural Networks,Data Compression,Distributed Systems along with a host of other non computer science subjects. The emphasis was mostly on completing the course on time and the mode of imparting knowledge was mostly theoretical. Sad to say but the college chose the lecturers based on how cheap they were. So in a nutshell we were deprived of any real world knowledge on how computation is actually applied in real time scenarios. I didn't understand much about it that time since Allahabad happened to be a place far away from first world information. I did get a hang of it when I came to Pune for my first job and realised save some amount of programming skills in C , I really was an absolute zero in almost anything. Fortunately my first gig was a tough one. I had to slog it some 18 hours a day mostly because I did not know shit and had to learn them online. It was tough initially but then I picked up gradually. I am not going to write at length on how I learnt since I wrote about it in a previous blog, however since there was no one to guide me on what I should be doing as a clueless freshman, it was real difficult.
Now as I have worked almost 16 plus years in technology in various roles across engineering, product, marketing, sales and business, I understand the basis issue behind this eternal quagmire. I know that look on your face. You're probably wondering ,what is it that he wants to say, I already don't know. Well bear with me. So after rigorous discussion with folks in the industry , I came to a realisation and I'd be more than happy to share it. The entire problem is because we as a society have never defined the purpose of education for our kids. I know this could lead to an eternal debate between aye and nay sayers but I am going to talk specifically in the context of engineering education. So let's start asking the hard questions here. Why are we asking our children to do engineering? If the answer is because it might offer a stable career and exponential growth then we are insanely wrong about it.
The entire idea behind building technology was always to solve a human problem. From the Wright brothers to cracking Enigma by Turing or creation of the Analytical Engine by Babbage or the micro computers by Jobs or a GUI based operating system by Gates or creating microprocessors by Grove, the world wide web by Berners Lee or an RDBMS by Ellison or a perfect search engine by Page and Brin or an effective social network by Zuckerberg, was in its simplest definition an attempt to solve a problem. Problem solving has always been at the core of the technology industry. Now problem solving is a function of knowledge, failure, perseverance and applicability and experimentation. If you closely examine what Indian engineering colleges have been teaching for close to 2 decades now is just the knowledge part. Our engineering education system banking on vanilla metrics , seems to evaluate students on the basis of marks which prove absolutely nothing about their technical aptitude or competence. I have interviewed many a students in the past who wrote a lot of songs in their resumes about systems engineering but simple questions related to Chomsky Grammar fills them with terror. Why is it that people cannot write simple subroutines for Linux commands? It all boils down to the purpose behind engineering. Our academia particularly in engineering is comprised of decision makers who really don't understand the technology industry at all. I keep reading a lot of posts on LinkedIn about MoUs being signed between Indian engineering colleges and other foreign entities which seem to me like some lacklustre attempt at grabbing free PR. What is even more bewildering is the singular fact that year after year there is absolutely zero improvement in the quality of education. Everything seems like a hogwash in India when it comes to the entire system around computer science engineering. No one in the academia has any clue what needs to be done to fix this royal mess.
I have spoken to professors and lecturers who have absolutely no clue about the market realities of the tech industry let alone the purpose of the respective subjects taught to students. Everybody is sold out on media frenzy around technologies like Artificial Intelligence, IoT, VR, AR, Cloud, and now Quantum. Academia is chewing tabloid stuff related to programming languages, operating systems, DevOps, No SQL databases, frameworks, APIs without the slightest understanding what problems these elements of technologies pieced together could solve. I remember asking a student to write a function that uses recursion to create a fibonacci series and he gave up saying he did not know recursion. So it again boils down to fundamentals. Why is it that the education system does not explain the 'Whys' and 'Hows' of the solution related to the problem domain? Couple of years back, I was invited by my school in Lucknow to come and address some Class 12th students on career choices. I obliged and met these students and asked them what sort of career would they wish to have post their school and almost everyone said computer science engineering. When I went ahead and asked them if anyone knew why any number raised to the power zero is always equal to 1(n^0=1), not even one student could prove it. Imagine the future engineers of tomorrow getting into something without the faintest idea what it embodies and loaded with incorrect knowledge and weak fundamentals. Then subject these youngsters to 4 years of an illogical system of engineering where they never solve problems, come up with creative solutions or innovate on the edge of a remarkable problem. No extra points for guessing what comes out of such a system.
I mean I did 4 years of engineering studying close to 56 subjects and today if you see the current skills that the market requires most of it falls outside the purview of what was taught to me. The same holds true for a majority of engineering colleges across the country that design curriculums that are obsolete and have no correlation to what the the market demands. I have spoken to thousands of students over the last decade or so and asked them if they built a product and none of them did save a lifeless Summer Internship Project which is either copied from the web or bought from a Computer Training Center. If you go ahead and ask engineering students in India about their respective specialisations and what sort of work would they be interested in pursuing , you get these weird looks as if you have asked them something so alien beyond their pay grade. In other words they have no clue what they wish to work on.
When I was in the Bay Area I'd find students opting for internships around their specialisations be it machine learning, image processing, augmented reality, database internals etc. I mean I was in the crowd when Pranav Mistry demonstrated how he had used Augmented Reality to carry out a plethora of activities digitally using merely his hands. To sum it up every computer science engineer is looking for a job in India but they have no clue what would be right for them. Then there is also the fact that a majority of Indian students never take part in open source projects running on the web. I remember the first 6 months of my first job were spent reading code written by other developers(with as less commenting) to understand what each part of the code was doing. Debugging leads to deciphering so much information about the product in general that you can actually map the functional characteristics to how its happening technically under the hood. I also got access to a brilliant book called 'Computer Systems:A Programmer's perspective' that can give one a glimpse of the system side of things. Charles Petzold's 'Code' is one more epic book that can simplify things for one. Even competitive programming platforms like Topcoder has very few Indian participants. Add to it public code written on Github by Indian students is barely 4 percent. In a country churning 3 lakh computer science engineers annually ,4 percent is really a sorry figure. This might explain why we have had zero technology innovation in India over the last 2 decades. Where are the patents that our engineering students file and where are the publications they have come up with? That brings me to my next discussion-are Indian students really interested in technology?
Now add to that Goldilocks's principle that we tend to do better at tasks only at the edge of their current abilities. Naturally if the abilities are questionable you would not have reach optimality. Takes me to this famous quote by Einstein where he said that, "Everybody's a Genius but If You Judge a Fish By Its Ability to Climb a Tree, It Will Live Its Whole Life Believing It Is Stupid". That is so bang on. If you aren't interested in engineering and problem solving does not enthral you then you might do it as a job. A job devoid of passion does not amount to anything but a downward spiral on productivity. Today I read numerous articles everywhere talking about how a majority of Indian engineers cannot code but none of those articles talk about if Indian engineers can solve problems in tech.
If you see the above articles they do describe the status quo accurately but fail to mention problem solving.
See problem solving is an integral part of every job and problems are different in nature. To solve a problem you need skills, and where do you get those skills? Well you get them at places like Lambda School or Ecole 42 that focus on building skills that the market requires. Today bootcamps have proved out to be extremely useful to people who want to build their coding skills so they could use them to build products. The results are outstanding although there are a few bummers. Raymond Gan stresses what engineers should be doing to build the required skills that could be leveraged by the industry to promote innovation. Take a look
Joel Spolsky wrote about it in his cult book 'Smart and get things done' . He talks about the difference between an average programmer could be 1000X but even if you do the hard work to bridge that gap, you still can't hit those high notes unless you are passionate about technology. Most hyper successful guys who made it big, dedicated a large amount of time building their skills. Peter Norvig talks about the 10000 hour rule in his famous blog. Even Malcolm Gladwell talks about the same in 'Outliers', where he mentions people like Mozart, Bill gates and Bill Joy who immersed themselves in learning those skills from their childhood to adolescence. These skills helped them with their respective careers. Steve Martin talks about it in his epic autobiography where in his words , “10 years spent learning, 4 years spent refining, and 4 years as a wild success.” As I am reading more and more biographies of some of the most successful entrepreneurs I again see a common pattern which is similar to what is being discussed. Most successful entrepreneurs like Sam Walton, Michael Dell, John.D.Rockfeller, Warren Buffet, Richard Branson, Jack Ma were all trying to learn from quite an early age some of the skills that helped them in the later part of their careers. Similarly some of our tech entrepreneurs like Bill Gates, Mark Zuckerberg, Steve Wozniak, Jack Dorsey, Max Levchin, Elon Musk started at quite an early age since most of them were socially labelled dorks who found themselves ostracised from most social events or were subject to bullying. They found their escape route in books and technology. They followed up that alley that led them to build many products before they turned 18.Zuckerberg is known to have built Facemash, a web app that could compare and rate girls at Harvard. He was penalised for that and David Fincher did a fair attempt in 'The Social Network' to show how a young Zuck went ahead and built it. Most of that was fiction but you get the point. Now people like Zuckerberg love to build things. Check out this video to see how he built himself a personal AI he nicknamed Jarvis.
Now let's talk a bit about what the industry wants from engineers and I am going to quote just one company that has done it better than any technology company in the world when it comes to hiring. Well its none other than Google. If you read Lazlo Bock's cult book 'Work Rules' you would come to understand that Google did multitude of iterations on hiring to figure out how they could have the best people on the planet work for Google. One startling revelation they came was that unstructured interviews have merely an r^2 of 0.14 which means they can explain only 14 percent of a candidate's performance, number of years of work experience can only about 3 percent. The best predictor of how someone will perform in a job is a work sample test which fares around 26 percent.The second best predictors of performance are tests of general cognitive ability which is some 26 percent. There are two types of structured interviews behavioural and situational. Behavioural interviews ask candidates prior achievements and match those to what is required in the current job. Situational interviews present a hypothetical job related situation. Research shows that a test of general cognitive ability combined with a test of conscientiousness(work to completion) is better able to predict who would be successful in a job some 36 percent of the times. In fact Joel Spolsky was kind enough to write an entire feature post on how to hire the best programmers on the planet in this epic blog.
I also believe that we are at a point in time where machines will soon replicate a lot of human jobs. That does not mean humans will not have much to do but it means there would be new jobs that would come into existence. Well its actually happening as I am writing this blog and you are reading it. Lot of jobs in the industry that needed human labour have now been automated. Machine learning can do wonders in certain areas depending on how much sample set the system is exposed to. Question is who might be the guys designing those machine learning systems. You can't do that devoid of basic fundamentals and passion required to build that system. Now there are companies that have built frameworks that can write code and deploy them with zero bugs that earlier required a team of 5 to 10 backend engineers. With this level of sophistication we might reach a point in space and time that the careers of millions of engineers would be in jeopardy. An existential crisis of sorts.
Apart from technology our Indian engineers are really not aware how business works and how they would be in the middle of this colossal system that is building some of the most cutting edge software. I have spoken to loads of engineering students and when I discuss about things related to product, marketing, psychology business or maybe a little bit of finance, I see blocks of empty faces. To top it all, most engineering students don't read books. They have no clue about the muck they are in with absolutely zero chances of resuscitation. The academia is equally clueless. I remember talking to a professor at a reputed institute about 2 sided markets and how platforms and SaaS are changing the way software was running earlier and the gentleman asked me what I meant by SaaS. I of course went ahead and explained how SaaS works using Dharmesh Shah's anecdotal wisdom about Hubspot but you get the point. So it in a way proves the academia comprising of professors who have never had the opportunity or interest to take a deep dive into technology to understand more about how they are being leveraged by technology companies would not be able to create a batch of competent and skilled engineers in India. We have accepted mediocrity as part of our Indian dream and as long as we are devoid of revolutionary ideas that can change the education landscape around computer science education, we will have students asking the same question over and over again,"How do I get a job?" instead of, " How do I get the right job?".