This article is in response to a reddit call for help from u/dahiyabhaiya who wants to put together an online resource that college students can use as a crystal ball to gaze into their future lives in the careers of their choice.
Before you read any further, please note that everything here is from my experience as a non-IIT/REC/other big name college, Comp Sci & Engg graduate who has been in this industry for over 10 years. Keep this in perspective while reading.
Q. What is a software engineer?
Lets start with the most basic questions of all. What the hell is a software engineer? Using the same paradigm as other engineering disciplines, a software engineer is one that creates and maintains software. Software that brings an automated system(could be a computer, a mobile phone, a robot, even the micro-controllers that are part of the fuel injection timing chip in a car!) to life. Well, at this point an electrical engineer would chime in and tell you that its the 220 volts that breathe life in circuitry, but without software, that circuitry isn’t worth much.
Q. How can I become a software engineer?
The urban dictionary very correctly calls this out by saying that “anyone can call themselves a software engineer”. To get a job as a software engineer, however, you need to either get a degree in computer science/engineering. You can also be a graduate in any discipline and get certifications in programming languages, databases etc. to be identified by a company as a software engineer.
Q. What companies are going to employ me as a software engineer?
There are hundreds(if not thousands) of large, medium, small, government, private, etc companies that may be willing to hire you as a software engineer. Notable names in the industry are Google, Facebook, Microsoft, Yahoo, IBM, a lot of investment banks like Morgan Stanley, Goldman Sachs, RBS or any other company that comes into colleges to recruit as a “dream” company. Bulk of the hiring though is done by Infosys & TCS. These two companies are willing to hire graduates from any stream, even non-engineering, then put them in a few month training module to teach them the basics of programming languages before putting them on actual projects.
Q. How much will I get paid as a software engineer?
The starting salary for a software engineer can range from anywhere between 1.5 lacs to upwards of 20 lacs per annum. Most software engineers start at salaries between 3-5 lacs p.a. Your starting salary depends on the company hiring you & the college you’re graduating from. At a fresher level, companies do not make any distinction between 2 candidates in terms of salary, so if you and your friend are hired for the same company, you will be getting paid the same amount of money. It purely depends on the college they’re hiring from, and the hiring budgets. These numbers are usually available online and are not secret, so if you want to know what company A paid for freshers in your college last year, check with your alumni or your placement office.
Salary growth in the software industry, again, depends on the company you’re working for. If they’ve had a good year, they pay well, otherwise be ready to settle for measly numbers. Still, in India, you can expect realistically to get a 10% hike every year (at least till you reach a fairly senior level). The best hikes in the IT industry are for people who switch,i.e., move from one company to another. You can get a hike as much as 40-50% if you switch companies, however, be careful. Jumping around too frequently will ruin your profile and future recruiters might not trust your ability to stay in a company.
Q. What is the work like?
Software engineering, at a broad level, involves you writing code in a programming language of choice of the project you’re working on. It could be C, C++, Java, scala, .net, C# or any other language. Don’t expect to work on fresh features or new projects though, it is very rare to be a part of a development team that is working on a project from scratch. More often, you will work on a “support” type model where you will enhance features on existing projects. You may also be required to fix software defects(bugs) in existing software. You can also start as a tester, which means you will work to test the software built by development teams.
Q. How many hours do I have to work each day?
In most companies, the standard employment contract stipulates an 8-9 hour workday with breaks for lunch etc. However, in real life, you will be working longer hours. This is because you will be expected to talk to clients or other developers in different timezones as part of your work. Unfortunately, working late has become part of the IT culture in India and as a new employee, you will see that your peers work late. You must also expect unrealistic deadlines from managers and that would also force you to work late. There is NO overtime in the Indian IT sector. I have been in projects where I’ve worked for 12-14 hours each day, and I know a lot of people who are in such projects, so don’t expect to have a good work-life balance. Let me rephrase that, don’t expect your company to care about your work-life balance. If you want one, you should get one yourself.
Q. What will my career growth be like?
For the first 5-8 years, you will be writing code and slowly picking up more responsibilities. These new responsibilities will include participating in design level discussions, reviewing code written by your peers, more ownership of modules you are working on, maybe some people responsibilities as well. At some point in your career, you will get a choice to continue on a purely technical path or become a people manager and go down the management career path. This choice will purely depend on how much you love working with tech after spending a few years doing it. Some people know they love tech too much to become a manager, some try it out but decide they are better off not being in tech for too long, it is a purely personal choice. Career growth is affected by multiple factors, chief among which is your performance on the tasks assigned to you. There are many other factors as well, there is workplace politics and such that can have an affect on your career too.
Q. Are there any magic bullets?
Hardwork and willingness to learn new things all throughout your life are the only ones. Trends change every year, skills that were hot last year aren’t so hot this year. Change will be your biggest enemy in this field, so you must be ready to adapt yourself. You must always be on the lookout for chances to learn new techs, even if it is at the cost of your own time.
Q. Any last words?
If there is one thing I want changed in the Indian IT industry, it is the rampant culture of overwork, overtime and late nights. Once off late nights are fine, but staying late in the office only because you are a bachelor who has nothing else to do with his time and wants the free meals given by the company makes everyone’s life miserable. Go home on time everyday and find a worthwhile hobby to spend your time on. Just don’t sit in the office pulling all nighters thinking it makes you cool!
Is there a question I did not address above? Let me know and I will try and address that too!
Something to add from my experiences:
Experience is invaluable as well. My suggestion is to work part-time for atleast 1 year towards end of the graduation (if pursuing it in Computer Science/Engg discipline). Even if there is no pay, don’t worry, that experience will make up for it many times over. Also, just don’t be content with whatever companies come knocking on your college’s doors for recruitment, try & look on your own beyond that, you might get better/interesting opportunities. Don’t be lured in by a good starting salary package, the first 3-4 years are about building your career’s base so look for interesting/challenging opportunities that would not only provide you with good experience but would also look good on your CV. If you have to choose b/w a 5 lac salary job on some shitty/boring project & a 3 lac salary job on a project that will challenge you like hell & make you learn quite a lot then choose the latter. The more you sweat initially the better off you will be later on.
And last but not least – passion is *the* key. If you’re passionate about what you do, you will go a looong way, there will be no stopping you. However if you’re jumping on this train (or any other) just because it pays well & you have no actual interest in it then you will stagnate after a few years, you’ll find going further along almost impossible & it will be too late for you to think about something else & start over again. So think hard unless you’re looking for *babu* type job where you’d just become a fixture, do your job morning to evening like a robot, collect your salary & eventually retire after 30-40 years.