0% found this document useful (1 vote)
253 views

Algorithms

- With genuine interest and effort, it is possible to learn coding skills even without a CS degree, but it may require more work to "catch up" to peers with CS backgrounds. - Focus on gaining hands-on experience through personal projects, online courses, internships, etc. to build a strong portfolio that can compensate for lacking a formal degree. - Consider emphasizing transferable skills from your business degree like communication, problem-solving, and business analysis, which are still valuable for many tech roles. Pursuing programming as a new career is certainly possible with dedication to self-study.

Uploaded by

Barnali Dutta
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
253 views

Algorithms

- With genuine interest and effort, it is possible to learn coding skills even without a CS degree, but it may require more work to "catch up" to peers with CS backgrounds. - Focus on gaining hands-on experience through personal projects, online courses, internships, etc. to build a strong portfolio that can compensate for lacking a formal degree. - Consider emphasizing transferable skills from your business degree like communication, problem-solving, and business analysis, which are still valuable for many tech roles. Pursuing programming as a new career is certainly possible with dedication to self-study.

Uploaded by

Barnali Dutta
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 35

Algorithms: Introduction to Algorithms by Rivest, Cormen, Stein, Leiserson, generally

known as clrs. There is no beating this book. It is like the bible for a CS engineer.
Operating System: "Operating System Principles" by Galvin. I liked the book. Read
semaphores well and solve a lot of problems. There are a couple of other books by
Tanenbaum and Stallings which could be useful for certain topics.
Theory of Computation: "Theory of Computation" by Ullman. The book is very hard on
your eyes with so many weird symbols involved, but if you concentrate well, you would
get every point of it. Another one is "Introduction to the Theory of Computation" by
Michael Sipser. This I fiound more helpful for interviews.
Computer Networks: "Computer Networking: A top-down approach" by Kurose-Ross and
"Computer Networks" by Tanenbaum, There have been questions in the past directly
from Tanenbaum. But Kurose-Ross is what I preferred. There are other books by William
Stallings and Behrouz Forouzan which could be useful for certain topics. Forouzan is
relatively easy but i don't advice you to read as the main book for preparation.
Computer Organisation: "Computer Organisation" by Carl Hamacher. The problem with
this subject is that professors in IITs prefer Patterson, but the syllabus for GATE is more
in accordance with Hamacher.
Programming and Data Structures: Have a good hold on basic programming in C.
Coremen is good enough for data structures.
Graph Theory: "Graph Theory with Applications to Engineering and Computer Science"
by Narsingh Deo. I personally did not refer to it for GATE exams but read it for
semesters. It is a good experience.
Database Systems: "Database System Concepts" by Korth
Compiler Design: "Principles of Compiler Design" by Aho and Ullman. Read parsing well
and also Syntax Directed Translation(SDT) well. .
Digital Logic: "Digital Logic and Design" by Morris Mano.
Software Engineering: "Software Engineering: A Practitioner's Approach" by Pressman.
Need not read the whole book but a few important concepts like Cyclomatic
Complexity, Coupling and Cohesion, etc.
Web Technologies: Have an idea about basic HTML, XML, etc.

http://www.quora.com/I-have-a-BTech-degree-from-a-branch-I-am-least-interested-in-HoweverI-am-extremely-interested-in-coding-How-can-I-learn-everything-that-a-CS-undergrad-learnsduring-his-degree

I have a BTech degree from a branch I am least interested in.


However, I am extremely interested in coding. How can I learn
everything that a CS undergrad learns during his degree?

Paras Jain
3 upvotes by Sandeep Goyal, Shanmugasundaram Muthuswamy, and Abhishek Gupta

Pursuing my CS graduation I personally feel that it is really difficult to have nice grip on core Computer
Science concepts. But if you feel to be like fan of 'coding' you can go on with a nice book in say C
(Programming Language) or if you might learnt this thing in your 1st year during graduation go on to
learn C++ (Object oriented Programming). Further to improve your coding skills in C++ you can read
the books like Effective C++ (By Scott Meyers).
Moreover you can go on to learn OS-specific languages like Microsoft .net Architecture languages
(visual C++, visual Basic, C#). Choose any one of them. ( choose Visual Basic if you are interested in
designing GUI programs).
PS These are my personal choices for a beginner in coding. Input from other people are requested to
provide a variety of options to the above person.

Ryan Smith, Computer Science Student at the Unive... (more)


1 upvote by Ajay Singh

I believe this depends on a few things, mainly your goals for learning and familiarity with self-teaching.
If you would like to learn everything for the sake of self-enhancement and are happy with working
things out on your own I suggest viewing the cs curriculums at schools like Carnegie Mellon and
Stanford and matching them up with the MOOCs on sites like Cousera and Edx. It's amazing how much
free information is out there and with the right amount of dedication there's really no reason you
couldn't actually cover the same material they do in the program.
If instead you are more interested in gaining those skills for work and are primarily interested in
programming as you indicated, you may find that a portion of the standard curriculum is not
immediately relevant to daily work as a programmer (example: gate level logic is probably below any
level of abstraction you'll really need to work with but it's fascinating to know why things work). In this
case, the books suggested in Paras' post can be helpful, with the pattern being, read 10-15 minutes, try
the new concepts in every possible way for an hour+ and continue. For practical learning Udacity is an
amazing resource. They tend to cut out a lot of the formal schooling in many of their tutorials and do a
great job of teaching the "doing". Another book I might suggest for learning programming is How to
Program <insert language> by Deitel and Deitel. I used the Java:How to Program book before ever
taking any classes and thought it did a great job of presenting concepts and providing useful examples.
I believe the versions for other languages follow the same structure.

Darshan Hegde
If you can spend Rs 640 , just go to Online Courses - Anytime, Anywhere | Udemy and learn any coding
course you want to learn.
Go to the section , courses for sale , and you will find courses in $10 .

Riyazahmed Jamadar
First learn some basic electronics concepts like Boolean algebra and gates, then study basic
programming concepts with the help languages like C/C++, If you want to pursue your career as

software developer, some software engineering principles you must study.. You can further explore as
your interest dictates you..

NPTEL
National Institutes of Technology (NITs)
Computer Programmers
Learning New Things
Internships
Learning to Program
Programming Languages
Computer Programming
Career Advice
Edit Topics
SHARE QUESTION

I am a non-CS NIT student. I am also interested in coding. What


courses in NPTEL should I learn to land a coding internship?
Garnaik Sumeet, Computer science undergrad, open sour... (more)
3 upvotes by Partha Sarathi Deb, Shubham Agarwal, and Mary Sneha Thomas

I suggest you go for Coursera, Advance Your Career Through Project-Based Online Classes and edX .
They are much better in terms of content and offer verified certificates in exchange for a small amount
of money. You can also choose to do the course for free.

Sumeet Kr Sinha, Incredible Indian


2 upvotes by Kalicharan Tyagi and Anonymous

Apart from NPTEL, I would recommend Coursera for its vastness in terms of courses.
Depending on how much time you have, you can target learning C++, VisualBasic, Java, or Python.

If you can structure your thoughts and formulate algorithms, coding should not be much of a concern.
All the best.

Ranvir Raj
If you are really interested in coding, there are many other resources available which are better than
NPTEL. Codeacademy is one. If you want video lectures on languages like C++, Java, JS, .NET you can
go to TrueSchool. It has some really good listings and have courses from MIT also.
If you want internship, focus on one particular language (I would suggest web design languages due to
their high demand) and apply in startups. Startups need interns with web design/coding skills.

Written 28 May. 70 views.

Shubham Agarwal
2 upvotes by Vandan Revanur and Anonymous

You can get yourself enrolled at https://onlinecourses.nptel.ac.i... .

Written 6 Nov, 2014. 43 views.

I am interested to get a job in Microsoft as a technical engineer but


my degree is not CS and I am interested in learning and exploring
programming. What can I do now?

Murale Krishnen
Just start downloading videos from You tube!!!
Regarding Basics of C, C++

If possible try to install Turbo C++ in your PC!!!


Try to write different programs using C and C++!!!
Try to buy a book " Let us C" by Yasvanth Kanitkar!!!
Try to learn Dot net, Oracle from Internet!!!

I don't know anything about programming/coding. I just graduated


with a business degree from a prestigious school. If I learn coding
(or at least try to) with genuine interest, will it be too late to "catch
up" with those with CS degrees? Won't I be at a disadvantage in
the job market?
Michael Burrows, I answer, therefore I am
1 upvote by Nick Malik

