I am reading a ton of stuff online about enterprise php, test driven development, domain driven design, etc.
It's pretty impressive that you've got into it without just by searching online without really talking to anyone. I too learnt about those things from the people on this forum. I'm quite certain it was the right thing to do. If you're someone who actually cares about doing things to a high standard and being efficient don't stop learning that stuff. In fact just don't stop learning.
and I would love to be working with people that were likeminded.
Since first learning OO and TDD two years ago I have as yet been unable to work with people who love doing the same. Most this was due to me living in a rural isolated place. Things are starting to look up now I live in a city. If you don't live in a place with a good developer community that's something you should seek to fix. Feeling like your the only person who gives a crap is not a good place to be, I'm sure I don't need to tell you that.
I want to be able to bounce my ideas off people, and have sensible standards to follow so I'm not completely in the dark when developing larger and larger applications.
Yes, that's critically important as well as so many other things like pair programming that you can't possibly do on your own. I've spent as much as 4 days working on the implementation for something only to suddenly realize - "Oh this isn't going to work because I've overlooked this important factor". If just one other person was around to discuss my ideas with that would never have happened and it's demoralizing.. wasting four days can constitute a failure but in fact it can happen to all of us.
The thing is, web design has always been a hobby for me.
Perhaps I'm misinterpreting you here but you seem to be saying that like it's a bad thing... I think it's slowly becoming more accepted that these days some of the best programmers are the best despite (or perhaps because) they haven't got a degrees in computer science or whatever.
Since I moved here to Toronto by far the smartest my knowledgeable guy I've met has never been to university. In fact he was a security guard and a bicycle courier until recently. He's spent many hours playing around with lisp and countless other languages and he completely beats the pants off me when he talks about language design. He's developing his own language at the moment.
I have of course met lots of other smart guys most of which have degrees but it's not the requirement it used to be and dude, four years is a big commitment and a lot of student dent. Besides I did a two year diploma in software development and 50% of everything I learnt was rubbish - I had to unlearn it.
I'm a senior psychology major at a small liberal arts school, and their CS program is crap. Not to mention I'd have to learn another language, since they don't offer PHP classes (Java wouldn't be bad, but at least give me Ruby or something?).
This has been already been said by others but it's important enough to repeat: Learn many languages! Besides you probably already do some JavaScript right?
If you only program in one language you tend to think of that language as "the one true way" when the reality is that nobody really has the answer. Software development is something thousands of people have theorized over. People have developed all kinds of different solutions, some are better than others, some are better at particular aspects but there is no one true way - at all. Part of the UNIX philosophy embodied this fact by suggesting that numerous small, dedicated, languages was the best way to approach the problems. It seems that the Java revolution moved us away from that but I get the impression it's shifting back a bit (DSLs anyone?) and rightly so.
Also remind yourself that learning your first programming language is significantly harder than learning subsequent ones. And whenever something seems really alien to you, you'll probably get the most enlightenment out of understanding it.
I would love to get more advanced with PHP, but I feel like all the serious developers are looking for CS students with years of OOP theory under their belt.
OO is definitely something decent employers are looking for. And the reason for this is that you have to understand it in order not to mess up existing code bases and it takes on average at least a year, more often two.
But! There's something you can do to speed that up. Firstly OO is significantly easier to apply in Python, Ruby and SmallTalk compared to PHP and Java. They use a different model which is, in my opinion far superior.
Secondly, the best approach is to use TDD and approach all your OO design and learning by means of refactoring. Buy Martin Fowler's classic Refactoring book, read that and about design patterns. Refactoring allows you play and experiment with different designs, it gives you confidence and tests force good design. It sounds funny, but to learn TDD and OO together is easier than learning them one at a time. Much.
Then try and write something reasonably big. Rewrite as many times as you care to. This is how I learnt, worked a treat.
Maybe that's not even something you can learn in school, I don't know... but I feel like my expertise is growing the more I write and study this stuff, and I feel like I need to structure what I'm learning, either with a serious design firm or with a good CS education. Any suggestions?
I'm not sure about that. Maybe you need a mentor, someone to tell you which books to read and in which order. Someone to help you when you get stuck. If you like I could assist you with that, although I don't claim to know all the answers, not by any means, but I have already travelled the road you are about to embark. I dunno, you might find my Ruby evangelism a little off putting though
Hobby programming is one thing, a career is something else.
Well Califdon, I'm busy trying to establish a company that combines both. Strong team spirit, highly focus on best practise, learning and personal development, yet pays the bills and some; at least that's the plan.
A lot depends on what your options are, over the next several years. If you're living at home with parental financial support, you might choose a different path than if you have to earn your living the next few years.
Oh yes that's an excellent point. I had the freedom to live at home so I spent nine months learning TDD and OO doing bits of web design for very little money on the side. If you don't have the freedom to do that I guess you have to go for junior programming jobs - *shudder* - I never did that but it sounds like the slow road to me.
What are the chances that you could capitalize on your knowledge in the two fields? Maybe find a job with an organization that specializes in web sites or databases related to psychology?
Nice
if you can get it. That's a big if though.
I couldn't stand the idea of taking classes where I knew more than the prof (as it was in high school)
Ha ha! You know it's quite good fun if you're the audacious type. I really <span style='color:blue' title='I'm naughty, are you naughty?'>smurf</span> of one of my lecturers once when I corrected him on something in front of everybody. Ahhh I used to keep them on their toes. But I had a lot of respect for the guys who genuinely knew more than me. And I've learnt to keep my mouth shut, that's a good skill.
I guess my realization is that I can see a career in my hobby, and its something I really enjoy, but I don't know in what avenue to take it at the moment. I've realized that once I get beyond the general knowledge, teaching myself is really hard to do. I feel like a good base in enterprise OOP would be very beneficial to me. To get that base, I either need to work with serious PHP programmers (unlike my boss) or go back to school and study CS. At this point though, I feel like I'd need to go back to school to get in with the kind of programmers I want to work with.
Have you actually tried to find other developers who think like you think? How hard? What are you prepared to do to find them? I was prepared emigrate, looks like it's paying off. Personally I wouldn't settle for the second best but then that's me.
I have seen many CS majors who have not a clue about real development practices (and I'm not talking about only web here). This is not surprising, as the name implies - Computer Science is not about development but about theory of computers. Sure, you learn some programming skills as well - but completing some exercises is not even remotely close to having experience with actual development. The academic purpose of universities is not to prepare students for a job but to advance the science of computing - which is nice, but not really relevant for someone looking to be a developer.
+1 agree very much. If you're interested in software best practise rather than computational mathematics and CPU architectures etc. software engineering is where you want to be.
I've had people tell me that before... I think I would really like to learn Ruby, I just don't know when I'll have time.
Is it a question of time or a question of priorities? Perhaps we've changed yours. And for the record, Ruby is TEH BOMB! I'm sorry I tried to hold it in.
I have been hesitant to learn another language I think because PHP has such a low
barrier to entry, and I feel like I can be competitive with it
This is probably one of my major problems with PHP - 99% of everything written in it sucks. I wouldn't recommend joining an open source PHP project in order to learn because the chances are the programmers you'll be working with won't be very good. Notable exceptions that I know of: Swiftmailer, SimpleTest, HTMLPurifier, PHP Image.