|
Having come from a similar background, I can offer you these suggestions - 1. The level of programming taught in Indian universities is not enough. Writing a sort program is quite different from writing good, maintainable OOP code. Apart from working in a good company, one way to develop this skill (which I feel is critical) is to look and contribute to good open source projects - elasticsearch, spark, etc. Unfortunately I don't know of any good books which teach this overall, apart from specific aspects like Effective Java. 2. Another aspect that I feel is missing in Indian universities is challenging assignments. I would have liked to write my own toy OS to learn systems, or toy kafka to learn distributed systems. The more core computer science fundamentals you master now (preferably through writing code along with learning theory), the better an engineer you will be later. 3. Another aspect that is lacking is the way to reason through things. Indian universities have a third-person approach on the lines of "the experts do things this way so we will just do it this way", on the contrary in a US university the reasoning is more on the lines of "we use to do X, that had Y limitations. So we moved on to Z, now your assignment is to design an extension to Z (say Z+) which solves YY limitation". Unfortunately, I don't know what can be done to improve the way we reason about things. 4. Don't forget to explore different areas. I started with computer graphics, moved on to compilers, then app development, then data engineering, then infrastructure development, then back to data engineering. |