Is Magento diminishing my value as a computer engineer?
Magento is quite the sensation in eCommerce, with steep learning curve that will require but the best web developers available to handle large projects.
So, what happens if Magento is the only food for your engineering mind?
This is not a post about the issues of Magento. As for every open source project, we should be glad it exists at all.
This is not about my company either and not the views of my company.
My current company is great, by the way. (hey, mates)
I worked with several frameworks over time, on different systems and with different languages. Frameworks allow you to move fast, make less mistakes, offer testing solutions and let you focus on what really matters.
Working with a ready-made CMS like Magento is a completely different matter. It isn’t facilitator for development, but a container of features. Developing with Magento 2 is no different than joining a company that already rolled out full-fledged software that has both technical debt yet constantly needs new shiny features to make the clients happy.
If you have a strong computer engineering background, especially in web development, most of the system is common (MVC, DI, Observer, Plugin, ORM, Migrations, Console, Annotations…). You are allowed to extend the system in frivolous ways, but, if you do, you will most likely break one of the various, opinionated solutions, and make your code extremely hard for other Magento developers to work with.
The issue with Magento is the development speed. With Magento 2 you will take wrong turns several times, and your expectations will often be disappointed when you run your debugger to better understant the structure of the code. It is common to uncover core code that worked properly for the original implementation, but will fail when extended (in example: XML files being completely ignored).
If the development is slow, you’re learning less and focusing more on the core problems of the CMS itself. In a way, it is good to have specific knowledge about Magento 2, but my feeling is that the balance is too much towards learning overly specific bits of code.
Adding fuel to the fire, Magento runs on PHP. As a person who coded in this language for 10 years, despite the incredible advancements in the past three years, I consider PHP a “legacy” language and I don’t think it’s a language that may broaden your horizons — it may in fact lock you in.
Isn’t this bad for my future?
The neighbour’s grass is always greener, right? Let’s be more objective about this: any well established company you join will have technical debt. What Magento 2 really does is giving a greenfield project a kickstart at the price of instantaneous technical debt.
You’d have to decide whether you want to work on greenfield projects. If that’s what you’re looking for, then Magento is definitely one of the worst choices in terms of career. It’s better to join one of the countless startups.
If you’re convinced that it’s better for you to work for any larger company, you will likely incur into learning more about the internal code than learning about new technologies.
You may have a better time staying away from Magento if you’re looking into learning different languages, frameworks and tools than the ones Magento relies on. In that case, you’re definitely losing a chance to learn.
Otherwise, Magento will definitely not diminish your value as a computer engineer.
What can you do to keep your edge as an engineer
I think there’s lots of things you can do when you work with Magento:
- Try to expand your horizons at work — this might prove difficult, depending on the company you work in. Even with Magento, there’s a number of technical issues that aren’t related to the framework: UX, DevOps, integration with third parties.
- Give presentations about it — it’s an invaluable experience and really shows your commitment for your work (unless you’re pitching your company). I hold great appreciation for whoever wants to share the knowledge.
- Learn about eCommerce as a whole — it’s an untapped market. From your knowledge your could create Magento modules to sell, start a company to give eCommerce support, or run a shop yourself.
- Give up — if you really focus on Magento, your career will be great. In fact, the entire World is desperate for Magento developers, and the good ones are very, very few!
- Code something else at home — I always have own projects in development. As I am always looking for quick learning experiences, nothing works better than spinning up that IDE at home and cooking something cool.
In other words, yes, there are other careers that may have you learn faster, although greenfield and startup projects may rot very fast (and I have quite some experience with this).
Magento isn’t spectacular when it comes to its engineering. You will often read more sales-people’s pitches than read documentation. Yet, it does create value for companies, and it doesn’t look like it will disappear anytime soon.
We can hope over time Magento (after being done with new features like Magento B2B and Magento Shipping) will reduce its technical debt, become more stable and become a breeze to develop on. Until then, every day worked on it makes the next day easier to handle.
In doubt, always code something unrelated in your free time. This way you will be safe the day Magento isn’t valuable for companies anymore.
Thanks for reading
This is really my first post on Medium, sorry if I didn’t do so well. I hope I can deliver more in the future. As the Pros do, here’s a footer asking you kindly to follow me.
Follow me on Medium, or on my serious twitter account @tamagnofabio.