My experience switching from C# to PHP
I started developing in the ecosystem of Microsoft (C#, .NET Framework, Visual Studio, and SQL Server) on a daily basis for years. Life was good. Things just “worked”. There was no setting up a debugger on my local system, auto-complete was ubiquitous, and the error list window in Visual Studio was my go-to for any issues.
So why did I decide to leave the Microsoft world? I made the transition from building enterprise applications in .NET, to building apps in PHP, because I enjoy working on different technologies. Secondly, I wanted to be apart of a movement to challenge norms at the startup stage. My attraction was sated by the fast-paced environment that encouraged the “fail fast” model.
When it came to developing with an IDE in C#, Visual Studio was the standard. And to be honest, there really wasn’t a reason why you would use anything else. It did everything you would ever need. Anytime you hit the debug button, it would start its built-in web server and execution would stop on the line you placed your breakpoint. However, in the realm of PHP, there are a ton of IDEs you can choose from. The one I’m currently using is PhpStorm. Like any IDE, it has a learning curve. It integrates with services I use in my work-flow, like Git, Docker, PhpUnit, etc (Though debugging doesn’t come out of the box!). As I quickly learned, if you’re new to debugging in PHP, then “echo” and “var_dump” are your best friends. And if you don’t mind getting your hands dirty, installing XDEBUG and configuring your php.ini is the way to go. For the most part, the XDEBUG setup is pretty straight-forward, but can be a little tricky if you haven’t done it before.
I had traded Visual Studio for PhpStorm, Team Foundation Version Control for Git, IIS for Apache, Windows Server for CentOS, and C# for PHP. Personally, one of the most surprising things wasn’t the stack, but the language itself. I didn’t realize how much I relied on the structure of C#. I felt that this language really guided me to use OOP principles. After all, C# was designed with OOP in mind (https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history) as opposed to PHP, which is a language that had evolved over time to have OOP features integrated. I’ve heard someone describe PHP as being “very forgiving”. Personally, I noticed that the language made writing procedural code quite easy. I really had to make an attempt to develop a pattern on how I would approach things, in part due to PHP’s flexibility, which doesn’t pressure you to use a particular paradigm.
Anyone can write code ‚Äì coding is the easy part. After jumping ship, the hardest challenge for me was learning a whole new development process. Trivial things like how debugging worked, where the error logs were located, and how to deploy code simply escaped me. In the open source world, things run a little differently. I immediately realized how the development process was more hands on ‚Äì meaning that the barrier to entry in this environment included things like working in the terminal, installing and configuring Apache, and performing system maintenance in Linux.
Despite all the skills you may possess, passion for your craft and the willingness to take on new challenges are critical traits of any great engineer. On a daily basis, I try to push beyond my comfort zone and routinely ask for expert guidance when dealing with issues that are beyond the scope of my expertise. To sum it up, constantly challenging yourself will not only lead to becoming a better engineer, but it will also make you an invaluable asset to your team.
Here at Plastiq, our open and collaborative team is always on the lookout for top-notch challenge-seekers. If you like the idea of unlimited PTO, catered lunches, and working with a wide range of technologies, then please reach out to our technical recruiter, Viktoria.