Tread carefully.
If you have natural aptitude for programming it is not hard to do and the chances are you would have
done it by now. If you don't have natural aptitude it is hard work and quite probably a dreadful chore.
There are plenty of programmers who want out of programming and view business analysis with envy something you should be well qualified to do.
My advice would be to get good careers advice involving aptitude tests to see which way you should go.
Alternatively teach yourself programming. A good newbie should be able to write a simple 2D game
inside a month.
With talent it's possible to catch up at programming with those who've done CS degrees, but a CS
degree teaches much much more than programming, most of which will not become useful until later
in career.

Bart Loews, Windows & Linux DevMinistrator, C#, A... (more)


1 upvote by Maria Shamim

I believe that anyone can learn anything if they put an honest effort behind it. Depending on where
you want to go with your programming I'd say you may have a head start on THEM with your business
degree.

Looking at my path, I have a CS degree, but went down an administrative/infrastructure management


path rather than development. 15 years later, I wished I'd gone the other way. In my spare time I put
all of my effort into getting caught up with development. I made apps on my own, web pages,
databases, did free lancing...everything I could to get my hands on coding. Any language I could find,
any framework that exists, I gave it it's due diligence.
I was eventually able to use that to shift paths to development while moving laterally money wise.
Naturally, my path is different than yours, but anything is possible. Use what you know to your
advantage. As a business major you have your own insights in to economic drivers and requirements
analysis that give you a step up on people who have only coded through their education.

Boris Roz
Can you learn it at enough level? Yes you can. Will it be disadvantage? Yes it will be, you will lack of
some (mostly mathematical) skills. CS is very uncommon profession and papers aren't very important
here. Most of employers want to interview candidates, you can be employed w/o paper. But your
problem is that you started late and it would be harder for you to learn. You are not likely to be as good
as guys who started and age 10 and had 12 years of experience before graduation and continuing to
learn more. For an employer larger age is a minus, lack of diploma is a minus, for the same skill. Sorry
for bad language.

Lonnie "Lee" Wibberding, Author of "Grow Your Own Economy"


There are many great programmers without a CS degree. Fortunately it's one of those fields that if you
can prove you can build stuff (with clean code) you can get a job. There is a lot of free information out
there. One thing you will need though is a mentor -- someone to ask questions once you've struggled
with a problem for a while. If you don't have a friend to ask, hire someone for a one hour a week
session on Elance.

I'm answering my own question here. It's been around one and a half year since I posted this
question and I want to thank all those who answered and commented. I really appreciate it. I received a
reply to one of my comments asking what actually went down after this, so I just thought I'd let
everyone know how things turned out.
Briefly after I posted this question, at the end of my 3rd year, I decided to drop out. I was so fed up my
"education" at that point that I'd rather take my chances as a dropout than continue putting up with
the daily nightmare. I did not attend the final semester exams. During that time, web development had
my attention. I instantly fell in love with it because you get to use your own creativity and imagination
and you can build absolutely anything you want, the way you want it, unlike some derivation where
there is a pre-defined set of equations already made up by someone and you just understand or
memorize it and reproduce it in the exam. And I did not mention this in my question earlier but when I

was in the 2nd year, I built a little online GPA calculator for my university and even to this day, almost
everyone in the university uses it whenever the results come out. That was the first time I had used my
knowledge and skills to build something practical that was actually useful in the real world and that is
what i wanted to do.
Anyway, sorry for going off-topic. I got carried away. As I was saying, I did not attend my 6th sem's
final exams, told my mom that I was going to dropout and convinced her that I would somehow make
it work, came home during the vacation and spent the entire vacation just learning more and more
about web development and building a few static and dynamic sites. When the vacation ended, I went
back to where my university is. I was staying in a flat with some of my friends. I couldn't stay at home
because only my mom knew about me dropping out and nobody else in my family did and I wanted to
keep it that way to avoid unnecessary complications.
Around 3 weeks after that I started applying online for a job as a full-stack developer and within a
week, I found one at a 2 year old startup in the same city. It was an already established startup and I
was hired to build a new social writing platform from scratch as one of their products(I don't want to
go into detail about it). I worked there for about 10 months, successfully built what I had to and it was
receiving an average of 7,000 daily visitors within the first month of the launch itself. Nothing that
huge but I was satisfied. When I was building it, a lot of my ideas went into it too and I was more than
just a developer coding in PHP, etc. Starting from the point when I dropped out and up to this point, I
had learnt and grown much more than I had in the last 3 years of college.
While working there, after what I built was launched, I started looking for a new job as I wanted to shift
to Bangalore and very soon, I found one. I was going to be a part of the core team of a completely new
startup still in development in which I'd get some percentage of the founder's equity too. This is where
I'm working right now and I enjoy my job. I've realized that I only scratched the very surface of web
development and there is much more in it for me to explore and learn and my current goal is to keep
becoming better and better at it. And if you're wondering how I'm doing financially, i'm making more
money already than what most of my classmates will be making, who recently finished their 8th sem
final exams and are now sitting at home learning C and SQL while waiting for their call letters for some
software job after spending their last 4 years learning about electric circuits. But most importantly, I
get to wake up everyday and pursue my passion with nothing to hold me back.

Without wasting time/money learning outdated curriculums at a


university, what are some good resources for learning how to
program/code/design mobile technology?
And how can I make myself a valuable asset when applying for entry level "Creative Technologist"
positions?

Garrett Dimon, Founder, SifterApp.com


4 upvotes by Andy Mueller, Buzzlair Voufincci, Alex Fan, and Dmitri Don

Currently, I'd highly recommend Treehouse (http://teamtreehouse.com/) I've had my little brother
start on the lessons, and he's been incredibly engaged by the content.

Moreover, I've been able to tell that the quality of their content is excellent based on the detailed
questions that he asks me afterwards. In fact, I'm often shocked at some of the more detail-oriented
questions that he asks and constantly asking him "they already covered that?".
It's not free, but it's definitely worth the money. Also, the content is incredibly fresh.

Mark Burton, Always Improving


1 upvote by Andy Mueller

Practical Commerce (see here: http://www.practicalecommerce.co...) has some good insights into
building mobile apps for beginners to experienced developers. A couple factors to determine as well
such as:

Do you want to design and code the app by yourself or design the app and hire someone to code
it for you

What language do you want it to be written in

Platform - I would recommend Android and iOS

Here are a couple links to other good topics I have found on Quora:
How do I learn Ruby?
Mobile Application Development Services
Stripe (company)
Square (product)
Pivotal Labs
How do I find an experienced iPhone app developer in Israel?
I'll try and do more research and see if I can find better suggestions and tools to use to keep the cost
down while helping you scale to fit your needs.

Can I become a really good self-taught programmer?


I'm in my late 20s and I haven't written a single line of code. If I have the drive, can I make the cut?
I've spent all my professional life (6 years) as a sales and marketing person in the IT industry. I have a

non-computer science engineering background and I'm quite good at Mathematics. I have had the
fortune of interacting with, and speaking to a number of super smart programmers. I've been nursing
this ambition to learn programming for the last 2 years now, but I kept telling myself I'm too old for it. All
this has done is to stoke the fire within me and it has got to a point where I am willing to do what it
takes to become a really good programmer. I don't want to set myself a milestone or a target around
the lines of 'I want to become an expert programmer by 2015 or 2025 because it doesn't work that way!
However, I am willing to put in time every day after work, for however long it takes before I can look at
myself in the mirror and say 'Enough of talking crap trying to sell software. Go out and do the real shit!
Go build software'. Am I too old to get started?

Ryan Stout
43 upvotes by Alex Sobolev, Simon Pacheco, Javier Sanz, Coleman Foley, (more)

My brother picked up ruby on rails, html, css, javascript, etc.. in basically a year with very little prior
programming experience. He had some money from our previous startup (where he did graphics) and
he put in 40+ hours/week for the year doing different projects and now I would say he's more
proficient than a lot of rails developers I know. We're doing another startup now, but he could be
making six figures somewhere if he wanted. I think DHH talked about it at Railsconf, but I think this
blog article applies to programming pretty well:http://sivers.org/kimo/ (Summary: there's no speed
limit to learning) One thing I would say is save up some money and quit your job (if possible) and just
work on learning full time (I know its a big jump, but its really hard to do two things at once, especially
when one of those things is learning to program) If you learned Rails for example, you wouldn't have
any problem getting a job if you spent a full year just working on learning it and doing some fun
projects along the way. Just my $0.02

Yad Faeq, "The Future Belongs to the Curious"


7 upvotes by Cristian Greco, Minhaz Mishu, Tolu Adebanjo, Andrew Chabs, (more)

