11 Nov 2011

F.L.A.A.

Over the years, i have come across many issues in my career. These issues range from new untested technologies, to new and untested people. And it is with great vision that i have come to this point in my life where i have got it all figured out, not life, nor career path. Rather the drivetrain that one is to use to push through. So i came up with this rule a while back but i do honestly believe it is not until my latest ventures that i have realised the magnitude of this rule i embraced. Given that it is not such a cleverly thought rule(it is simply the obvious but put in perspective) i would like to discuss it in this article, from, of course, a developer/business man point of view.

F.L.A.A. is something i taught myself during the past few years i have been in this domain and it is pretty simple; Face, Learn, Adapt and Apply. Most of you just read that and said "DUH!", true, but you have not been able, up until now, to EXACTLY put your finger on it, let alone articulate it, ( and if you did, then good for you). I will discuss each phase from 2 points of view; One, as a developer and the other as a thriving person in the harsh business world.

FACE:


Of all the phases, THIS is the most important. I had to start with it for i have sorted these phases not by importance, but by order of occurrence, since clearly, FACING the change is the first step. Now before i proceed, you have to understand the importance of trying to put yourself in my shoes to be able to fully comprehend this. I am a 24 year old software/web (and recently venturing into mobile) developer. I wasn't born with that knowledge but i learned it over the years starting at the IRC channels at a really young age.
Through and through, i have always considered myself an underdog in this domain for one reason, "What's the point of being on top ? ". Now that reason drives me, it is for widening my horizons that i am ever so eager to embrace change in this domain. And step one of doing so, is facing the change. To face a change, one must understand the need for it; Things are moving fast, they are changing as they move, we are changing, everything is constantly changing and sticking to the "old but works" is becoming slowly, but surely, an obsolete argument because when a new technology comes out, it has it's reasons. When a new technology comes out, it has it's purposes. When you stick to old technology from fear of change... you become obsolete. One needs to understand this, one needs to understand the need for change and his need to embrace it. So, face the change, know it, read about it and converse with others about it. Understand it's purpose, and that is facing it.

LEARN:


The second step is learning, and it is like building your bridge. Sometimes we witness a shift in the paradigm, and from first look we instantly, and for a moment, lose faith in our ability to master this new paradigm, or even survive the switch. DESTROY that moment of weakness, let go of it, lay back and try to understand that paradigm shift better. Start by research, which is essential for the learning process. Then, you start IMITATING. Yes, you read correctly, you imitate your ass off. The trick is to know whom to imitate; Allow me to elaborate. Every paradigm shift has it's gurus, people that have been working on it before it came to be. The experiences of these people are priceless and since they put the paradigm shift in motion, they will be publicizing all their  experiences. GET TO KNOW THEM. Imitate how they work with this change and how they use it and for what. Keep imitating until you feel you are capable enough to ...

ADAPT:


If you are not a newcomer to the field you most certainly already have a "manifesto" , if you will, or a way of doing things, but that has to change. Your frameworks, your knowledge base and your convention rules ... don't apply anymore. BUT WAIT! this does not mean that you have to throw them away and start over, this means you have to UPDATE them. Now i say "update" and not "modify" because you really just want them to do the same thing as before, only using the new paradigm. I remember when LINQ came out ( as a .Net developer with a rich framework i have built over the years ) I had to modify my Data Access Layers. Now, i didn't change what that layer did, all i did was ADAPT to the new paradigm and make use of all the new features. The same also goes for my Javascript framework. When i decided to move to jQuery, i had to modify my Javascript framework to work with jQuery. In the process i had to let go of some of the functionalities like the "jajJS_Animate" function since it was rendered obsolete by  jQuery's "animate". One must not fear these changes/shifts, however always leave room for doubt. I doubted AJAX, therefore i did not use AJAX and still don't. I don't like it, it is very unpredictable and more consuming than it needs to be. Therefore instead of adapting to AJAX, i built my own callback framework (which i still believe is much MUCH better than AJAX). But also, instead of using XML i modified my callback framework to use JSON objects. So there always will be changes and ways to adapt you just have to find the most fitting way, because in the end you have to

APPLY:


This is the easiest phase, but also the essential end result.  What's the point of going through all that and not apply this new paradigm ?  When you finally apply this new paradigm to your work and all is working good you will find a certain sense of self accomplishment that only this kind of paradigm shift can give you. Which will in turn drive you to do it more often, as in embark on embracing newer paradigms as much as possible, learning new things, advancing and of course, FLAA-ing.

I hope this was as helpful as i intended it to be. In the end if one is stuck in an old paradigm he may never advance or get anywhere fast. Things change, the world changes and in these times faster than ever and you have to stay on your toes or else you'll drop behind.