11 Days to May?! (Late Night Rant)
by Jeremy on Apr.20, 2007, under Uncategorized
I got in from the office at about … I think it was sometime around 8:00 PM … this evening and ended up passing out after I finished eating my dinner. Woke up a few hours later, as you can tell. It was a nice nap, but it made me realize how much my body is screaming for relief from the crazy schedule we have at work, right now.
I took a moment to sit here and reflect on how much progress has been made and how much has been done since I came out here almost a year ago. I’m really, quite frankly, astounded with everything …
But, there’s a downside to that progress. We’ve known pretty much nothing but the job for a while, now. For a few months, in the beginning, I wasn’t too fond of this concept. I’m 19 and I wanted my life back. A few things that have happened to me since the end of October have changed my attitude substantially.
First, I realized the real potential behind everything we’re doing. This project is huge. And I know I’m speaking in abstracts here, but all will be cleared up before too long.
Second, outside influences from certain people, especially fellow team members, have inspired me to do better than I have been in the past.
Finally, a very special person came into my life through what couldn’t possibly have been a coincidental meeting. And after everything that’s happened since that moment, I know that it’s no longer just my future and well-being that I’m working for.
On my birthday this year, I will have been doing this stuff for seven years. Man, it’s been a long time … but … not really? Yes, not really. For six years, exactly, I was involved in Open Source / Free Software-type development, for the most part. I don’t think anyone realizes that the difference between that type of development and working for a real company, and going through the entire software development process (as opposed to just the parts you feel like doing) is really an entirely different game. And for this reason, 95% of open source and free software type projects will ultimately fail.
I mean, really. Think about it very clearly for a moment, before you respond with your usual “not thinking about the whole picture” backlash attitude. Open source development is, 9 times out of 10, inspired by what could be frankly categorized as an egotistical attitude based around improving something for personal gain. Sure, you’re giving what you’ve done to the community. Sharing is good, after all. Your mother taught you to share with your friends. Excellent.
There’s this attitude and mentality shared by these types of developers that just doesn’t fit inside the realm of “Enterprise Software Development”. And you WILL get your chops busted for it. Trust me, I have gone and am still going through it to this day. You hang onto to these things and no one is going to trust your ability to get things done, whether or not you truly have the ability to do so.
I’ve been keeping an eye very carefully on the PHP Community in its entirety for a long time. I’m in a position where at any moment I may have to justify the business reasons behind using PHP over other languages like Ruby (shoot me), or anything .NET based. After watching as carefully as I have for the time I have now, I’m quite ashamed to say that I don’t have an answer to the question. And it’s for the very reason I mentioned above. There are far too many people that are prominent in the PHP Community that have that egotistical attitude that comes with Open Source development. Watching these people constantly attack and belittle each other instead of working hard to make PHP the mainstay enterprise language that they want it to be absolutely saddens me.
I’ve been getting my feet wet in .NET land again lately, and comparing C# directly to PHP, you get a lot of interesting results. First off, C# is a compiled language where PHP is interpreted. PHP applications, by their very nature, can be deployed faster than your ASP/C#.NET apps. I know this from token experience from my job, especially. C# is strongly typed, PHP is loosely typed. This is probably a subject of debate, but I’ve oftentimes found myself coding my PHP apps to be rather strongly typed. Variables should be this type and this type only. Anything else is wrong. So, being able to just explicitly state that in C# makes things easier, believe it or not. The only time this becomes a problem is when you need to do any kind of type juggling, which is insanely easy to do in PHP because it takes care of it for you, in the background.
Next on my list is overloading. Specifically, class method overloading. PHP-enthusiasts gripe because PHP “has no method overloading” — Uhh, I think you’re missing the concept of what overloading is, folks. PHP supports overloading in one very major way that makes it “easier” — Variable arguments. You can set default argument values in the function definition. This very feature alone satisfies 95% of the overloading needs I’ve ever had. And with PHP being a loosely typed language, the return value is already completely based on the type of the variable you return. Now, it doesn’t support operator overloading of any kind, though.
One feature that PHP lacks that constantly and consistently pains me is namespaces. For the love of all that is good in this world, will the PHP developers please get off their asses and realize that if they want to go in any kind of OO direction with this language (and if they want to get the some 3000+ functions out of the global namespace) that namespacing is an absolute MUST HAVE?
Wow … Talk about side-tracked. Anyway …
The first quarter of this year slipped by me almost completely without notice. And I’m happy to say that the period of constant “do or die” work is almost over. We can see the light at the end of the tunnel, and judging from how far we’ve come and how well our team has managed to pull through even some of the most trying situations, things are looking very good. You may not hear from me again until May, but I’ll have a huge update to post after I get back from New York, I’m sure.
Until then …
April 20th, 2007 on 3:48 am
I’m not really too sure what namespace is. From my understanding would it be similar to static classes for functions? Eg. preg::quote(); or something similar? and its aim is to stop name clashes?
April 20th, 2007 on 5:27 am
Yes, you’ll have loooootsa stuff to say afterwards. =) Maybe we can even update once or twice while you’re here if we can. ^_^
April 20th, 2007 on 5:50 am
Lewis: Namespace (Programming)
Static classes and namespaces are two very different concepts. Namespaces will solve the whole “really screwed up” naming convention that most PHP Apps have to deal with, because we can’t name components how we want and then wrap them in a unique namespace. Static classes are still going to have that problem.
Ruzena: Yes. We’ll definitely try.
April 20th, 2007 on 5:33 pm
I’ve never really known what the term namespaces was until I just googled it, but in writing PHP I have always wished they would group their functions into classes. i.e. $string->nl2br() or whatever. I just never knew that that was what namespaces was all about.