"Never too old to learn more", at least that is what my grad father says. He is about 90 years old still
authoring books about law. So that is that for the last question in your description.
And here is what I can tell you about becoming a self taught programmer.
The rational of becoming a self taught for something is strong. However, it depends on how far the first
initial pushes will get you, because that ambition will need to fuel you to the rest of the way. That is
how you can determine how good or bad you could become at something.
Building a mantra or lets say a rough plan. When I call it a rough plan, I literally mean a rough plan
that will show you from where to go where, not something like 4 steps or 10 steps and if you can't
surpass one then your are done. So here is my rough plan for you:

Fun: You need to approach this as a fun activity to do rather than a learning path that might
never end or your office routine schedule. Here is what I mean by a fun approach:

1.

Gamers: They always want to mess around with their video games, tweak it, make a mod
or just break it in some sort of way, hence I became a programmer (Yad's answer to How many
boring steps in programming were there for you, before it became exciting?)

2.

Researchers: They want to automate some of the boring tasks they have to do in return
to get the fun results they need, thus they learn most of what it takes to get those things out of
the way.

3.

Puzzle lovers: Computation power can always come in handy to do some calculations
that we don't want to redo every now and then over the path of solving a big puzzle. (Puzzle
here is a metaphor for big problems).

4.

Sales & Marketing ?: Welp, that is for you to answer what's fun in pursuing the field in
the first place and now you can bring in programming power.
Same goes to any other field, since nowadays technology and programming have evolved enough to
effect every field of work & entertainment.

Fundamentals: Getting to learn 101 programming is not hard, in fact there are hundreds of
websites and academies online that teach 101 programming. But the other important part is
learning the fundamentals of computers and how they work, otherwise you could get carried way
and not knowing how all this gibberish on the screen is showing up.
1.

Reading books that introduce you to simple aspect of computers is important.

2.

Learning about data structure of the desired programming language can be quite helpful.

3.

Exploring algorithms and why the heck this thing is even important and how it can make
our your life a programmer easier.
Execute: Once you learn something try using that piece of info to create something out of it.
Perhaps, some schools capture this aspect in a good way. The students spend 16 weeks or so of a
semester to learn 7 to 8 concepts of programming and solving few problems a week using that
concept.
Learn by doing in terms of the small pieces of information can be your boost to:
1.

Get rewarded pretty quickly and try new things.

2.

Assert the knowledge once your brain tries to use a concept to solve a problem.
Community: You need to find some partners to be doing what you are doing, luckily nowadays
hundreds of online forums and websites can help you make this happen. Choosing a technology or
a programming language can always become a tricky thing, but you can always turn to the one that
has a bigger community and beginner friendly.
Repeat: Once you get a hang of how you learned one part, then you can go back and repeat that
same process on the other parts of the programming language. Being obsessed with learning
something can help find fun, learn basics and build further.

I can tell you that it takes time. If you are not patient then you will give up pretty soon. It takes practice
and building various bigger pieces to get perspective on how to approach larger problems.
There are a lot of resources out there, but I recommend using something that is comprehensive & self
taught friendly content.
Online Paid Courses:

Lynda.com have very long courses that can walk you through the basics of numerous
programming languages.

Tuts+ have some of the best short courses that can be handy, but not too detailed due to the
short episodes.
Free Courses:
This is very well recommended by many:

CS50x: Introduction to Computer Science

There are free courses from MIT open-courseware MIT open-courseware introductory Programming
Courses and also rest of the available ones on Coursera. Here is a rough list of the course lists:
1.

Here's a list of 154 free online programming/CS courses (MOOCs) with feedback(i.e.
exams/homeworks/assignments) that you can start this month (June 2015)
/r/learnprogramming:

2.

prakhar1989/awesome-courses
Table of Contents:

Systems

Programming Languages / Compilers

Algorithms

CS Theory

Introduction to CS

Machine Learning
Don't get lost or feel overwhelmed by the amount of content. Just choose something like an
introductory programming course and go with it.

Books To Read:
Aaah, there is just a lot, but I would still recommend reading some of them if not most, because books
are a different source informations that you can' replace.

Quora list: What are some of the best books on computer science?

HN: Must Read CS Books For Self Self-Taught Programmers

Reddit: /r/books-list.

Also one last piece of advice, don't get too attached to what you learn. Specially programming
languages, a lot of people feel violated once they are told a technology have become obsolete. Hopefully
you will become a great self taught programmer, but just don't be one of those. Adapt and learn once
there are new key player technologies in the field and remember to have fun.

Scot Lawrie, Programmer, Economist, Entrepreneur, ... (more)


35 upvotes by Narendra Reddy K, Mariyam Hassan, Dylan McCann, Rajesh Chandrasekaran, (more)

When I was 9, I remember refusing to take piano lessons because I thought I was 'too old to learn'.

I'm a bit younger than you are (23), but I committed myself to learning to code about a year ago and
today I consider myself pretty capable in a bunch of different languages. I put in 60-80 hour weeks, got
totally obsessed with it, and wouldn't step away from my computer until I had figured something
(whatever the topic was at that time) out.
The most important aspect of self-educating is really loving what you're doing. If you're unhappy
sitting at a computer and struggling with a bug for a day straight, you're going to give up pretty quickly.
Otherwise, you're going to learn a lot and it's going to be fulfilling. The more I know about
programming, the more I realize I don't know. But that just makes me want to learn more, study more,
work harder, and I think that's the key.
You'll know right off the bat if it's right for you. Start with something like Intro to Computer
Programming from MIT OCW (free online lectures), which is a fairly dry intro, and if you love it, you're
golden.
Anyway, my answer to your question: Talent can't be ignored. If you can code with the best of them in a
few years, no one's going to care how old you are (I wouldn't, at least). More importantly, no browser,
compiler, or interpreter is going to reject your code just because you're almost 30. Well, maybe IE6...

Yi Liu, Software Engineer


14 upvotes by Boris Krstic, Luke Hansford, Mahmoud Emad, Carolyn Cho, (more)

From personal experience, drive and interest are more important than age. My mom was in her late
40s when she started programming, and she now does it comfortably for a living.
Base on your background, I think you will have a lot of fun learning to program. I might suggest you
spend a month to follow every example and do every exercise in the first 6 chapters of Dive into
Python. It will get you to a point where you can perform typical useful tasks.
http://www.diveintopython.net/to...

Smit Sanghvi, self learning software engineer


37 upvotes by Phil Darnowsky, Robert Oswald, Rohitha Dassanayake, Luke Hansford, (more)

People age is directly related to his thoughts


An 80 year old can be young and a 20 year old can be old
and whatsover until you are mentally young you can learn anything
so go out learn until you get old
and for programing following websites can be helpful
A Reading List For the Self-Taught Computer Scientist
http://stackoverflow.com/questio...
Introduction to Computer Science and Programming, Spring 2011
(Edit):
Codecademy
Learn Programming Online - Learnstreet

What should a self-taught programmer read and learn?


What should I read and view to become a self-taught software engineer from scratch?

Oscar Bralo, .NET Software Developer.... www.topbl... (more)


57 upvotes by Kunal Suri, Jessica Su, Kanishk Chandra, Vinay Subbarao Ravi,(more)

If it is what you like.. then go for it!


Forget about the age.. forget about what people think.. forget about everything, only think about
yourself, and if this is what you like to do.
I started programming when I was 26, two years ago, with no prior experience, no math or cs
background, nothing. But I fell in love with code. And then I started to take part in algorithm contests,
to take online courses. I wrote my own blog too. And I didnt care about what people said to me like
"You cant do this", "This is not for you, because you need to go to the university to do this". But, after
two years of self-learning and doing a lot of online courses, and practicing A LOT, believe me, a lot of
hard work has went in - every day, struggling with code and reading a lot about algorithms, data
structures, C#, C++. So, when I started to look for a job, and they started to call me for interviews. A lot
of companies dont care about if you have a degree or not. All they care about is if you know how to do
what they need - thats the important part.
And you have one more thing on your side. Being a self-learner, they will know that you are selfmotivated to learn. This skill is necessary to get the job done.
And as a self-learner, you will need to demonstrate your skills on a regular basis. This is because you
have to make the best out of every single chance that's given to you. This the reason I wrote a blog - to
show what I do every day.
I hope that my personal experience helps you!
And if you need help, please let me know!

Joyce Babu
8 upvotes by Kunal Suri, Marlo Buarque, Mike Xie, Jatin Dhankhar, (more)

I took Biology for my +2. Electronics and Communications Engineering for graduation. Worked at one
of the top 5 IT companies in India as a data warehouse developer. I learned shell scripting during this
time. My Project Manager once told my team, "We made a mistake in selecting Datastage for this
project. Instead we should have asked this guy to develop the entire thing in Unix shell script, and we
could've completed the project in half the time". That is one of the best compliment I have ever
received.
I have resigned and created my own startup. I've hired fresher's from IT background, and taught/teach
them PHP. I've written simple programs in Java, Python and Perl. I've written a PHP module in C.
I was able to do all these without any serious IT education background. So, the answer to your question
is YES. You can be a self taught programmer.

