People who are really good at their jobs obsess about their tools- artists obsess over their paint, carpenters obsess over their power tools, cooks obsess over their knives.
PHP is like buying a chef's knife at Wal-Mart. You can create a 5 star dish with it, it cuts perfectly fine, but it doesn't inspire the same passion that a Shun knife does.
Most restaurants in fact, don't use fancy-knives, they use just regular knives and it works out just fine.
But, to draw the analogy back to programming, we're not regular restaurants. We're wannabe "rock-star" chefs- coding and "startup-ing" isn't just a job, it's part of our core ethos, so we obsess over all the tools we use, the text editor, the monitor, even the chair- because it makes the experience all that much better.
Most people do this about things they seriously care about. Runners debate intricacies of running shoes or the perfect in race meal. I've had debates with weight-lifters about weight-lifting gloves. Go over to a different forum, and you will hear arguments about the perfect size of a suit lapel.
The "Everyman" tools can always accomplish 100% of the job, but provide 90% of the experience. We spend an inordinate amount of time trying to get that last 10% out.
Is it probably unnecessary? Yeah. But people really bond over passions, and in arguing/debating that last 10%, you can really connect with people, which is why sites like Hacker News are fun and addictive.
Great argument, nice analogy, makes a lot of sense, and I completely (and respectfully) disagree.
Your analogy reminds me of the greatest cook ever, my grandmother. She used no technology whatsoever. All of her tools had been her mother's which were probably manufactured in the 1800s. She chopped everything by hand in a wooden bowl. (If anyone else helped her with the chopping, everyone at dinner could tell.) She never used pencil or paper and measured nothing. She stood in line at the farmer's market, the butcher, or the grocery store and inspected every item. And absolutely nothing I have ever eaten since, in any restaurant or home, has been remotely close to hers. It was magnificent! And I miss it so much.
I'd like to think I have almost as much passion about my work. I use the most primitive tools, 24 x 80 green screen editor, no framework, no IDE, no debugger, and mostly pencil and paper. I savor every byte just as I imagine my grandmother savored every little detail of her cooking. I'm not trying to save time or be fast, I just aspire to creating Grandma-quality software. I only hope my software brings someone the same joy her food brought all of us.
I've used many different tools, including php. And I rarely care how fancy they are. Ironically, the simpler, the more joy I have found along the way.
I don't think your story is incompatible with my analogy, in fact I think it's totally in-line with my analogy.
Many hobbyists who have reached the utmost peak level in their art go totally primitive. Cooks grow their own food. Carpenters make hand-made furniture, people really serious about clothes go bespoke.
Just because we spend more time agonizing over things doesn't mean we have to spend more money on them. More "expensive" and "fancy" doesn't make them better- in cooking, look at the revival of cast-iron cookware and the people learning how to sharpening their own knives. The coffee snobs don't buy the most expensive starbucks brands- instead they go order fresh coffee beans, roast themselves, and then grind them. A person really into clothes doesn't get the latest Tom Ford/Armani suit- they instead get a bespoke suit from an English tailor, which is often far cheaper. There has been a movement away from $150 running to shoes to shoes like the vibram five-fingers to even barefoot!
Why do masters of the art do that? I think it's because of the idea that you can create something from nothing. This is very easy to do with computers (programming is the only profession where you can truly create something from nothing, limited only by your mind). You're not limited to someone else's vision when you do this- you can have everything exactly the way you want, the way you care about, the way that lets you exude your passion the most.
The guy who uses Ruby on Rails is no different from you, you just create your art in different ways. Using a green screen editor doesn't matter to them- they're not stirred up by it.
Instead, they get stirred up by using RoR. Maybe RoR solves a unique problem that they've been dealing with. Similarly, the guy tired of dealing with Java switches to Clojure and experiences the same light that you're experiencing- going simpler doesn't matter that too much to him.
There's no right or wrong answer in simplicity vs. complexity. Someone out there (Wozniak) is more of a purist than you and is writing everything in Assembly. The guy writing the latest and greatest web application is using Django because it's the simplest, most purest way to solve their problem- and when they get passionate enough about it that this is no longer the case, they'll go write their own.
You can get caught up in the tools and the techniques, but the one thing that really matters is that the examples I gave (and the example that you gave, which I love and will definitely remember) are of people expressing their passion. We may express it in different ways, but at least we're exuding it.
People that don't exude any passion drive me crazy.
So cooks, carpenters , people really serious about clothes are "hobbyists who have reached the utmost peak level in their art" but when I buy green and toast then grind for myself, I'm just a "coffee snob"... hmm... no Monsooned Malabar [1] for you.
Your grandmother used the tools that she was taught the trade with. She used simple tools that she'd spent years learning to use properly. She spent years learning how to read the products that her craft relied on. She was passionate about what she did, and it showed. Stories like that just reinforce the idea that it almost doesn't matter what the tool is as long as you take the time to truly master its use.
I think your analogy is great. While I agree that "most" tools will accomplish the same goal or job (Walmart knife vs Shun). I don't agree that the tool determines passion or commitment. I'm a PHP developer (just started learning python!). I work full time for a big website that is coded in PHP. I have a startup that is written in PHP. If you had a conversation about PHP with me, I'm super passionate about what I have accomplished and will accomplish in the future. I think the real problem is that the passion pool gets diluted... Let me explain...
PHP has an extremely low barrier to entry. Its a loose language (lets not argue about this right now) that someone can get their feet wet relatively quick. These developers never really learn the true power of PHP, they aren't passionate about their projects and they dont contribute back to the community. They dilute the pool of truly passionate PHP developers.
Owning a Shun knife just lets everyone around you know that you are "serious" cook. But hell, I like to cook too.
I agree with you wholeheartedly. Passionate people love to communicate with other passionate people, PHP as, you said, has a lower barrier to entry- it's like the Java of web languages. There's too many people and companies that just churn out php and java code as a job. It's not an ethos to them.
Just because you use PHP doesn't make you passionless, but because it's gone "mainstream", it becomes a filter of some sorts- just like the Shun is getting too popular right now.
It's not about the specific tool you use- instead it's about the passion and ideas that the tool conveys. In the end, the tools are meaningless. It's the ideas and messages around the end product that people remember.
Actually a lot of top artists don't. Not only because paint isn't their medium but because they don't do the work themselves. They have the ideas and then they employ minions to do the actually work of making the piece. Personally I think that makes them less than an artist, but they're the ones selling work for 100s of thousands of £s
that's interesting to know! That also sounds like a big scam to me! I definitely want to read more about that process, if you have anything stored in your bookmarks!
I was thinking of artist in the traditional sense- some renaissance painter mixing pigments and material to come up with the perfect shade of red, for example.
I was thinking of artist in the traditional sense- some renaissance painter mixing pigments and material to come up with the perfect shade of red, for example.
This is just a romantic myth. All the Renaissance painters anyone has heard of or seen in a museum employed tons of assistants.
Nearly any contemporary artist who makes any sort of money whatsoever has assistants doing most of their work. Damien Hirst has 160 employees! Murakami has dozens of employees. It even trickles down to smaller time guys like Ryan McGinnis.
">People who are really good at their jobs obsess about their tools- artists obsess over their paint, carpenters obsess over their power tools, cooks obsess over their knives.
Most people do this about things they seriously care about. Runners debate intricacies of running shoes or the perfect in race meal."
And yet one of the most grueling races in the sport of running, the 100 mile, 10000ft altitude Leadville 100 has been won more than once by a man not wearing true shoes at all.
This isn't an isolated example, either. Many masters of many fields focus on their skills rather than their equipment. Often those with the most expensive golf clubs, are those trying to compensate for a lack of skill. The same is true of photographers an their cameras. Miyamoto Musashi even went so far as to regularly arrive at duels with a wooden sword.
Tools can give someone an edge, but IMHO they aren't the right place to focus one's obsession.
That's fine if you're starting a project or a business from scratch. Choose whatever tools make you happy. But if you work for someone else, chances are you will be stuck using the language they use. And if you are professional, you do it. And you still try to do a good job. Like Tiger Woods switching to Nike clubs.
professional and passionate are not necessarily (and, for most people, not usually) the same things. you can use a php framework professionally and be passionate about rails.
It's not just the experience. Languages like Ruby and Lisp tend to be a lot more concise and have more functionality than PHP, so it's more like comparing a blunt knife to a razor sharp one. You can still cut with a blunt knife, but it takes longer and is harder work.
I would argue that PHP and the LAMP stack have more functionality than any other language by an order of magnitude when you're talking about web development tasks. For anything else, PHP is pretty much irrelevant, but when you're doing web development, it's definitely the swiss army knife.
Without a single import or require, you can send emails, query a database, download a web page, handle session data, get post variables, etc.
You've also got file access, date and time functions, regular expressions, the list goes on.
What more functionality could you need for a web app?
It's interesting that you think in terms of web app. I generally think in terms of data model, and then web app is a structure on top of that. Much of my background is in delivering complex web applications with no javascript or other fancy stuff.
Previous customers have wanted lots of functionality in as few (and fast) page reloads as possible, with lots of reporting on each page. This results in a small number of mega pages backing onto a 'Service Layer' which in turn sits on top of a schema. Multiple applications can be hooked into the domain model to preserve data integrity.
I'm not as strong as many geeks I know at keeping complex things in my head. My experience of PHP (I've shipped apps from 3.0 to 5.0, but I've never invested enough time to know it well) is that it has weak language structures and weak object relational modelling capabilities - this makes it difficult to manage the sorts of complexity that I've encountered.
For anything else, PHP is pretty much irrelevant, but
when you're doing web development, it's definitely the
swiss army knife.
By way of comparison - in python there's a http interpreter in the standard library that you can bind to a webserver in seconds, and you can write a simple templating library in a couple of minutes too. It's got XML-RPC in the stdlib too that makes it ridiculously easy to offer services to other applications. Perl has similar stuff via cpan, ruby via rails.
What more functionality could you need for a web app?
I've found powerful object modelling to be critical. The Java platform has always been strong in this.
One thing that is nice about PHP is that you instantly get to the point that you change something and then reload - bang you can see your changes. CGI approaches aside, that's not such an easy point to get to with the other languages I know.
I tend to think in terms of language design, so by "functionality", I meant it in terms of syntax, rather than external libraries. Sorry, I should have been more clear.
You're kidding right? You're claiming that Lisp has more 'functionality' than PHP. By functionality, do you mean standard library? Or do you mean core language?
Usually people talk about Lisp's superior expressiveness. The ability to "draw down" (or up) a language to the concepts you're working with directly is a powerful thing, and very few languages do that as well as lisp.
Maybe that's what he meant? "Functionality" of a language is kind of a vague term.
My apologies, "functionality" isn't a very precise word in this case. I meant it in terms of what functionality is in the language's syntax. For instance, Lisp has macros whilst PHP does not. And whilst later versions of PHP do support things like first class functions, they do so in an unwieldy and verbose fashion that negates a lot of their advantages:
#(* n %)
(* n _)
(* n)
function($x) use ($n) { return $n * $x; }
I'm a chef, and I don't want to talk about knives. I don't care that my knives are basic; taste my cooking. I don't care that your knives are wonderful; I want to taste your cooking.
There's a reason that taste tests are done blindfolded, you know - ugly but delicious trumps beautiful but foul, every day of the week and twice on Sunday.
PHP is like buying a chef's knife at Wal-Mart. You can create a 5 star dish with it, it cuts perfectly fine, but it doesn't inspire the same passion that a Shun knife does.
Most restaurants in fact, don't use fancy-knives, they use just regular knives and it works out just fine.
But, to draw the analogy back to programming, we're not regular restaurants. We're wannabe "rock-star" chefs- coding and "startup-ing" isn't just a job, it's part of our core ethos, so we obsess over all the tools we use, the text editor, the monitor, even the chair- because it makes the experience all that much better.
Most people do this about things they seriously care about. Runners debate intricacies of running shoes or the perfect in race meal. I've had debates with weight-lifters about weight-lifting gloves. Go over to a different forum, and you will hear arguments about the perfect size of a suit lapel.
The "Everyman" tools can always accomplish 100% of the job, but provide 90% of the experience. We spend an inordinate amount of time trying to get that last 10% out.
Is it probably unnecessary? Yeah. But people really bond over passions, and in arguing/debating that last 10%, you can really connect with people, which is why sites like Hacker News are fun and addictive.