I know you’re probably expecting to see some code in this article or at least to learn about some cool or helpful tool that might sweeten your Magento discovery journey, but it’s not that kind of insight.
Instead, I want to talk a little bit about how Magento makes you feel when working with it. And, of course, by “you” I mean “me”. :D So I’ll share my very own developer experience regarding both Magento 1 and 2. But let me first tell you a little bit about myself, so that you have a clearer idea who's behind these words you're reading now.
I've liked computers since an early age, soon after I discovered my passion for bikes. When I was 7 years old, I saved 13.5 RON and bought myself a bike. The next year I saved 23 RON and bought myself a HC 91 computer. This was back in 1995. So this is how the pattern began - riding my bike during the day, getting busy in front of the computer at night (mostly playing, of course). What I liked was that the feeling of playing stayed with me for quite some time, even after an older cousin of mine gave me some programming books and started teaching me basic stuff. For me it was all just a game. I remember the first piece of code I wrote. I copied it for 2 days and the result was a cone. That was it, but boy, was I proud of my work...
Years went by and I started attending the Programming Highschool in my hometown, Brasov (nice city by the way, it’s worth a visit). There I started working with Pascal and also began to better understand what programming was. It was interesting enough not to turn me into a hater, but not great enough to get me hooked. So I drifted for a while. But after 2 years of college, during which I studied some Economics nonsense, I chose to go back to programming and this is how I've ended up learning PHP. I chose PHP from an economic point of view (see the irony?), as it offered a lot of job opportunities. This was in 2008.
In the beginning I worked as a QA (no one would hire an Economics student to work as a programmer back then). But that experience, which gave me the opportunity to meet programmers that were making a living out of coding, was a game changer for me. And that’s when the real life started.
In 2009 I started working as a PHP web developer, mostly doing pure PHP websites, mysql_connect right next to thehtml. After 2 years of “menage a trois” with database connection directly into HTML code, I was introduced to a long lasting monogamous relationship with Magento. As expected at the start of any monogamous relationship, when I first met Magento I was scared as Fuzzy. To be honest, I had learned a little bit of CakePhp by then, which was a 6 month easy-going adventure, but that was a piece of cake, so to say.
And there I was, staring into Alice’s rabbit hole that ended up at Magento castle. There were long nights of searching on the internet how deep it was. The HTML was named PHTML. It was very difficult to find which PHTML was used where. You had to open a dozen folders that made your source file tree have a scroll. Thousands of classes. Configuration files, cache, design patterns, modules. Netbeans ate all my computer resources, everything was very slow and I always had time to think why, why, why. I just wanted to go back to the sweet mingle of anything in the same file. But once you’ve reached that point, there is no turning back. The why why why shout started to become a silent why in the back of my head each time I had to resolve a task. I went from an "all me talking" phase to a "listen and discover" phase with my lover. And I started to like it. Well, not right away. It was ups and downs. And years later, it still is.
I've started to think differently. The old way, where "you understand the task and write code in the same place", didn’t make sense anymore. I had to "listen" more, which meant I had to stay in debug more often, to first understand what was behind the scenes. The code was written by a person who was probably having the same adult problems that I had: deadlines, logging hours, cold coffee, overtime, meetings, documenting code, task descriptions, hating Jira and Jira hating. I had to understand my task first, then see how it fits into the Magento way, how to add my pieces of code in the right places. By first discovering the trail of other programmers, you discover the pieces of code that they used for building it. Most of the time you're going to need those pieces of code instead of writing your own. Use them and share them with others. It was not a straight path, everything had ups and downs, but I found it to be the correct way that suited who I am.
I’ve never been a big fan of overengineering and I’ve never understood why some people do it. For me it’s like driving with a helmet, a neck brace, knee pads, motocross boots, full body armor, goggles, a sword.. just in case. I'm not a fan of driving without brakes, no seat belt, a cracked windshield, a Christmas tree of leds on my dashboard, 100 km/h, no lights, on a forest road, just to see if I will make it. I'm more of a balanced guy regarding work. I like things to be as simple as possible, but not simpler. I embrace KISS and YAGNI. I like understanding what’s happening behind the scenes, why programmers choose a certain path to solve a particular problem. This helps me see the bigger picture before writing code. Be careful though, don’t stay too long daydreaming and trying to know everything. I find wandering 2-3 steps in each direction to be the right balance. With time and patience you’ll cover great distance in a productive way.
I'm a big fan of Alan Storm, who has a unique, father figure way of explaining things. It's like a Richard Feyman of Magento. With Magento, you have a lot of everything. You can easily see that it was made by a whole bunch of programmer that fall under all programmers types described above. On EE you have a URL rewrite that I couldn't figure out why it has to be so complicated, then you have a really nice sales area (a little complicated, but it solves a lot of problems). My overall impression of Magento is that it was build in a fast way, but the amount of features it has and the amount of problems it solves is huge. It's understandable to have all of these problems with all of its features, the kid is almost 10 years old. It's like looking at ourselves, we're not perfect and we know our flaws, but this is the best we got over the years.
Everyone knows things are bad, Magento has a lot of issues. And I agree, but we all need to change and this change has to be done as a process. A day by day process where all of us contribute to make it better. I know it's hard to take some time to understand what others have done. It's easier to just build something else to solve your need at that moment. I also think that, in the long term, for a platform that we’ll work on for years to come, it's better to understand, to adjust their functionalities, to submit to their repo, to talk to the ones responsible from Magento, to ask them questions and together to find the best way of solving a problem. We all know what the problems are, but we also have to find the best solution together.
I hope that the Magento team feels this way too. I really think that open source is the future. A future where we can all contribute to help each other and it's a big step for Magento to open the gates and let us contribute to their platform. I honestly believe that this is the biggest feature of Magento 2. And with this, all of the Magento community will help others make Magento a better place for all of us: Developers, Users and Product owners.