My programming career, like that of many other developers, has evolved significantly over time. I loved programming ActionScript, a language that was (and perhaps still is) in my opinion, a fantastic OOP derivation of ECMAScript. ActionScript 3 introduced me to OOP concepts. I had never gone to school to learn how to make computers do things, my education was coming in small bursts when I needed to do something I didn't know how to do. Eventually I needed to do server-side tasks. At the time, people around me were using classic ASP, so that ended up being the first server-side language I learned.
Then bliss. PHP. The any man's language. It was everywhere, and everyone was hiring developers who could hack some 90s taped together table based image swapping piece of shit website. I ticked the box, I "knew" a server-side language. Yeah, I "knew" ASP, but PHP was all the rage! I loved programming in ActionScript way more, but there was just a flood of PHP jobs it would've been foolish not to at least dabble.
At this point I was mostly self taught. I didn't have any real programming mentors to guide me along, so I kept battling through freelance gigs, trying to meet each challenge head on. I took to forums (haha) to post questions and learn from others. I also would attempt to answer questions I didn't know, causing me to dive into code I didn't understand to solve someone else's problem. This became my best learning tool, as it drove me to venture into areas I would have never touched.
A friend approached me one day with a job opportunity. Having decided that competing for freelance projects against offshore programming houses wasn't that much fun, I thought I'd go for it. It came with an interesting requirement: CakePHP. I had used CMS frameworks like Joomla before, but this was the first I had ever heard of an application development framework.
The app was written in 1.1 and needed maintenance. I had no idea what to expect from a framework like this. I jumped onto the Cake site and read the book. MC-what? ACLs? What's an ACO again? I read it again. And again. And again.
I was introduced to an incredible number of new concepts in a matter of minutes. Some took longer than others to grasp. Others just clicked. All of them felt right, and I realized PHP might just be able to replace my beloved ActionScript. It was fun, I was building things quickly, and, most importantly, I was learning. I learned about security, about basic programming concepts, about standards - it was fantastic.
Back in the day, Cake had an obscene amount of magic in it. I thought the term "automagically" was cute, until it appeared in the book several billion times1. While magic is nice, when it doesn't work, it blows. I ran into a few things that just didn't work, so I was pushed into the next step in my career: talking directly to very smart people. I had to submit a bug report. I had to not look stupid. I drafted a report. I hovered over the submit button. I clicked.
The initial apprehension subsided and I submitted more reports. I learned how to make a patch (SVN and manual patches seem so archaic now). I dove into the code and learned how the magic worked, and learned a ton of PHP in the process, which was far more valuable than knowing how to use a single framework.
A while later an unexpected email came from @jose_zap (José Lorenzo), a still-maintainer of the project. He asked me to be a core member! I had made it. I felt like I was recognized as a peer and was part of a team of people who were clearly smarter than me. They became my mentors, perhaps unbeknownst to them. I remember @mark_story (Mark Story) taught me the git CLI when the project moved away from the hell that was subversion. I asked a question in the dev channel, and got a friendly answer. They taught me about unit testing, which I quickly fell in love with and have been advocating ever since.
These people not only were giving away their time, they gave away their knowledge. I was fortunate enough to be allowed to contribute some great things to Cake thanks to their tutelage.
While I love working with CakePHP, the tools I've learned from learning CakePHP led me to program in many different frameworks, write better agnostic PHP, learn tons of new concepts, and have an overall better understanding of web development.
CakePHP, the framework, was certainly a huge stepping stone towards becoming the programmer I am today. CakePHP, the community, however, provided much more invaluable tools that filled in the gaps that self teaching leaves.
It's no doubt that I became the developer I am today because of CakePHP and those who mentored me. I am no longer a mostly self-taught programmer, I am a community-mentored programmer.
1 Probably not an accurate count
Jeremy Harris is a web developer with over 10 years of experience. He's coded in many languages and currently focuses on PHP, both agnostic and framework-based. When he isn't at the keyboard, you can find him walking @riverthepuppy or brewing beer. He only talks in the third person when peer pressure dictates he should, such as on his blog.