Last month I celebrated one year working together with the Barouh & Partners team. And I can tell that I expected that changing work places would change the way I code and the tools I use, but I was not expecting such a big change.
Catching up with Symfony
Like every journey, this one had a beginning as well and it was called Symfony. I knew that the company was using it for most of their work and like everybody who has some experience with PHP and PHP Frameworks, I knew that Symfony is one of the leading frameworks, but I had no experience using it. I was eager to try something new, so I was able to learn most of the basic things, just to find out that the company was still using the old version.
So I had to start from the beginning as versions 1.4 and 2.2 had nothing in common. But as it turned out, Symfony 1 was easier, so I was able to catch up faster and help with the maintenance of the legacy projects and even help built one of the new ones.
But the framework was old, it had no support, so things started to become a burden pretty fast. I did not have the desire to keep getting better at something, already dead.
Team building and the change of hearts
Soon after I started working, we had a team building and this was the first time I was going to meet the team. There is no need to tell that I was excited. I was gonna travel to a country that I had never visited before, to meet people that I had only seen on Skype or Google Hangouts.
We were able to break the ice easily and able to communicate freely. Most of the time we were talking about casual stuff, but we had a work meeting every day, to talk about the future of the company, the direction, etc.
On those meetings I was able to express my vision freely and I shared that as a software company, we should push forward. Make the switch to more recent technology stack. And there are so many things to choose from, starting from the most recent Symfony version, to something like Laravel or even change PHP to Ruby and go for Rails.
I got the complete freedom to choose, so I decided to give Laravel and Rails a try. I built a couple of simple websites using them both. Two of the public projects are Bori & Balázs' wedding website powered by a simple CMS on top of Laravel and István Kohár powered by Ruby on Rails and ActiveAdmin for the CMS. In the beginning Rails felt a little bit strange, but I knew that I was gonna get more than a couple of AHA moments after I get better understanding of how Ruby worked.
Some of the books that I read and I highly recommend are:
- Agile Web Development With Rails (4th Edition)
- Eloquent Ruby
- Practical Object-Oriented Design in Ruby: An Agile Primer
I watched more than a couple of screen cast series as well, but the most helpful were Ryan Bytes screen casts called RailsCasts.
After I went through those books and some others, completed some other project, I was starting to like Ruby and Rails more and more, and I was eager to start a bigger project.
Pushing the streaming platform to the next level
By the time I started working with Barouh & Partners, the company had a streaming platform, which they used regularly. It was a working solution, but as the time passed, different design decisions by different developers and a lot of spaghetti code made the application difficult to enhance and maintain. And it was built using Symfony 1.4. Those were some of the reasons, why we decided that it will be better to completely rewrite it.
After some research and planning, I started working on the new version. I was left to choose freely the platforms behind the system and as I wanted to try Ruby on Rails for a bigger project, I went with it. I can say that I was pretty happy with it and after 2 months, Livecasts was born.
It was really interesting working on it. I used different approach for developing, different server for deploying the application, different (better) way to use various Amazon Web Services.
The application is using three different types of servers: one for serving the Rails app, one for the live notifications and one for the actual streaming.
All the tiny bits in between
Changing the platform that I use for developing came with changing the tools that I use as well. I got familiar and fond of automated deployment with Capistrano, better understand of Git and deeper Unix knowledge. We switched self hosting Git to BitBucket and started using smaller individual DigitalOcean droplets instead of one big VPS.
Even though we had made progress as a software company and I made a personal one along the way, we are not planning to stop. We are excited about the new technologies and we are developing our first EmberJS application backed by a real-time API in which I am pretty happy to be a core developer. We are getting familiar with NodeJS and better with NoSQL databases.
That's said, I am pretty excited about the next year, so stay tuned.