Choose a easy to learn language and start learning. You don't have to learn every feature of the
language before you start. Try solving simple problems with the chosen programming language. Try
contributing to Open Source projects. Once you get the hang of it, learning another language is very
easy.
You'll never know for sure until you try.

Brian Bi, likes CS too much for his own good


514 upvotes by Saurabh Modi, Cheng Zhao, Kunal Suri, Hariharan Rangasamy,(more)

The answer to "Can I become a really good self-taught programmer?" is alwaysyes. In fact, all the
really good programmers are self-taught.

Tracy Lauren
23 upvotes by Hong Chung Chow, AAkash Mishra, Timothee George, Jigyasu Arya,(more)

You are never too old to learn programming.


I was just at Google IO and I met a person who was a product manager at Google and in her 50's left to
become a coder. now 2 years later, she is re-applying at Google as a developer. I expect they will let her
back in.
I am self taught. here is a big reason why self taught programmers are better. in college, they teach
mostly theory. Yes there are practical labs, but 80-90% is theoretical. Once these kids get out of
School, and into the real, non theoretical world, they are lost. I have hired many many programmers in
my time. I will take a self taught programmer who spent their 4 years slogging through their own
algorithms than a kid out of 4 years of college ANY DAY OF THE WEEK.
I tried to go back to school, having spent 15 years in the real world because I thought a degree in CS
would help my career. I made it (barely) through the first year. I argued more with the teachers who
could not answer simple questions, and did not make any friends. The begining of the 2nd year, I came
across a teacher that was literally making the students do something that would get you fired in the real
world. I refused, and failed the class. I did not go back.

Amit Lodha, Let's Talk About Anything.


2 upvotes by Quora User and Anonymous

Here is a tutorial my physics professor wrote. I learned python through this and with it discovered the
wonders of programming.

http://physics.nyu.edu/pine/pyma...

With this and codeacademy.com you can get a good handle of what programming entails. Afterwards
you can start to learn java and for that here are two resources you can use.
1.
2.

3.

Building Java programs by Stuart Reges


I hear Harvard University is now offering its CS-50 (Intro to comp sci) course online for credit
where, unlike the other online courses in things likeiTunes U, Harvard will provide you with exams
and you will get a grade.
Any intro to comp sci course on iTunes U.

Good luck!!! Its definitely a great time to start and have a lot of fun with it!!!
Lance Walton, Father, Programmer, Failing Composer
2 upvotes by Ali Hassan and Quora User

You're in your late 20s, not dead. Start reading, writing some code, build something small that
interests you, find some local group that can help you, etc.
If you we're asking about being a concert pianist, I'd probably suggest you do something else. This isn't
that hard.
But as well as learning a language or two and some libraries, I strongly advise you to learn some
fundamentals. Watch the SICP video lectures for example (http://lmgtfy.com/?q=SICP+video+...),
relational database *theory*, different methods for concurrency, etc.

Dave Wolf, Helping businesses make their data useful


14 upvotes by Darius Liddell, Seyram Komla Sapaty, Franck Dernoncourt, Liam O'Dea, (more)

You're only too old to program if you're too old to learn. I started when I was 29 and have been working
as a programmer or consultant for almost 20 years. In my experience, when you start late (once you're
beyond the 'I'm obviously a beginner' phase) people assume you've been at it since you were 14 and you
have a comp sci degree and all that stuff. Just make sure you don't let them down.

Self-taught programmers, have any of you created a curriculum for


yourself?
I plan to dedicate about 250-300 hours to "learn to code" this summer. While I want to leave myself
open to discovery I think a well thought out, general curriculum will be useful. I will likely model it after
some of the 9-12 week "dev bootcamp" programs.

Jin Suk Park, Mech E. student in Postech, involved ... (more)


27 upvotes by Shi Yu, Arjun Verma, Austin Ringer, Selvaganapathy Duraiswamy,(more)

I never knew anything about programming before I took introductory programming class in my first
semester of freshmen year.
As a ME student I had to teach myself without taking CS classes during semester so I simply went
through all the lecture notes on Data structures, OOP, and I also did assignments that were handed out
during semester. I also did some class projects in standford (i.e. Pintos)
Aside from those 'academic programming', I got into hacking club in my school, where I learned linux,
python, unix api programming, and a general sense of how to teach myself by googling. I also had to
learn how to hack websites so I taught myself web dev in w3school.
I generally know more than my CS friends, not because I took more classes than them but because I
kept asking questions anything how computer works. So keep asking questions - how does compiler
work? How does facebook remember me?
Some stuff are too sophisticated to be on google. Thats when you go to amazon and buy the book.
EDIT:
I didnt' write the details because my phone was short on battery. This is the path I taught myself: (in
order)
1. C/C++
2. Data Structures
3. Computer Systems: A Programmer's Perspective
Gives you a better grasp of how computer works and what you would be dealing with when you become
a developer. I think this is something that distinguishes self-taught programmer and formally educated
programmer.
4. Operating Systems Concepts(The dinosaur book)
I finished the pintos project( course project in OS class in stanford).
After you read these, it entirely depends on which part of computer science you want to stress on. I
excluded those frameworks/language/linux because I think they are something to get used to by laying
hands on, not to be studied so seriously. Although people distinguish 'formally educated' programmer,
I doubt they apply more knowledge than they have learnt from above list when developing. (Of course,
some sophisticated subjects such as vision processing, graphics, algorithms require further studies).

Raymond Oconnor, Project Manager


7 upvotes by Anya Deason, Mahesh Ssuke, Javier Romero, Austin Ringer, (more)

I learned to program on my own starting at age 12. My path probably isn't for everyone, but learning in
this order really helped me.

tl;dr: basics of hardware, assembly, C, then whatever you would like to


Build a basic understanding of how computer circuitry works. Know the fundamental components
(e.g. transistors, resistors, capacitors, diodes, etc.)
Next, learn assembly language. This will teach how code directly interacts with the hardware on a
computer. I don't recommend programming in x86 assembly (what your computer is probably
running); its way too complicated. Start with an emulator. Learn the basic operations, control
structures, and the fundamentals of how the computer works.
While you will probably not be programming in assembly code very much, it will teach you what really
happens when you create control structures (e.g for and while loops), and give you a base for
understanding higher level programming languages.
Next I highly recommend learning C. C will teach you how most higher level programming languages
work, since most languages are similar to C. I highly recommend using C (or proceedural C++) as
opposed to an object-oriented language. Learning a proceedural language will build upon your
assembly code knowledge.
From this, you will have the basis to learn pretty much any programming language you want. More
importantly though, this progression will help you really understand what happens when you write a
line of code.

Amirouche Boubekki, Apprentice


4 upvotes by Austin Ringer, Burim Trdevaj, Cynthia Taylor, and Nisa ban Botrey

I don't remember when I started but I have strong high oriented bias from beginning before knowing
about higher level languages. I started with some kind of BASIC on AMSTRAD then QBASIC on DOS,
VB on Windows 2K... but didn't dive too much and never completed more complex programs than
calculators. BASIC, QBASIC and VB expressive power as programming language was too poor for
keeping my interest high enough.
Later, I learned about PHP/mysql and build somekind of social network when blog and pingbacks were
all the rage (around 2003). I don't remember struggling much, nor about much copy/pasting.
copy/pasting is no shame.
Since then, that's what I do. I have an idea about a program that interest me and build it, gathering the
knowlege where ever I can (mailling lists, planet's like Planet GNOME, scientifical papers, other
software's code, technical blogs, conference talks e.g. , hackernews, lambda the ultimate and... Front
Page...) mostly on the Internet. C is the only notable exception, which I learned in a book from
University's library, it's not K&R. If you plan to learn C++ I advise you to dive into C++ Frequently
Questioned Answers
In 2006, I build my first project for school in Python. Since then, I have an hard time putting it aside. I
had to learn, for school, other languages like C, C++, Java, Caml, LISP, Prolog, 68K asm and did some

