Lessons from Software Engineering

I have been a software Engineer in Microsoft for a year and half and I would like to share how I have learned the craft so far in hopes that it may help others.

 I like reading books as I believe this gives much deeper understanding of a subject. After some research online and asking people for suggestion I found some candidates. Programming Pearls by Jon Bentley is small book so I figured I could finish it fast. One important take away I got from this book is that a good Software Engineer thinks a lot before jumping to code. The second book I read is Code Complete 2. This is old and you might want to skip some parts (Gotos, pointers etc) which are not applicable today. This book took many months to finish but it was worth it. I especially liked the parts about construction at different levels (requirement, architecture, OO classes), guide for naming, refactoring functions.

Find all the learning resources your company provides and make good use of them. If you don't have access to these I'm sure you can find similar materials for free. I got subscription to pluralsight and I watched ton of videos. There were tracks for different subjects. I completed C# (Lingua Franca in MS) and Python. One subject that really helped me for the rest of my career is unit testing. Today even for hobby projects I start out with unit tests. I also watched some videos on git, Haskell, etc. Microsoft also gives free access to Safari which is pretty useful.

Working in a big company you get lot of resources, but one downside is you work on very small part of a big system. Building something of your own gives you experience from all sides. So it is good to work on few projects on your own in free time, where you can propose, design and build your own software. I worked in my free time to create KaiiMaps. In this project I learned how to modify html, css, learn javascript to modify OpenSeadragon library, create a web service using Flask, deploy it to cloud using Azure, use cloud storage services from Amazon S3, create a python pip package called graphmap. It was lot of work but it was fun :)

Useful Links:
Here are some links to pages/videos that I found very useful. Please let me know in comments if you have any suggestions to add.

1. Google Tech Talks: There are some amazing videos here. The ones I liked are API Design, Designing testable code. More here in Quora
2. Must see tech talks for programmers I watched some of these.

The only requirement is a zeal to learn. Software Engineering is a wonderful field and allows you to create, build unique things.