views:

322

answers:

9

I recently read this post from several years ago about OR/M. Personally I'm a huge fan of object-relational mapping and in fact, I'm reading Fowler's PoEAA right now in hopes to better understand how to address the problem. But Jeff's post got me to wondering first what Jeff and apparently others know that I don't.

I also recently stumbled onto this post regarding when programmer's should really consider leaving the industry. We've been talking a lot about implementing code reviews and other ways of mentoring the less experienced programmer's and designer's in our office, but unfortunately for me I am the senior developer. But I really, really, really want to see my own skills evaluated, critiqued and hopefully improved through the benefit of others' experience.

I am the senior developer largely because I'm willing to work full-time and because I came into the job already having experience with PHP and MySQL. However, I've only been working full-time as a programmer for a very short time (<2 yrs) and my style and understanding have shifted dramatically over the course of this time as I moved from working under a developer who shied from object-oriented programming to being a true object bigot (Fowler's term) trying to move the code base at my current company to a better architecture (in other words an architecture that uses object-oriented design patterns rather than a mass lumping of functions in separate files and code that mixes presentation with business logic with database access).

So my question to the community is where can I go to find resources, groups etc that could provide more personalized and comprehensive interaction for a budding programmer than our community at SO allows.

+1  A: 

If you're the senior developer:

  • Use the internet (like, this place)
  • See whether your co-workers can become your peers

If you're the senior developer and you have only 2 years' experience, then your job is a learning opportunity for you ... but, a different job (which had more senior co-workers) would be a different kind of learning opportunity.

When I was in your position I used resources like usenet, to ask questions about various programming-related topics: and the gurus on those forums answered me, for eample discussed OOD topics with me when I was learning OOD.

I didn't ask them (i.e. non-coworkers) to do code-level reviews though: for code-level reviews, I read Code Complete and similar books, and reviewed my own code (and refactored it etc. as I had to maintain it), and I also reviewed my co-workers' code.

Something to consider is, what code is it do you want people to review? If it's the code you write for your employer, there may be issues (i.e. copyright and NDA) with your showing to anyone but your coworkers, and you need to discuss this with your management. If it's some other code (i.e. your own code) then publishing it as "open source" might be a way for you to share it with others.

ChrisW
Perhaps I wasn't totally clear, but I am looking for opportunities to have my own code reviewed and critiqued by people who actually know what they're doing. :P
Noah Goodrich
I used usenet and web-forum equivalents to usenet, to ask questions about various topics: and patient people answered me, e.g. discussed OOD topics with me. Not code reviews though: for code-level reviews I read Code Complete and similar books, and reviewed my own code (and reviewed my co-workers').
ChrisW
+2  A: 

Well, if you want to invest of your own personal time into this, participating in an open-source project that means something to you and where the community seems opened will probably teach you a lot. You'll learn a lot by reading other's sources and having your patches reviewed.

You could also have a look at the programming groups in your region. There are numerous groups, depending on what you like. For example, look for a PHP meetup and exchange with others on your respective current project.

Of course, if you don't have a lot of free time on your hands, I think your bound to only 2 solutions: ask your boss to invest and hire a more experienced developer next time or most likely, go look for a new job as the junior. In both cases, that might be pretty scary because you'll put yourself in a delicate spot but if you feel you're not currently evolving as you'd like, that's something that counts in the "do I like my job" equation.

Have fun!

lpfavreau
+3  A: 

The DevNet PHP forums are best PHP/MySQL community I have seen (I'm an active member there). You will find plenty of experienced PHP developers there and helpful advice on programming design and implementation if you follow the forum guidelines.

Aside from communities, the Internet has all the resources you need - if you know how to look. Look especially for blogs of skilled developers - they offer plenty of hidden gems. Participate by commenting on those blogs to ask questions that bother and shed more light on topics you want to know more about.

Eran Galperin
How does DevNet differ from SO in terms of available help and advice?
Noah Goodrich
SO is a community wiki, while DevNet is a forum. On DevNet you engage more in discussions rather than just strive toward a focused answer. It's a different dynamic
Eran Galperin
It has a Code Critique Section!! Thx for the DevNet suggestion!!
Noah Goodrich
+2  A: 

Hire a consultant to review (one of) your projects. This is very common for EE projects, and should be for software as well. Independent review is mandated for medical devices with software, for example. Do this a few times and develop a relationship with a consultant who can follow your progress and provide steady guidance.

Doug Currie
+1  A: 

On the internet, you'll find many open source projects with highly skilled developers and novices alike who have skills that you don't have. They're eager to learn, eager to teach, and eager to tear you a new one when something you do doesn't make sense. Consider browsing projects on sites like Sourceforge and finding an active project that interests you. There should be plenty in the PHP arena that will simultaneously sharpen your skills and build your resume.

Max
+3  A: 

Write a program.

Release it.

Don't think about it for months until you forget what you wrote.

Go back and look at your code and say "wtf was I thinking"

Self-evaluation is a great way to get better. I know I look back at some of my old code and I want to throttle myself for writing it.

Also, if you have friends who program, print it out and ask their opinion. If they cannot quickly determine what each function does, you have a problem of not making functions single-minded. If they cannot see that each object is self-contained you have a problem of high coupling.

EDIT: And look at existing frameworks, like CodeIgniter or CakePHP for hints on better architecture (especially for web work).

Rob Elsner
A: 
> If ($programmer.location ==
>    $happydevhouse.location){ 
> $programmer.goto("Happy Dev House");
> else {  $programmer.create("Happy Dev
> House"); }

Fixxed!

Seriously, the people you met in that kinda places will change your world!

(check official site or shdhmc.pbwiki.com to see the one in mexico i help organize!)

DFectuoso
+1  A: 

We blog all the time about code review practices.

Yes we also make a peer code review tool called Code Collaborator, and some of the posts are about that, but those are easy to ignore if you're interested in more general discussion.

Jason Cohen
A: 

http://refactormycode.com/ anyone?

dolzenko