electronic stuff. And still much prefer coding in Python. The the first advice I give to any aspiring
Python dev: you will learn Python, it's easy, but it will bite you. Stay open minded and learn other
languages at least a low level language like C.
I don't like much "schedules" or coder's challenges like project Euler, I prefer the
@http://datascienceretreat.com/me....
Basic understanding of major Data structure and the related algorithms is helpful, knowing them by
hearth outside interviews with big corporations is useless. Try to extract the substantifique moelle, the
essence, the general ideas behind those algorithms like @http://en.wikipedia.org/wiki/Div.... Don't
push you too hard, (deep?) understanding can take time.
(Wikipedia is always a good source of knowledge in computer science, basics are readily available, but
most of the time it's not enough)
Go for the obvious first! In particular, at first, don't try to understand "which web framework is
better?" it will delay your project first version without much immediate benefit. And you will have an
harder time to market professionally the skills that you might get from it. For instance:
- JS -> learn angularjs (after learning js of course)
- Python -> learn django
- PHP -> learn symphony
Also, don't start coding kernel linux drivers right away. But start with C language nonethelss. If you are
interested in Linux kernel readhttps://lwn.net/
Anyway most of companies look for "code monkeys" and that's the primary asset of any good engineer.
Summary:
- Starting with dynamic languages is good choice (anyway...)
- Have a "product" goal in which you have strong personal interest
- Cogito ergo sum: think, create, learn and stay open minded to other and new things, be rational.
This is the mindset that led me to what I do now, and allow me to feed my body, even if my mind is
feed by what I'm planning to do next...
Also I advise you to dive into Software Craftsmanship even if you won't learn "code monkey" skills that
can be easily marketed. Some people, still replace "engineer" by "craftsman" on their resume.

Samuel Bird, Co-Founder and Lead Developer at VeriTech


8 upvotes by Anya Deason, Per Sebra, Shams Kazi, Austin Ringer, (more)

Loosely. There is/was a general theme:


1.a) OOP basic and concepts-Java for which i used the internet mostly and just practised.

b) learnt about mobile dev with java on the android platform- it was fun and I learnt to debug as well
as generally becoming a better developer.
2. Decides to learn some python and a tiny bit of Django.
3. Functional Programming using SICP.
4. Bits of DB(sql), web development(java ee) etc.
I hope to learn:
5. Objective C and some more mobile dev.
6. Advanced topics such as OS, architectures, networks, AI and so on but i am not certain of a
curriculum for that.
I have also been learning a lot of the math but I have been doing that anyway just for the sake of the
mathematics.

Jonathan Eyler-Werve, Instructor at Dev Bootcamp


12 upvotes by Xiao Wei, Biju Jose, Mahesh Ssuke, Austin Ringer, (more)

The hardest thing to do at home will be learning team skills and project flow.
Things that are commonly left out:

You should be working with git and Github (or similar repository).

You should learn how to plan a sprint and communicate that to a team.

You should learn how to write a commit message.

You should learn how to talk to users of the software you build.

You should spend time pair programming.

You should learn how to ask questions.

You should learn how to admit when you're failing (whatever that means to you) and ask for
help.
You should cultivate relationships with mentors.

One version of a "curriculum" might be to attend ten hackathons.


Best of luck!

Carlos Tobin, Quoran 49,006


14 upvotes by Sushil Chandekar, Anya Deason, Abilash Gr, Francisco De La Cruz,(more)

If you want to learn to code this summer, use The Odin Project. It's free.
http://www.theodinproject.com/

Edit: "Summer" is a reference to the OP's question, not the length of time required to learn a new skill.
In terms of time, 1000 + hours would be required to learn to code.

Why do companies like TCS, Infosys, IGATE, Syntel,


Capgemini etc., hire students who know English well
but they are zeroes at the technical level, especially
in the engineering field?

Aniket Mohite, A Drupal enthusiast, A travel lover &... (more)


406 upvotes by Mukul The Champ, Keerthiha Senguttuvan, Anvesh Yadav,Sandeep Godara, (more)

Hi there, I am an engineer myself & I surely agree with that. :D


But when MNCs (like the ones mentioned above) hit engineering college campus for recruitment, they
already have a clear mind set of how they are gonna hire.

The number of students to hire


The ratio between boys-girls to hire. (Yes this is true)
- They need certain ratio as well, if they are looking forward to hire more number of students
(rather than the bright 4-5 students) .
- Until & unless company is looking for mechanical engineers, then they will look for male
candidates mostly.
Students willing to relocate, wherever the requirement arises.

Now, the mindset that they have while hiring is

Students don't have practical knowledge. They just know some basics. & the company will have
to teach us what professional working knowledge is.

It doesn't matter what students know, they are gonna allocate joining dates & projects as per the
company's requirement & not according to what students are good at. (Debate this topic with any
amount of engineers & more than 95% will agree.)

Now for the good English speaking student's selection syndrome -As they know that all the
students need to be trained ground up, students with good spoken English, can have edge over others
in following ways

Can be trained & assigned to some product based project. Product support. Training is not that
tough. Skill-set easy to acquire. They can be used for client interaction as MNCs mostly have big
products already built with recurring client support-n-development.

Training them is easy, skills or not, they can be put to other uses, like admin, documentation,
etc.

An Engg technically strong is good for development itself, while a good communication skill-set
having student if trained & gains good knowledge, has a better progress graph.

MNCs also have to think of their employees, from the point of view of presentation while
communication. Hence the edge. If they communicate & present so well in college, they may have
better prospect in their company in future.

I am saying this from experience as well. I had 4 MNCs come to my college in my final year of
engineering. They selected about 65 student from the batch of 110. About 90% of the selected students
did not have any technical knowledge. Even the final year projects were purchased by them from
outside. Some of them were good in college debates & all. And yes, these no technical knowledge
having candidates got selected as well. & as i said earlier, CURRENTLY, they are either on backend
office work or some "Product development" work.
For me, these MNCs were offering jobs in Pune & me being from mumbai, I didn't bother sitting for the
campus drive. Anyways, I was avoiding MNCs at start of my professional career as I wanted a specific
job profile & MNC's happily won't give you that. Until they are technology specific giants like
Microsoft/Google. :P
Now I am a drupal developer & I am glad that now MNCs use Drupal on large scale, as well. I also work
as a drupal freelancer in Mumbai, whenever I get time.
A happy drupal developer.

Rahul Sathyajit, Day time Analyst, Night time Hacker


93 upvotes by Satwiki De, Bikesh Singh, Ashwini Menon, Abhilash Tiwari, (more)

Companies like TCS, Wipro, Infosys, IGATE et al fall into the wide ambit of what are collectively called
as IT companies in India. These companies mostly operate in the service sector and occasionally delve
into core engineering services, but delegate such projects to their core teams. When coming for
placements to college campuses across the country they usually look for the following qualities and
select those students that satisfy a majority of the set criteria:
1. GOOD communication skills : This forms a very important aspect of their selection procedure. I
have stressed on the word good because they are not looking for excellent orators or public speakers.
And contrary to popular beliefs, they arent even looking for students with great English. They want
students who can COMMUNICATE well. The emphasis here is on communication and not language.
There may be a few people out there with a fairly good grasp of the English language but are unable to
effectively express what they want to express. Such students get weeded out in later stages. In short, if
the recruiters feel that you are able to effectively tell them what is on your mind, convey your ideas with
fluency, even at the expense of scoring low in the English department, they will rate you well and will
most likely consider you for the next stage. The intent of looking for graduates with good
communication skills is fairly clear the service sector involves a good deal of interaction with the
clients. And in companies as large as TCS, Infosys, etc., there is a good chance that the Clients may be
from other Countries. So it becomes important that the graduates are able to communicate properly. At
the end of the day, no one is going to judge you for your grammar or sentence structures, it is all about
the ideas you have and how you can present it to someone in front of you. If you are able to do so, by
whatever means necessary, you are the right fit.
2. Decent Technical Knowledge : It is wrong to assume that they hire students with ZERO technical

