This is a transcript of a lighting talk I did at #odessajs conference that took place 13 April in Odessa.
Thinking about the things going on inside and around me I realized - I haven't done .NET development for more than 1.5 years now. It's not the first time I was thinking about that, but now it has a bit different perspective.
I work in an E-conomic company and about 2 years ago we decided to build a new product.
Till that time we've learned a few hard things: plain jQuery applications are messy, building new shiny products on out-dated infrastructure is a bad idea.
So, we've started with the front-end by choosing Backbone.js as our foundation, later on we've decided to switch our API server from .NET to Node.js.
That time I mistakenly thought, I can do JS programming. Sure, I understood jQuery selectors, concept of callback and even why we need 'var me = this;' trick in code.
Long hard way of learning
I had to spend the time to learn new stuff. I would say the best source of information was the code written by my colleagues. We have great team, so initially I were just reviewing the code following some patterns. I also spent time of peering famous OS projects like underscore and Backbone.js.
Let's be clear. If someone in 2003 tell me I'm going to program dynamic language and will be happy about, I would never believe that. I was programming C++ and truly believed in types. Types as I was thinking is only way to tackle complexity of software.
Even though, I still think about some advantages of static vs. dynamic languages, my opinion has changed radically.
Dynamic languages are great. I feel I more solve problems rather than designing types (or usually hierarchy of types). Consider that, instead of thinking about the name for next "ProxyAbstractFactoryManager" I'm writing functions that do stuff.
I was compiling applications for whole my life. Just to run some simple thing I need to compile and link. It's usually not a problem at all, but depends on project infrastructure it can take a lot of time. Sooner or later you start to hate builds.
Instead of heavyweight IDE's I became Sublime Text 2 user. After years in VS you simply could not understand how to write code without IntellySense. But practice shows it's really possible.
To be honest with you, I was very skeptical regarding Node.js initially. But again, practice showed different results. It's been proved that Node.js is very suitable for our product. We are running API server on Node.js and it performs really nice.
Later I started to learn what Node.js platform offers and I was really surprised with it's abilities.
CommonJS style of writing code started to make sense. Namespacing problem is solved, so you can build big applications there.