Ive been programming for probably 6 years now, mainly in PHP, also done java, AS, javascript as well. I feel like my programming skills have not really improved that much over time. I feel like i can code mostly anything that comes my way but I think my code isnt very efficient or clean/concise. I have a pretty solid understanding of OOP but struggle on how and when to implement it. I was reading some articles online and a lot of people have recommended finding a mentor. How do i go about finding one? I also saw people recommend getting into open source projects. How do i go about doing this? And I know open source projects are free, but do they turn around any kind of revenue or do people work on these projects just for self satisfaction? Any kind of direction, hints, tips would be great on how to advance my programming.
It sounds like you've done all your coding as a freelancer and never worked with a team where peer reviews are commonplace. I'd hunt out your local PHP usergroup and find someone you have a good rapport with - either as a mentor or a peer and periodically work through bits of your projects discussing alternative techniques and why you would/would not use them. Open Source projects do pay... look at Moodle where the original lead developer has a business doing installs, custom implementations etc. silverstripe.com is an open source CMS produced by a web development company. They gain customers through the exposure and have been able to utilise Google's summer of code to extend the development far more than they could have if they'd kept it inhouse. The trick is to be prominent in the development and that means time, expertise and picking a project that is popular enough to get you work but not so popular that they don't need you.
absolutely right, team experience is where you learn the most about best practices... when I joined my latest company, my eyes were opened about correct use of the strategy pattern and dynamic external invokers... get on a team and enjoy the painful ride
Great answers from both of you, this information is really helpful. And your right most of my work has been freelance, the only time i really coded in groups were in classes where my partners knew as much or less than me so it really didnt help. If anyone else has some more information id really like to hear it. Ive spent a lot of my time reading tutorials/books but i feel they focus on the methods and how to of programming and not the actual strategies and how they are implemented in real world examples.