knowledge. That is never the case, and even if it does happen, it is on very rare occasions. Such
companies do not want brilliant technical minds for a variety of reasons, the biggest being the fact that
such graduates tend to always look for something more technically challenging and a bigger pay
package. Also, some people are not tailored for a desk job and get frustrated with the occasional
monotony of the work environment. So IT companies steer away from hiring such students as they are
fully aware that such students will eventually, within a couple of years, move away to a different job. So
they look into the next level of technical minds. The supposed second benchers. The ones who have
managed to maintain a decent and average CGPA and have breezed through college, one exam at a
time. Do not get me wrong, some of these people are technically very adept and skilled too, but fall into
a more chilled out category. The ones that IT companies are willing to wager that they will stick around
longer. (More often than not, they are wrong here. But I am no one to say.)
3. Diversity : It can also be seen that such companies hire from pretty much all departments and not
just CS/IT for the role of developers, etc. I remember asking for a reason when they had come
recruiting to our college(no names taken) and the answer I was given was that they are looking for
Engineers. Not just application developers. While at that point, I did feel that I was being given a BS
answer, it is only after a fair amount of thinking and reading on my part did I understand that what
they said was spot on. As an Engineer, you are trained to think with a certain technical tilt to your
perspective, regardless of which trade you belong to. A mechanical engineer may be able to come up
with the solution to a problem better than a CS grad, it all depends person to person. Out of the box
thinking or a technical way of engineering a solution to a problem is not limited to CS/IT crowd.
Problem solving skills is the requirement here, not your coding abilities.
4. People skills : Team play and ability to handle, interact and gel well with other members in a team
forms an important skill set that recruiters look for in a new recruit. The main reason behind this being
that compared to other companies, IT firms generally tend to have larger and more structured teams
and it becomes imperative that the fresher be able to handle co-workers at all the levels of the
hierarchy.
5. All rounded competence : Whatever may be the criticism against the hiring process followed by
some of the afore mentioned companies, one cannot deny that only competent graduates are hired.
While they may be lacking in some aspects, they tend to make up for it in certain other aspects. This
leads to a workforce that is over all quite well balanced with a healthy mix of a variety of workers. No
two people are the same and it is unrealistic to expect companies to hire the same type of individuals. It
is also incorrect to generalize on the quality of recruits based on just a few of them.
All in all, in contradiction to what society tells you or perceives it to be, working in an IT company is a
part of the learning process and should not be looked down upon. Also, it is not as easy as people make
it out to be to get into one of these companies. It requires a certain level of preparation that must not
be neglected.
The Service sector in our country is the fastest growing sector. While some can argue the lack of job
security or pay in such large firms, the fact remains that if you are competent, you make it. Regardless
of the external circumstances.
I hope that answers your question. I may have beaten around the bush a little, but that was to just lay
the groundwork for my answer.

Meghna Kulkarni, Environmental Engineer, Foodie, High ... (more)


16 upvotes by Guruvesh Singh Jhala, Nitin Pathrose, Rinku Patel, Abhishek Kulshrestha, (more)

In todays world communication is only through english. writing, speaking skills, presentation skills etc
can only be learnt over a long period of time. These companies don't select ppl just with good
command over english, but those also who have basic knowledge about it and show promise to learn
and improve. They don't select freshers with zero technical knowledge but those who have scored 70%
+ at graduation and at some time in their life have studied any programming language or anything
related to IT. business skills or language can't be learnt easily but technical skills can be. Hence more
emphasis is put on language. And answering to someones question above that if students can't learn in
4 yrs, then how can we learn in training period. What we learn in college is so much different from the
actual requirements. So they train us according to their needs.

Dhruven Vora
6 upvotes by Yogesh Kukadiya, Eeshan Mishra, Zeeshan Siddiqui, Aniket Thumar,(more)

Companies like TCS,Infosys, Capgemini etc.(will be refered as IT companies hence forth) provides
consulting and IT services to the clients. They generally deal with clients in markets like US, Europe,
Africa. English is the key that keep these companies in the competition.
Here are some of the reasons that Indian IT companies hire students with good English but may be
'Zero' in tech.
1.

To compete with the US or European counterparts in outsourcing business, these companies


need to keep their cost low. Students with high technical skills generally ask for higher pay.

2.

Since the projects are time bound and large in scale, the team size needs to be large. This is
called "showing skill strength" in IT industry. more the skill strength, more are the chances to win
the deal. Here also cost matters.

3.

IT companies often need to co-ordinate with the clients. This result in frequent visits of
developers to support the clients technically. English is mandatory for effective communication
here.

4.

Every developer does small tasks and with require a specific skill set. which is imparted to them
through trainings.( and Google is always there to help)

5.

Last but not the least, Quality of education in India shows what kind of engineers will be
produced. So its impractical to find all the employees with all the skill set (here very good technical
skills).

Hope this will answer the question.


Atif Karbelkar, Software Developer. Geek. Electronics... (more)
125 upvotes by Guruvesh Singh Jhala, Yogesh Kukadiya, Harpreet Singh, Sachin Kharude, (more)

Sometimes they even take people with bad English. The Indian IT industry is all about dealing with the
client with diplomacy. The interviewers know that the top engineers will anyways join product
companies where salaries are better. They look for people with enough intelligence level to go to their
local subzi wala and buy tamatar for 10 when the sabziwala says 12 and later come home and boast
about it.

Vibhor Sharma, MCP


5 upvotes by Monica Gupta, Prashant Singh, Nikhil Jain, Senthil Shravan, (more)

If you know something you should be able to communicate that knowledge to others.. This is the aspect
of service based companies where you communicate with clients and provide solutions to there
problems.
I would not agree to statement that they take people with 0 technical skills.. I've been there and
experienced that believe me they care for knowledge more important they "judge your potential of
learning"
That matters to them.
And I would like to take this opportunity to clear misconception about service based companies there is
nothing "core" in it industry. People on service based companies work on same technologies as
product based companies but the difference is that they focus on technology which are more business
centric. But what's the problem in that as technology is ment for providing service to people like tcs
managing psk in India.
Rather then some product based "core" company making Firefox plungins.

Richa Ritwika
3 upvotes by Sumit Pandey, Shahid Athani, and Rahul Srivastav

These companies are global IT service providers and they have clients from places like US, UK,
Australia, etc. Thus it becomes essential that people they hire are able to understand the needs of their
clients. So in this english plays an important role. As far is as technical knowledge is concerned the
knowledge is checked during the interview rounds. Also companies like TCS, Infosys, and Wipro invest
in training of employees when they join the company. Thus technical knowledge is provided during the
training program. It will sad to say that people who are hired in the engineering field are at zero
technical level because I hope you do understand engineering is technical course so how can one have
zero technical level.

Kishore Neelamegam, Founder & CEO, Megam Systems https://... (more)


1 upvote by Arvind S Kumar

English shouldn't be the only yard stick.


A German speaks in German,
French in French,
Chinese in Chinese, whereas a
An Indian(Hindi/Tamil et. any dialect) speaks to a fellow Indian in English.
When we don't feel proud of our dialect why do you ask TCS .. et al.
When TCS/et. all are not in a position of demand then you'll have to fall in line with the clients need.

When I say demand which means high value work that would differentiate us.
When that tech vitality grows to high value you'll find language being dimmed and maybe you can have
translators and express yourself.

Anonymous
5 upvotes by Sarang Kaur, Deep Saha, Shivanand Kalshetty, Santosh Ramu,(more)

Having worked for one of the above mentioned companies, I have experienced that common sense and
little dedication is more than enough to excel and be recognized for your work. Also communication
skills would come in handy to handle clients or your managers. Hence the same is looked for in their
interview processes.
There is nothing that cant be found on google :P Who needs technically brilliant guys when the work
quality itself is not expected to be brillian.
Also they wont be able to afford the really good people.

Ankit Kumar, Indian by birth, Indian by heart


1 upvote by Yadhu Gowda

As you know that TCS, Infosys are MRC ie. mass recruiting companies
When they come for campus placement, they recruit in large number because they only want people
who knows how to use a computer
They give training for a few months .So, they don't care you are from which branch .
Another aspect is that they have a bond of 2 years ie. after you join ,you can not leave the job or else
you have to pay 50,000.
In this way also they make profit as their packages is around 3.16 lakhs .

Deepak Gupta
7 upvotes by Shahnawaz Ikhlaq Ahmed Khan, Susharm Munawalli, Suraj Tamgadge, Mahantesh Patil, (more)

Its a tough worl out there buddy. First of all, had these companies hired zeroes, they wouldn't have
been able to get repeat business and become billion dollar behemoths.
Secondly, understand this simple fact. These companies are servicing clients from US, Europe and
Australia. All places where English is the means of communicating. If you can't communicate with
them, you can't do squat. No understanding of what they want, no signing of SOW, no nothing. So if
you are looking to get some villager who might code in C but speaks like a villager, then you are not
getting hired. Technical skills can be upgraded and companies spend a lot of money to do that.
However, they don't want to start teaching English to a 23 year old.

Suraj Sridhar, Arduino DIY,IOT DIY,Technocrat

1 upvote by Tulika Vishwakarma

Because,acquiring project from a client competiting with other firms is gigantic task.....this task is
accomplished by top level managers...thru their fluency in language....
Secondly,u must convince the client in suitations of discrepancies....like code bugs....or u applying
some cheat code.....
most important of all,speak confidently and flawlessly....

Akshay S Ashok, Industrial Production Engineer & Free... (more)


Like companies mentioned above thy r not worried abt engineers who work wit thm for long term thy
hire 1000's of students evry yr nd thy think that people wit good communication can excel the trainin
easily which will help thm spend less money on such trainin programs.

Vay Bor, I'm Unique like everyone else.


Because whatever may be the field if work, communication is key.
For e.g. : What's the use if you are a very good doctor but cannot communicate to the patient about his
diagnosis.
Similarly, the listed IT companies are mostly service based, which means you are solving your
customer's problems. If you can't communicate with them effectively, it won't serve any purpose. It
doesn't matter if you are a guru in programming /coding. Communication is key.
If you are good at both coding and communication there's no stopping you & Learning English is much
easier than learning a programming language.

