When I stepped into my bachelor of engineering in CS I thought that I will be learning a lot of programming languages, I wanted to be a software engineer. 1st year passed, I had to learn the same language I learnt for 2 solid years during PU, the most familiar C language. 2nd year passed, I was taught C++ for one semester. 3rd year passed, C++ was forgotten completely as we used only C everywhere. 4th year arrived, I chose 2 languages and hardly learnt anything in those few hours of theory classes we managed to attend amidst our busy mass bunk schedule. Finally companies started coming for campus placements. Just for the sake of getting placed I had to add C and C++ on my resume. Then what did 4 years of engineering prepare me for?
Campus placements was the time I realized one does not have to know n number of programming languages to be a software engineer; and this opinion became firm when I started working.
Hey there, hope you are doing great. If you are at the beginning level of bachelors or just completed high school or PU (12th) and ) and aspiring to become a Software Engineer but not willing to learn programming languages, then this article is just for you.
In fact, pure computer science is not about learning languages but is theory about the concepts that keeps computers alive and about those that binds the hardware and software. Back in college when I had to learn Database, Operating Systems, Discrete Mathematics, Algorithms, Data Structures, Object Oriented Programming and networking, I was wondering what the hell these subjects were doing in my way. But now as I have started working I realize how important those concepts that I once ignored, failed to learn, play a major role in day to day life.
Software Engineer is a generalized term for various roles the IT industry offers. Various roles that can be considered under this one term includes System Engineer, testing, Database Admin and Programmer etc. A brief summary of above roles are as follows.
System Engineer: This is a role that needs one to have advanced knowledge about various operating systems existing in the market, to be able to manage system configurations and have in depth knowledge about networking and network devices.
Testing: There are two types of testing – Automation testing and Manual testing. Although Automation testing needs programming knowledge, manual testing does not need any at all. But any person considering this role should have some advanced computer skills like managing excel sheets, using different browsers etc.
Database Admin: Database Admin does not code but writes queries, the length of which varies from few words to several lines depending on the complexity of data under consideration.
Programmer: This role is that fancy role I had always dreamt of without even being aware of what it was. To handle this role one should have a good knowledge about various programming languages, mathematics, Logics and basic computer skills.
By considering all the above roles we see that System Engineer and manual testing roles require less programming knowledge, Database Admin and Automation testing require intermediate programming knowledge and programmer/coder role needs intensive knowledge about programming. Above mentioned are only four major roles however depending on companies the tasks under those roles may be subcategorized and given fantasy names. However as one progress in the ladder of designations the need to know programming language fades away and the concept of architecture, design and analysis pops in.
Hope this have given the basic insight of IT industries. Computer Engineering is not at all about learning programming languages, but learning languages is just a part of it. Depending on your passion you may choose the subjects and even skip the awful phase of learning programming languages.