To become a great Software Engineer, first, become a great Problem Solver.
- Learn to solve problems: I have seen many people complaining that they don’t use Data Structures and Algorithms in their day-to-day jobs and so, why are these things taught? Well, Data Structures and Algorithms help you build problem-solving and thinking capabilities. By solving the questions on SPOJ, CodeChef, etc., one learns how to analyze a situation, think of a solution, think of the corner cases, and accurately convert it into code.
- Learn the latest technologies: The Software world evolves fast. One needs to keep themselves up to date with the latest technologies that the market demands. Today, some of the hottest technologies in the market include Machine Learning, Artificial Intelligence, Backend Development, Mobile App Development, etc. Some other new emerging technologies include Blockchain, Augmented Reality, Virtual Reality, etc. To stay ahead of the game, one should have some idea of these emerging technologies too.
- Write a lot of code: This is quite obvious - to become a better Software Engineer, write a lot of Software. Take up important projects at your company. Talk to your Engineering Manager or the Product Manager and understand what are some of the important features that they are looking to build. Try and get into these projects. Do not pick up overly-ambitious projects. However, make sure to pick things that are a level above your current capabilities, so that you can learn and grow.
- Read blogs and forums: There are some fantastic online communities for programmers. Be a part of them to learn more about the market. Read blogs (I like medium.com) and articles, especially the ones that take a case study of a problem and solve it from scratch. Such blogs help you develop a fresh perspective on problem-solving.
- Learn how System Design works: It is important to know how to code features. It is more important to know how the overall system works, the architecture, and the design. Once a week, pick 1 problem and try designing the architecture and the database from scratch. Pick up a notebook and try writing down the names of tables along with columns. Here are a few examples:
- University Management Application
- Accounting Application
- Employee Management System
- Write a blog: A great way to become better is by sharing your knowledge with others and collaborating. When you write down something in the form of a blog post, you will get clarity of thought. It is easy to understand something, but it is tough to explain it in clear, simple words. Writing down a blog post helps you go to the depth and at the same time, ensure simplicity.
Excellent advise for youngsters embarking on their UG education / professional career !ReplyDelete
I would also emphasize & recommend youngsters to gain deeper understanding of mathematics as a core subject with deep knowledge concepts like Linear algebra, Multivariable Calculus, Probability Theory, etc.
As Univ of Oxford says; Mathematics is a fundamental intellectual tool in computing, but computing is also increasingly used as a key component in mathematical problem-solving.
Totally agreed Neelabh. These are quite important topics for getting ahead in Computer Science.Delete