Nilaratan Das
3 upvotes by Chanchal Khemani, Saikat Guha, and Rajnish Kumar

As we know, IT is all about Information Technology and we need to play with information. In global
business English is the one medium to share requirement. Those have good command over English
they can easily analysis the problem or issue. And also only English skill does not fit in all the
organization. Hope this will find well.

Sai Ramesh, SAP IS Consultant


5 upvotes by Anup Salve, Rakesh Venki, Krupal Shah, Sarath Kumar, (more)

In many consulting companies people with engineering degree doesn't do any engineering or develop
products! they just manage them and companies believe that a person with good communication will
have ability to learn more than that a person with low communication.

Rishi Raj Singh, "being absolute that there is no abso... (more)


3 upvotes by Anilkumar Panda, Ershad Ahmad, and Rini Michael Soosai

don't say such things for these companies and people working in them. we are living in a society with
variety of needs. guyssss,,look at the bigger picture: some IT guy earning 30 k per month.....now this 30
k go to different people......rashan wala lala, press wala, sabji wala, kaam wali etc etc....dont you think
this IT guy contributing to earnings of so many different people....may be this 30 k look a meager
amount in present scenario but this amount definitely adding to lives of many guys and their
families......an average guy getting job, earning his/her livings is always better than an unemployed
youth....

Ananda Rajeshwaran.J, Begin with Disbelief.com


14 upvotes by Sarath Kumar, Yogesh Kukadiya, Sarang Kaur, Mohammed Saleem,(more)

Majority of their business is to maintain already existing applications for which communication is vital.
They r not building the next google. They r looking for clerks with average technical knowledge.

Braj Mohan
4 upvotes by Kowthamraj Vs, Sarath Kumar, Tajammul Pasha Zuffari, andDhanashri Kulkarni

Name any compiler , OS, programming language etc made by any of indian IT companies.
(Forgive me if you can quote any rare example)
So whats the need of super technical knowledge to get hired in these companies ?

Anonymous
They hire only when there is requirement (every one knows that). If the requirement is 100, they hire
more than that like 130 or 150. some very good in english some zero in english. then they give training
people who fit for the project will be put in to it and others will be put in to bench and later in to some
call taking process and night shift and crap according to the requirements. Then these students (not
even students, even people with experience by faking about the job profile) will start fighting, crying
and contacting HR to get a a good project.
The above mentioned is not my experience, but of many of my colleagues. Some people might not
agree which i don't care. Just wanted to share it.

Karthik Panjaje, Works as a web developer.

It is because they know that whatever theory students have learnt in their engineering will rarely be
applied in such companies. Hence they take people with good aptitude and communication skills as
such students can grasp their training material soon and be one more robot employee like the rest!

Anuradha Lakra
1 upvote by Shlok Varshney

I also have discussion about this thing with one of my friend from MNC who went out for campus
hiring as recruiter. He said we hire on the basis of good communication and confidence of the
candidate. By this attitude most of the deserving candidate stay back. This criteria of selection is very
wrong . They do not want real engineers. They believe any donkey can be trained and used.

Srinivas Vaasu
41 upvotes by Akash Agarwal, Ronak Jain, Aakhil Shehabaz Shaik, Parth Shah,(more)

I remembered the word said by a great person from india "we are hiring the graduates who have 85%
communication skills and 15% engineering skills". That is the reason worlds gaint companies like
Microsoft,Google,FB,Yahoo,Twitter now instagram,pinterest etc was not found in india.

Phani Kumar Yedidi, My Passion <3


Its not that they just check for only communication. Any company be it any service company don't
expect something special out of a student who is just grsduated. All they look for is the logical ability to
solve problems which is the very basis of computing and the ability to communicate well. If a student
possess more skills that's always a plus.

Anonymous
Dont you guys think, such questions have an adverse affect on India's future, and companies who wish
to outsource back off?
I have worked in some companies and most of the projects require decent understanding and
managing the existing code.

Devarajan Mathan
Several of the activities [ Business ] in these companies are to do with talking / writing clear
communication with customer[s]. Hence they insist on this. Parents are more keen to trumpet that
their wards are at these companies rather than in a core Engineering Company

Asif Ali
1 upvote by Subbu Royal

The answer is simple. Actually this answer is given by the TCS associate who came to our college for
pre placement talk. He told that it is easy to give someone technical training than language training. I
agree to this point.

Ashish Sirohi, CS Graduate, Hungry and Foolish


7 upvotes by Satish Dasyam, Zeeshan Siddiqui, Arjun Singh, Protik Khotel, (more)

Simple. They need skilled cheap labour not engineers.

Pratik Sarkar, ................


1 upvote by Sowmya Patel

TCS CTS recruits zero knowledge people. The rest require a bit of knowledge. Also it varies based on
the position you are applying to. Looks and presentation matter as well.

Harshit Gupta, 'Questions' is where I live..


2 upvotes by Suraj Sridhar and Giridhar Vp

English because most of the customers are from English speaking nations.
It can become French if suddenly and miraculously a million French customers spring up.

StoneCold Marvolo, Engineer


4 upvotes by Devesh Ruparelia, Sarvesh Kumar Mishra, Krupal Shah, and Sumit Kumar

First of all, these companies dont need an engineer.They need a english speaking labourers who could
handle their clients.

Yogesh Kukadiya
8 upvotes by Shivanand Kalshetty, Kapil Dua, Bhumika Singh, Anbudan Shakthi,(more)

@Aishwarya Kulkarni
If they can not acquire technical knowledge in 4 years of engineering then how is it possible with 3
moths training?

Sarath Kumar, Dreamer and Lover


9 upvotes by Kekar Narshana, Ankit Srivastava, Yogesh Yogi, Indrajit Ghosh,(more)

education can be learnt but manners and makeup can never be learnt. so that's y they take students
who can makeup situations

Anonymous
2 upvotes by Kamal Keswani and Krisha Raajan

You are not correct. These companies hire people who have technical knowledge but zero in English.
You will feel like vomiting speaking to the villagers who join these companies

Navneet Rathi, Don't know difference between then an... (more)


2 upvotes by Ajay Gaikwad and Ghanshyam Kalmegh

Is that true ?
I guess then they should be having english test instead of technical interviews.

Shanmuga Sundaram
Great Question. I too was thinking this for a long time. Not only MNC, 99% of IT companies in India do
this.

Dheeraj Agrawal
3 upvotes by Gowtham Raj, Dipak Raghvani, and Krupal Shah

like government job

Chalam Ratnala
These are not IT companies , These IT factories

http://www.quora.com/Learning-to-Program/I-don%C2%B4t-have-troubles-with-problemsolving-but-when-programming-I-feel-like-I-waste-too-much-time-on-stupid-simple-things-likesearching-for-a-forgotten-semicolon-or-things-like-that-How-could-I-fix-that

What can I learn right now in one minute that will be useful for the rest of my
life?
Jay Mehta
2.4k upvotes by Diya Gem, Zoya N. Faruqui, Abhinav Srivastava, Keerthi Ganessamourty, (more)

When your cell phone charger is plugged into an outlet and not charging your phone, the charger still
draws current (~0.01 amp); which means your charger still uses power (~1.2 W) even when it is not
charging your cell phone. There are 6 billion cell phones in the world. If everyone leaves there charger
connected to an outlet, how much power (in GW) is being wasted? ANS: 7.2 GW
So, the next time you are done charging, remember to remove the charger from the outlet.

As a self-taught programmer, how do I ease the transition between


learning basic programming to creating larger projects?
I learned the essentials of Java last year. Hearing the best way to get better at a language was to
simply write projects with it, I decided to tackle a full-blown application (GUI, web crawling,
algorithms...). Even though my program is more or less working, I feel as though I'm making design
decisions purely based on whim, many of which are probably really bad decisions that I don't really
know how to fix.
How can this kind of sense possibly be learned? Even by reading source code from similar
applications, often it's difficult to apply to different projects, different functionality...

Jonathan Fenocchi, Sr. DevOps Engineer


8 upvotes by Abhiram Chivukula, Calvin Huang, Kunal Suri, Enrique Benitez, (more)

Here are some facets of software development that are realistic and delineate the difference between a
software engineer and a hobbyist. Focus your effort in this realm, and you will certainly learn a lot.
Almost all of these are missing from the application you've written. Incorporate them into your
program.

Deadlines. "We need this by Tuesday, even though you're working on that other thing that's also
top priority."

