It's been six and a half months since I became a Netgen employee. In this short but productive period, I’ve been involved in many different projects and learned a lot regarding PHP, Symfony, eZ, and other technologies. However, it was time to move away from writing code and give a try to something else – writing my first blog post. Seven of us attended PHPSerbia Conference 2017, which was also my first conference, so I decided to share my impressions.
Few words about the conference
PHPSrbija conference 2017 was the 5th in a row conference organized by a voluntary association of creative PHP enthusiasts called PHP Srbija. Our team already went to this conference in 2015, when it was called SOLIDay, and you can read more about that edition in the blog post.
This year there were 24 speakers distributed in two days along two tracks: a Majestic track with classic talks, and a Practicum track, which was a novelty this year. According to my humble assessment, there were around 500 attendees at this conference. Since I exclusively attended talks from the Majestic track, I won’t be able to say much about the other, new track.
Venue
The PHPSrbija 2017 conference took place at the Madlenianum Opera and theater, founded in 1998 and located in an urban neighborhood called Zemun, one of 17 city municipalities that constitute the capital of Serbia, Belgrade. The place looks beautiful and modern and I find it suitable for events of this kind.
Expectations
I didn’t think too much whether I should attend this conference, knowing that it will be very useful and informative for a newcomer like me. Since it was my first conference, I didn’t know what to expect and what it would be like, and I was also mostly unfamiliar with the speakers. But I was very enthusiastic and looking forward to absorbing new knowledge and meeting new people.
Day 1 talks
The first day of the conference, the Majestic track started with the talk by Rasmus Lerdorf, the man who got the PHP project off the ground. Rasmus gave us a brief introduction to PHP 7 novelties, which I found very useful since I was not familiar with all the new benefits of it, although I’m already using it. :). Also, I’ve found the story of how PHP began interesting and I liked the numbers for power and CO2 emission savings due to switching to PHP 7.
Rasmus’s talk was followed by Christopher Riley, a freelance consultant from York, UK. His talk was about writing microservices instead of big distributed monoliths, with tips and tricks and common pitfalls during, for example, refactoring a monolith-based legacy code to small microservices, where we should be careful not to create a “distributed big ball of mud”, how Christopher said it. I’ve liked the part where he talked about recognizing the symptoms because it will help me in the future to better organize my code.
The third speaker, just before the lunch break, was Nils Adermann, co-creator of Composer and co-founder of Packagist. He tried to bring us closer to a deeper understanding of dependencies in our projects, with emphasis on Composer. As somebody who hasn’t had much experience with Composer before I started working, I got some useful tips for the real-world situations, for example in resolving conflicts in modified dependencies during a merge, which happens.
Alexander Lisachenko, who works in Alpari from Russia, was talking about aspect-oriented paradigm as a solution to cross-cutting concerns in PHP, such as logging, caching, authorization, and so on. Except presenting GO! AOP framework, which he is author and project leader of, Alexander showed us some new techniques and elegant solutions for cross-cutting concerns in PHP.
After a small break, Adam Culp from Rogue Wave Software had a talk about step debugging in PHP. As we all know, debugging of our code can be a real time-consuming task and I must admit that I mostly do it in an old-fashioned way, by dumping. :) It was useful to see how it can be done differently, especially regarding the fact that examples were shown in PHPStorm which we use regularly. I’ll definitely try to improve my debugging process.
The final speaker, Andreas Heigl, came from Germany. I was intrigued by the title of his talk, “Time is an illusion”, since I didn’t firstly get what it had to do with PHP. It was about time zones and their importance in projects. We all, sooner or later, encounter these problems when working with data containing dates, so it was useful to hear some tips on how to handle these. Andreas told some interesting stories and managed to create a good atmosphere, especially considering the fact that this was the last talk and we were pretty tired.
Day 2 talks
The second day started with databases. In the first part of his talk, Philipp Krenn from Elastic gave us some background about databases in general, mostly the things I remember from my college classes. The talk continued with an overview of some popular relational and NoSQL databases and comparisons between them. At the end, Philipp discussed different possible scenarios and gave us some tips on how to choose the correct system based on our needs, which I, as someone who works with MySQL most of the time, found useful and interesting.
Andrew Cassell, a developer from Herndon in Virginia USA, followed up with his talk about domain-driven design (DDD), explaining why it’s important to use ubiquitous language when writing our code. It’s also something that I learned a lot about in college, and it was nice to refresh my knowledge and hear more about some advanced topics, with tips and advice from real-world scenarios.
Michael Bodnarchuk, the creator of Codeception testing framework from Ukraine, shared some best practices for testing with code samples as well. He also talked about different testing frameworks, with their pros and cons, and how to choose the right one. As a person who was pretty lazy when it came to writing tests in my previous projects and still hasn’t had much experience with it, I got some useful tips from this talk.
After we survived the crowded first floor during lunchtime, the time came to hear something about building projects with PHP without using any framework. Patrick Allaert, a freelance system engineer and founder of Libereco Technologies from Brussels, talked about the structure of a framework and showed us that it’s possible to use only plain PHP without frameworks and still avoid reinventing the wheel. Sounds challenging? Yes, but totally possible. Definitely an interesting talk, in my opinion.
The last talk on this conference was about knowing what is our application doing while we’re not looking. Josh Butts, the VP of Engineering at Offers.com, shared some strategies for logging and monitoring our applications as well as interpreting collected data to get the best overview of what is going on with our application and is it working properly. Logging is something we’re mostly too lazy to do, but it can be a real time-saver when something bad starts to happen to our application, so I’m glad I’ve heard something more about it. I’ll try to use some advice in my future projects.
Conclusion
Attending such an event was a great experience and, for my first conference, I really liked the overall concept. I’ve gathered a lot of new information and knowledge that will be useful in my future work and also had a lot of fun. If somebody asked me what was the best talk for me, it would be hard to tell.
As a junior, I found something useful in every talk. I’ve got some theoretical background on most of these things from college, but we all know that this doesn’t count much by itself until we face these situations in real-world scenarios or learn a few things from experts in the field. On the other hand, not only was this event good for getting to know my coworkers better, but it was also nice to meet new people working on technologies we use on a daily basis and to find out some interesting information while drinking coffee with a wonderful view of the Danube river.
The whole event was very well organized, the program was good with enough breaks between talks. Also, they put a lot of effort to make sure we don’t stay hungry or thirsty. There was plenty of food and drinks available all the time, including coffee, cookies, and even beer.
Not everything can be perfect, but the only thing I didn’t really like was the crowd during lunchtime. There were simply too many people at a small place at the same time and getting food was a challenge. Luckily, there was plenty of food available, so it turned out it was better to wait until the crowd doesn’t settle down and the waiters replenish the food containers. :)
Oh, I shouldn’t forget to mention the fact that I came with only a laptop in my backpack and left with it being barely able to close due to the huge amount of goodies we gathered from sponsor’s stands, including shirts, stickers, badges, tea cups, shooter glasses and even flash drives, power banks, and cardboard virtual reality glasses. :)