Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I have a buddy who's expanding/overhauling a modestly successful web-based game that he runs. He's not exactly a newbie with the language it's written in, PHP -- he's been doing this for years. But he IS a novice when it comes to general software development principles. This is a one-man operation (so he doesn't have any superiors/co-workers to bounce ideas off of), and he's never had formal training or a day job as a developer.

He'd like the overhaul to be more modular and use concepts like object-oriented programming (both to make the code base easier to maintain and because that stuff sounds really cool), but he's having some trouble with the basic concepts and how to apply them to his project. I'd like to help, but there's only so much one veteran nerd can do in his free time.

What's the best on-line resource for something like this, a place where he could go to ask a lot of questions and get patient answers? is obviously not the best fit; he'll be asking a lot of questions that are, to a veteran, 101-level stuff, and having your questions closed/deleted as redundant/off-topic/not-a-real-question is discouraging as hell.

If this guy was your friend, where would you send him?

share|improve this question

closed as not constructive by Walter, Eric King, Oded, Glenn Nelson, Caleb Jan 19 '13 at 19:12

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

...where would you send him? To the library. It's fine to ask questions, but it's better to try to learn something yourself first. And when you do have questions, do a little research to find the answer yourself before asking. Questions closed as duplicates aren't bad questions, they've just already been answered. –  Caleb Jan 19 '13 at 19:22

3 Answers 3

  • Stack isn't so much Noobie-hostile as it is teach-me-everything/do-it-for-me hostile. The trick is to ask specific questions (even amateur ones) on stack that demonstrate you've actually attempted to solve/understand something but are at a key sticking point.
  • On learning OOP, I'd say read a little, code a lot until the win factor actually starts to make sense to you.
  • Stack chat ain't bad either if you can find a busy room and want to ask a more vague/general/ambiguous question. JS devs will talk your ear off at the right time of day.
  • O'Reilly Safari account. $10/month for digital access to any 5 books/month. Takes the sting out of picking up a tech book and realizing it wasn't really what you wanted.
  • I've actually found Wikipedia surprisingly good for making stuff a lot more clear. It definitely helped grok what Design Patterns was on about in a lot of specific cases because I'm primarily a JavaScript dev and didn't really know the language constructs they were referencing as well.
  • Try stuff out. Seriously, there's too much Kool Aid in the mix to not just give something a shot to get a proper feel for whether it's actually in line with what you consider sound principles from experience.
  • Have your friend learn another language with completely different syntax. Learning Python helped me understand JS better by teaching me to separate syntax design from language design.
share|improve this answer
Re the Stack: I'll be recommending it to him on a limited basis -- if he can come up with a very specific question, he'll likely get some valuable information here. But I've seen some of the questions he's asked on Facebook; my gut feeling is they would be poorly received here, and be dismissed with variations on "RTFM" and "Just Google it!" (His Facebook responses seem to be divided between snarky non-answers and graduate-CS-level answers from one EXTREMELY smart friend [not me] that, while interesting, tend to whiz over his head. [And make me stand on my tip-toes to get them.]) –  BlairHippo Jan 19 '13 at 18:13
Ask experienced JS devs. Most of us don't have appropriate degrees that carry with them the burden of pointless language that obfuscates the whole point needlessly. Polymorphism? Is there any other place in common English where we use this word other than Dungeons & Dragons? Sure, it kind of gives you the general idea, but at the end of the day, concepts like OOP are best explained using very simple language. Then you don't have these words people latch on to and give completely varying definitions to like encapsulation (no, not about data-hiding). –  Erik Reppen Jan 19 '13 at 18:28

I would've given him this link and ask him to start with something. I feel reading answers a lot of questions by itself. For the remaining we have this place anyway ;)

share|improve this answer
Thanks, but I was looking for something a bit more interactive than a ginormous list of resources. :-) And as mentioned, I'm a bit wary of sending him here. The community can get pretty persnickety about the questions that get asked (I'm half-expecting this one to get closed!), and that gets really dispiriting. –  BlairHippo Jan 19 '13 at 17:27

Even if it does not exactly fit his needs with Web/PHP Development, he should consider reading some of the standard-books in the field of computer science.

I'll just post my recommendations, based on personal experienced (aka the books that helped me the most):

  • Gamma et al: Design Patterns
  • Fowler: Refactoring
  • Knuth: The Art of Computer Programming
  • Loukides: Head First Desing Patterns
  • Kernighan/Ritchie: The C Programming Language
  • Kerievsky: Refactoring to Patterns

I'm totally aware of the fact, that these books do absolutely not suit him in the first place, regarding his project. But I think, they will help him develop his programming and software-engineerings skills.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.