Things aspiring Software Engineers should know - VIII

Ashish Vaidya
Published on: 5th May 2014
As a Software Developer, I started my journey in the Software Industry at Novell from where I moved to Citrix and later to Amazon. Being in this industry for close to 6 years now, I have met and learnt from many wonderful intellectuals and have worked with them on various top class products that directly or indirectly impact billions of lives worldwide.

I have experienced diverse corporate cultures, working environments, software development practices and processes. During this journey where I accomplished some distinguished feats and also committed many silly mistakes, I have learnt lot of things of which I think some should be helpful and of interest to the aspiring Software Engineers. You may check out the points mentioned in the previous articles in this series. Here is another one-

Divide, Categorize and Conquer
This point is not just from technical perspective but also from a behavioral perspective. I think that it is one thing that can be useful to a professional working in any field. In industry, you have to be a juggler handling multiple things all the time. Therefore, you need to be at least decently good in managing things if you don't want to unnecessarily get depressed and ruin your peace of mind because things often seem to go out of control.
things aspiring software engineers should know,divide,categorize,conquer
If you are like me, you would find yourself feeling an urge to just finish what was started for once and all and then move on to next thing. However, given various factors like change of priorities, external dependencies, lack of required infrastructure and all may not allow that to happen. Plus you are working on multiple things together and may have to switch gears as per the urgency and importance of the task. Sometimes a new urgent task may just appear from nowhere and shadow all the other priorities.

What you need to learn is to divide the task into smaller subtasks, categorize them and attack them as per their categorization. As an example, suppose you are working on two projects if , simultaneously where there may be parts that are must-do, parts on which others are dependent and some parts that are good-to-have but can be lived without also. Assuming each of these takes equal time would you complete one project completely and then move to next project or try to finish the must and important parts in all projects first and then cater to good-to-have things?

My sincere suggestion to you would be to divide big tasks in smaller ones, categorize these tasks under different buckets like Urgent, Not-Urgent, Important, Not-Important, Can be sidelined, Cannot be sidelined, Can be delegated, Cannot be delegated and so on and then work on them accordingly.
This is one of the things that I seriously think an aspiring Software Engineer should know. If you think some point should be added to this topic or some topic deserves to be added to this series, do post a comment and let me know. Keep watching for more. If you are keen on learning more about the better software development practices you can start following right from the college days, do get a copy of my first book "Hello World - Student to Software Professional" published by Partridge (A Penguin Random House Company). Now available worldwide on all the MAJOR ONLINE Stores - Amazon, Google Play, Flipkart, Barnes & Noble and many others. Get in touch with me on My page on IU eMagazine's Expert Corner.
On a scale of 1-10, how inspiring did you find this article?