At IIIT-Delhi, objectives of BTech program are to develop graduates for careers in high-end engineering professions and research. (We want to emphasize on “high-end engineering careers” as the vast majority of software careers in India need moderate expertise in computer sciences – as demonstrated by the fact that many large software companies take engineers from any discipline and make them suitable for their work after a couple of month’s training. As at IIIT-Delhi we have a rigorous program in CSE, we believe that it should be to prepare the students for more cutting-edge work in technology and product companies, research, and innovation and entrepreneurship.)

To develop the skills needed for high-end engineering careers, we need to clearly understand them and then ensure that the BTech program is developing them. During a recent review of our curriculum, for the objective of developing high-end software engineers, we decided to take feedback from senior engineers of some technology companies on what skills they expect in graduating engineers. The companies included most of the top technology players like Google, Microsoft, Adobe, Yahoo, EMC, Siemens, Netapps, and smaller technology players like AirTight Networks. The questionnaire we sent asked what Technical skills they expected, and what Meta/Soft skills they expected in graduates of a CSE program. (It was satisfying to note that our curriculum focused on developing many of these skills. Still some ideas emerged from this exercise for which we have taken suitable actions.)

This note  gives a summary of the feedback obtained. It is worth pointing out, particularly to students, that the feedback almost entirely revolved around understanding and skills – grades and marks were not mentioned even once by anyone. It needs to be emphasized to students that short cuts to getting good marks are of no help in careers in these companies – almost all of these companies conduct multiple rounds of tests and interviews to assess the understanding and skills. I hope this feedback from the very places which often constitute dream jobs for students might strengthen the resolve of those students who want to work hard to learn and build their capabilities (the only way!) to continue on their path.

–In Meta/Soft skills, a few skills/capabilities that were highlighted most in various forms are:
  • Ability to quickly learn new concepts, languages, technologies, best practices. As one might expect, in today’s world, continuous up gradation is essential and it is to be expected that whatever one knows may become obsolete soon and so one must have ability to learn. In a high-end technology career (like most knowledge-based careers), ability and desire to learn is critical, along with desire and motivation to keep improving in whatever one is doing.
  • –Problem solving ability. This has many aspects and were variously expressed as: logical and critical thinking; ability to connect new challenges with old problems and past experience; ability to apply diverse/disparate concepts for solving a problem; ability to think at abstract level, and drill down to details; ability to leveraging existing tools and knowledge for problem solving; ability to formulate a problem, thinking of different ways to approach; ability to work with unknowns/ uncertainty ; ability to identify bottlenecks and articulate them well; ability to search for information to fill these unknowns, reduce uncertainty, remove bottlenecks
  • –Communication skills.  Explaining things to others in a clear and structured manner; ability to speak and write with clarity and succinctly.
  • –Team work. Ability to work in teams, which can need skills like taking leadership when needed, but following when required; skills to negotiate and resolve conflicts, work in time constraints and with responsibility, etc,

While the meta/soft skills may be general for any high-end engineering skills, the feedback for technical skills was far more focused for CSE (as the questionnaire was focused on computer science). The list of desired capabilities and skills here is longer and more detailed. Some of the key skills that were highlighted are:

  • –Solid Data Structures and Algorithms. Deep understanding of these subjects, how to combine them, how to find/design suitable ones for a problem, etc. This is not surprising as indeed these are the most foundational topics on which much of CS rests.
  • –Strong in OOPS.  OO Design and principles, subtle aspects of language, strong understanding of the language capability and limitations, its design and implementation,
  • –Good understanding of OS, DBMS, Networks. These subjects were highlighted whose understanding is extremely important on being a successful software engineer for high-end work.
  • –Ability to write well structured and efficient code.  This view was expressed in various ways.  E.g. ability to evaluate efficiency of the code at different levels – algo, DS, execution level (OS), hardware – to reduce memory as well as time; understanding of different layers of the system, and ability to evaluate/assess the program at these different layers
–Various other skills that were pointed out were: ability to leverage libraries from disparate sources and create abstractions on top; good debugging skills; familiarity with different programming paradigms – what they can do, how they are implemented, where they are useful…; understand different situations in which a system can work or fail or may be used; working knowledge of standard tools and IDEs; ability to read others’ code and analyze it, provide feedback on it, work with it / enhance it efficiently; experience of working on a real project (with real delivery and users/customers).

We found these inputs very useful in fine tuning our courses and the type of projects and assignments we give. I hope others find it useful as well. I sincerely hope that students will get the message loud and clear: build these types of skills and capabilities if you want to have a high-end (and well paying) engineering career – and leverage your Institution’s education program and courses effectively towards strengthening these.