Thursday, February 9, 2017

Evolution of a Software Engineer coming from a different engineering background...


When i look at my progress as a software developer who came into this world from a different engineering background, i clearly see few major stages of learning process and i think many of the engineers who came into software from a background other than CS would agree to it... First i had to learn the concepts of programming language... And mind it, had it been procedural languages of earlier days, it would have been one story... But with the advent of OOAD the whole ballgame of learning programming concept had changed... To work independently i not only had to master the syntactical parts of the languages like C++ or Java but also the concepts of OOPS... Here i had to learn from varied parts of a language starting from VTBLE in C++ to inheritance concepts to alignment in memory of an user defined data type and data structure... And believe me its not easy... It took years to master only this part of the learning curve...Then i had to master subjects like UML and Design Pattern to wisely apply my OOAD knowledge for a practical purpose... And again it took a lot of perseverance to do this... Then i had to know about a OOPS framework and figure out where my OOPS knowledge may fit... For me i started my software journey with the MS MFC/VC++ framework...

However this was just the beginning... After learning the nitty gritty of a language, and by nitty gritty i mean even understanding the compilation error, i had to delve into the world of OS and had to pick up the real CS areas like threads, process, multithreaded application, thread synchronization, scheduler and other concepts... And then i became a little useful in the real software developement...

In the meantime, i wanted to foray into a specific domain like mobile domain, and for that i had to constantly search for what is going on in this space... it was not easy to mix up the telecommunication part of the industry with the software that drives that telecommunication world... i never got a chance to go into the core telecom side of the software and their management but i was lucky enough to be a part of the mobile apps world... And even after coming into the mobile world i had to switch over from a Symbian C++ engineer to an Android/Java engineer... And to learn Android at a basic minimal level i had to burn lot of midnight oil in front of Google to decipher the Android framework code like the Android service internals, Android mediaplayer framework or Android Asynctask nitty gritty etc... It took lot of patience and perseverance to master only a little portion of Android...

And these days when i am upskilling myself with the knowledge of Computer Vision and related subjects, i am again going through the old engineering concepts of mathematics and statistics like Matrices, bell curve, Gaussian noise, Gaussian filter and so many things... However this is just the tip of the iceberg vis-a-vis Computer Vision and AI... i know i have to go a long way to be useful in this world of computation... But frankly speaking the real joy of learning has started... i no longer worry about the programming syntaxes, but the real picture of the end technology...

So enjoying real programming after a long period of struggle... Here is one of my videos showing how i am getting my hands dirty in subjects like Computer Vision... This video is about how to use Gaussian filter to remove noise from an image...

https://youtu.be/dyczVYQOcFQ

Share