I don't want to start a language war... for heavens sake, I am not worth enough to comment on languages... but just want to share my experience
I recently quit working as Java programmer for a MNC and joined a small startup that uses PHP....
After intensely coding for the past quarter in PHP based product, I feel happy and content, I like coding in PHP even when I am dead tired and sleepy. My question would be
Am I stupid not to understand the object oriented language like java
or its the MNC brutal bureaucratic system that kills the fun in programming
My gut feeling is being a very average programmer, I can just hold very few things in my mind, I feel I can fiddle concepts and techniques on the fly that was not possible for Java, but PHP it just fits into my brain size,
what are your thoughts ....have you ever had such a glee when using PHP or its just a feeling that will go away in time
Of course you are not stupid, everyone here on the 'ranch is smarter than average.
I'm not familiar with the TLA of MNC. What is it?
Of course, working for a small company is tons more fun than working for a large one. And working for a startup is tons more fun than working in a consulting company.
Further, if you were writing in a JEE environment, slinging out some quick PHP is going to feel like you have been let out of jail.
My personal view is that PHP is not really a good tool for really large web applications, big servers, that will have zillions of users. I don't see PHP being a good language for serious software engineering. But I could be 100% wrong on this, its all IMHO, YMMV, etc.
Joined: Jul 04, 2008
Sorry, MNC => Multinational company,
I would like to differ with your view, but something I just couldn't ....
To me it looks something special in PHP that makes it more a programmer language rather Java looks like a committee language, just couldn't say what is the rational behind such a gut feeling
Companies traditionally have some well know cultural changes with size. These typically happen at 10 people, 100 people, 1000 people and 10,000 people. With ten, there is no bureaucracy, you just get stuff done so you can release the product. When you get to 100, you have formal team managers, and maybe directors. As a company gets to 1000 people, its big, and there are layers of management as standard ways to approach problems. When its bigger than that, you have multiple layers of Vice Presidents and I go running and screaming away.
Multi-national companies with thousands of employees have to be the way they are. Its good for some people, but I tried it, and no thanks.
Amu mathi wrote:To me it looks something special in PHP that makes it more a programmer language rather Java looks like a committee language, just couldn't say what is the rational behind such a gut feeling
For me, its not Java the language that has been designed by committee, but rather the eco-system that we typically use for large projects. Hibernate, Struts, JDBC, Servlets and Beans, JSP, etc. are not really Java, but they are layers that were added to Java to make it scale.
PHP (and python and perl) are tools you can use to quickly hack out something.
But I really like typed languages and compile time checking, and the p-languages are too loose for my tastes.
I worked for a start-up and it was great in many ways - no bureaucracy, just getting stuff done (as Pat says). So if you're somebody who really likes coding, then that's going to feel good because you're spending more time coding than dealing with "bureaucracy". Of course, after a while you may find this informality can create its own problems e.g. poorly organised/structured/documented/maintained code, and you may start introducing some more formal structures to standardise how things are done i.e. you start to create your own "bureaucracy".
In bigger companies (or on bigger projects), people have already passed through that stage, so they have introduced all kinds of controls and procedures and mechanisms that are supposed to help everybody keep track of what's happening. Because everybody's basically like you and me i.e. we can only keep a few things straight in our heads at one time. After that, we need some kind of structures to help us work more effectively in larger groups, on larger projects or over longer periods (because people come and go so you need to be able to adapt to losing/gaining staff). And there are lots of people making lots of money out of telling organisations what kind of "bureaucracy" they need in order to work more effectively.
The problem is that it's hard to know when your sensible controls and procedures become senseless bureaucracy. I've worked for large organisations that had so much of this "bureaucracy" that it was literally almost impossible to achieve anything, and whatever you did achieve was prohibitively expensive because it took so much time and effort to get anything done. Yet they were utterly convinced that all their rules and standards and processes were necessary to prevent total chaos on their project. As they were the ones paying me, in the end I had to accept that it was "their way or the highway". But it's a common problem in any large project/organisation.
As for languages, Java is notorious for its "designed by committee" character, and the many different frameworks, methodologies and architectures that people have built on top of the basic language, plus the tools for testing, code management, build integration etc, only make things even more complicated. If you're working on a big project using a typical JEE stack as in Pat's example, then you will probably spend a lot more of your time dealing with the "bureaucracy" of the frameworks and tools etc, rather than simply writing code. But once again, people usually feel there are perfectly good reasons for each individual element of this technological "bureaucracy", even if the overall effect on your project might be just as crippling as the kind of organisational bureaucracy mentioned above.
Other languages - PHP, Python, Ruby etc - have a different balance between their inherent formal structures - e.g. pure OO, dynamically typed etc - and the external structures imposed by frameworks, tools etc. Personally, I think PHP goes too far in the other direction, but I like dynamically typed languages for some things e.g. Python or Groovy.
In any case, it's hardly surprising that you're enjoying working on a smaller project in a smaller company using a less "bureaucratic" language like PHP. The trick is knowing when you need to start reaching for those "bureaucratic" tools - formal structures/standards etc - in order to keep working effectively as your project grows.