Teamwork. Code reads. Source control and flow. Learning from others. Designing your
application so others can read and modify it, and making it modular enough that work can be
parallelized.

Public relations. Yes, I said "marketing" is an important part of being a software engineer.

Quality assurance. Did you write tests? Are they automated? What do you do when you can't
write new code because of bugs?

Business cases. "We have to make this multi-tenant for cost savings, but the tenants can't see
each other under any circumstances!"

External requirements. For example, the full-disk encryption. Maybe you wouldn't add that
because you want to, or because it makes sense for your business.

Deployment/rollout. How do you get your code to your customers? Hosting it on SourceForge
won't work forever. Besides, how do you build and package your application?

So, how can you add these things to your application? Here are some ideas.

Open-source it.

Host it somewhere, and then offer a "hosted" solution, which you must deploy and maintain.
Think Wordpress. You can download the open source version, but you can also buy a Wordpress
blog onWordPress.com.

Marketing. Get a twitter account. Start a blog. Make sure you've got a web site. Write about it,
accept interviews on TechCrunch.

Open-source it. More people working on it will force you to learn about teamwork.

Since you're marketing it, start announcing impending releases and their dates. This will keep
you honest about your internal deadlines and milestones.

Use some project management software like JIRA, for example, and make it publicly visible.
Cassandra does this. People can file bugs, see bugs, see features, and see their progress. That's
transparency.

Offer "enterprise" or other special editions. This will teach you about maintaining different
versions of your application, and how to design your application to avoid code-copy or similar antipatterns.

Write tests. For everything. Functional tests, integration tests, unit tests, and so on.

Look at TravisCI. That's good for open source projects. It'll keep you honest, and you'll have
builds. You'll have to learn about releases, announcing them, supporting legacy versions,
backwards-compatibility, deprecating features, and forwards-compatibility.

Sell it. Well, license it. Or something. Obviously make sure your open-source license permits it.
I don't care if you only sell 1 copy to your grandmother. It's not about making money or starting a
business. Don't worry about that. But if you sell it, then you have a customer. Now you have
business cases. You have requests. You can even sell it for free. I mean, it's open source, after all,
right?

Disclosure: I'm a self-taught engineer. I've done all these things with open source projects. They were
all "failures" in that none of them made me wealthy. But they were all successes in that they yielded the
experience and skills I needed for my career.

Simon Kinahan, Software developer, EDA guy, reluctan... (more)


This is why you need to create real projects to learn - you need to build up experience as a guide to
which decisions are good and which are bad. Use your application and have your friends use it. You'll
find bugs, you may not like using it compared to alternatives, and you'll think of more features to add.

Trying fixing the problems you find. Some of them will be really hard to fix - those are the places where
you made bad design decisions. Consider how you might have written the application to make it easier,
and then rewrite it like that. This is how you learn.

Richard I. Polis, Entrepreneur/Consultant


Large scale systems are not merely overgrown versions of small ones. If they are to be successful, they
also must differ quite a bit in concept. This isn't easy to learn when you have people to explain it, and it
is nearly impossible to learn on your own.

How do you start doing real world projects and become a


proficient and self sustaining programmer after learning the
basics?
I have taken intro to python and c++. Even though I know the basics, I have found it to be extremely
difficult to move beyond that and start learning to apply it and learn more advanced topics. Real world
programming seems a lot more difficult and varied. I am just not sure where to start and how to really
become proficient and self sufficient. I have been thinking about trying to transfer to a more scientific
and engineering elite university for the structure in the curriculum but even then I have discovered that
the most important learning will be done outside the classroom.

Scott Gartner, Written several parsers (recursive de... (more)


1 upvote by John Clarke

There is no easy answer, programming is hard. That's why it can pay quite well. If it were easy,
everyone would do it.
I've written this before, but it's important to understand that schools prepare you with the basics and
then the most important thing you will get from school is learning how to learn so that when you
get into a job you will be quicker on the uptake. It is physically impossible for them to prepare you for
any possible situation, the field is much too large. Chances are when you get your first big job you
won't be using anything close to what you did in school (computers, languages, problems), etc.
So, on to advice:
Intership
Most big companies and many small companies (especially startups) have short and long-term
internship programs. You won't get a lot of pay during this time, but since they are giving you realworld experience and a regular staff of developers that you can use as a resource, it is usually well
worth the time.
Be aware though that in some big companies the intern program can be very (very!) limited in scope.

Many big companies have internships that are well supported at a high-level, but in the trenches the
programmers just see it as a drain on their time (and one forced on them to varying degrees) and
without their buy-in you will find yourself either doing scut work or simply ignored. When you
interview, think of some questions to ask that will identify these situations.
Software startups are a much better deal, in my opinion. In a startup you usually have a small stable of
programmers who are dedicated to the project and can't afford to hire an intern that won't pull at least
some weight (though the expectation will clearly be less than an experienced developer). Also, in a
startup, you generally can't have specialists, everyone has to do multiple jobs (it's just the way it goes
with a limited budget). Don't turn down any challenge, even if you fail you will learn plenty.
Any way you go, you will get out of it what you put into it. If you fail to take advantage of the more
senior developers to teach you new stuff, then it's all on you. If you don't look through their existing
code trying to learn how they solved the various problems, that's on you too. Take every opportunity
for code review.
Remember that when you are interning, nobody there wants you to fail. Take every comment from
that standpoint, and figure out how to learn from each experience.
Open Source
Join an open source project (or two or three). Find a project that interests you, but be picky as well.
The quality of the projects out there in open source land range from complete crap to genius. You
might not want to jump into genius just yet, but you definitely want to avoid the crap. The good thing
is, by definition, there is lots of code available to you before you even approach the project, so you
should be able to gauge the quality of the code (and test the program to see if it sucks).
Be ready for some very harsh (or apparently harsh) criticism, just like any other open forum on the
Internet. Some people simply can't write text criticism in a way that doesn't come across as harsh.
Don't take it too hard. Also, in most projects there is a gatekeeper for vetting code submitted by
unknown programmers and not every change you make will make it into the code base, often you will
get no clear reason. Keep at it, since you probably learned something making the patch, even if it
didn't get in, you aren't the worse for the rejection. If they give you detailed reasons for not including
it, pull out the pearls and let the rest lie.

Micha Gawlas, Coder by trade, hobby and calling.


2 upvotes by Bastien Koert and John Clarke

It's something of a catch-22: you learn the most by doing and solving problems you encounter on the
way.
Start a hobby project - plan it out so that you can start small and get the basic parts of it running easily,
then add more difficult elements onto what you already have.
You'll probably benefit more from a series of increasingly complex projects than from a single massive
one.
Never settle for "good enough" - always check if there's a better way to do something.
Don't forget to go back and update your old projects as you get better and discover better solutions - it's
a good way to practice and push yourself further.

Ilya Simkhovich
ok, i read the answers so far but they're vague and generic. you should have explained what you call
"the basics". i assume you at least know what variables are, how to declare them and change them. you
probably understand loops and how to use an array. you've probably played with finding a random
number. you understand strings and how to read input and parse it to determine if it's valid. you know
what a sentinel is.
those aren't the basics. the basics include all that and higher data structures, collections and
interfaces/inheritance. you need to understand stacks, queues, linked lists and hashmaps. those higher
structures, as well as objects and overloading methods, are important when necessary. you should
know when to use which structures for efficiency and memory usage. you need to understand big-O
count for efficiency. you must master the bizarre concept of recursion. then you can use any language
you are forced to and really be able to use those stupid books called "learn <language> in 24 hours".
you should look at the syllabus of first semester computer science at a college and if it doesn't include
all that keep looking and figure out what topics you should practice. youtube will have tutorials for
them all.
now, the simple answer to how you can get ready for real-world applications... personally, i'm looking
at learning how to really use "unity" as a master with the many full 60-hour tutorials that are available
for free. i've learned what i called "the basics" and unity is a game design environment. it uses all of
those things and you really need one year of programming at a real university to even get anywhere.
aside from that, you could try to use use unity to make an android app with various GUI elements and
templates are easy to get and numerous. you could try to make an audio sequencer with effects-another project on my list--and that would use buffers/queues and possibly stacks and you would learn
how to incorporate microsoft libraries. finally, i recommend c#. it's microsoft's "java" on steroids. they
made it because they were sued for altering java and just rewrote it themselves and it's far more
efficient and almost identical.

Till Plewe, writing 'scientific' software for a l... (more)


I would try to join a small software company as an intern, part timer or, if possible, as a full time
programmer. In smaller companies it is much easier to follow a project from beginning to end.
Working on open source projects may be useful too but usually won't cover the business side.

http://www.quora.com/What-are-the-most-difficult-and-usefulthings-people-have-to-learn-in-their-20s

You might also like