New technologies appear every day, and we try to stay in step with this tendency. But we don't jump blindly to every new fashion, because this way we can spend a lot of effort for nothing. For commercial development, it is always better to wait a little bit and make sure that the transition to a new technology will really pay off.
The table below shows our main technology stack in 2013 and 2014 years and our plans about what to try in 2015.
Zend 1 doesn't meet modern standards anymore, so we have to make a choice from Zend 2, Symfony and a bunch of other PHP frameworks. Symfony seems the most solid and well-thought one for us. In particular, it has a built-in ORM Doctrine 2, a good view system, code generators and dependency injection. And we haven't forgotten about Zend 2 either.
Spring framework provides perfect implementation of IoC container implementing dependency injection principle which is crucial in backend application development. Dependency injection simplifies interaction between objects, makes mock object creation easier for unit testing. Also, Spring framework introduces MVC pattern implementation and a lot of other bonuses useful in Web development. And thanks to splitting Spring by projects it is very lightweight.
CoffeeScript is way too crazy for us and it doesn't give us what we actually want.
Why not AngularJS?
Thanks to an aggressive advertisement campaign from Google, AngularJS has become a very fashionable technology in 2014. So we've given it a shot at one of our projects. The outcome wasn't as good as Google promised us for it to be. We've spent twice as much time as we expected the project to take, and the code wasn't as clear as it would be if selected Backbone or jWidget. Several great articles explain the major AngularJS pitfalls, and I see all the pitfalls that we faced in our AngularJS development in them too.
- Inability to communicate directly to DOM elements rendered with ReactJS. So, for example, it is quite difficult to use jQuery UI components inside ReactJS code. But it is possible, so we don't care.
- Lack of model. Usually ReactJS developers take Backbone model and inject it into ReactJS components. We are going to try a jWidget model with ReactJS, because jWidget model is essentially a powerful extension of Backbone model.
Why Stylus and LESS?
Stylus is a cute replacement for plain CSS. It has a lot of features and makes stylesheets clear, simple and easy to maintain. LESS is a bit bulky, but it has a better IDE support compared to Stylus. So, we'll use LESS until a bunch of IDEs will provide support for Stylus. There's one more well known CSS preprocessor – Sass, – but it has a major pitfall. The next selector doesn't work in Sass: &-suffix, and it is crucial for us.
With Bower, it is unneccessary to commit the third-party libraries to repository anymore. This is not crucial, but still awesome.
This was the list of technologies we are going to use in 2015. The list is not limited to the above mentioned technologies however.
What will you try in 2015?