How I built my software career

  1. Focused on innovation and up-skilled regularly. Trained self as well as underwent training where required (Windows kernel, Debugging, Big Data, Solr, …). Today, I can
    1. understand and debug assembly whenever required.
    2. write some (Linux) kernel code (C).
    3. build highly robust and scalable multi-threaded client & server applications (C, C++, C#, Java, PHP, .NET, Visual Studio, WinDBG, Apache, IIS, Windows, Linux).
    4. debug complex issues. Stack corruption, heap corruption, deadlocks, memory leaks, handle leaks…
    5. design database schema and write stored procedures/functions and decent SQL queries keeping performance in mind (MS SQL, MySQL, SQLite).
    6. build UI – desktops (WxWidgets/Java), web based (HTML), Android apps (Android Studio, Java).
    7. build free text search applications using Solr.
    8. write Map Reduce jobs in Hadoop to leverage its distributed capabilities.
    9. inject my own code (DLLs) into any Windows application by hooking Win32 APIs. Once my code is injected, I can do whatever I want. Log the keystrokes, send any information to any server, redirect network connections, …
    10. build web bots, crawlers (PHP, MySQL).
  2. Played as a team. Included testing team early in the development phase and asked them to punch holes in the design before implementing it.
  3. Set a very high quality bar for my own and my team’s deliverables.
  4. Traveled and interacted with our customers worldwide to understand their future requirements.
  5. Presented at international conferences.
  6. Visited IITs, NITs, IISc… Interviewed, hired & trained freshers, juniors, team/group members.
  7. Stayed away from politics. I don’t push people under the bus to
    1. get a salary hike
    2. get a promotion
    3. save my job
    4. look good to higher ups
    5. take credit for someone else’s work
  8. Stayed away from useless meetings, drinking the kool-aid, meaningless processes, outdated proprietary technologies and political culture that is/will be doomed.
  9. Gave plenty of credit to others where it is due.
  10. Asked for increments and promotions after successful deliveries of big milestones.
  11. Signed up for bigger challenges and asked for interesting work.
  12. Relocated for better opportunities every 2–4 years.

Although my leadership and technical abilities made me a manager in a niche MNC, I gave it up after a while to become an individual contributor again. It is so much fun to learn new things and innovate. Plus, I can survive all alone.