Can I ask a serious question? Why is there an argument about this every other day on this forum? Do you guys honestly think that the language or paradigm you choose is the most important decision you can make? I'm of the belief that programmers are programmers. Procedural, OOP, or functional, doesn't matter. What matters is the ability of your team to understand and build solid software from it. Can the tool accomplish this? Good, then appreciate the fact that other tools can also do this. Is your hammer the best? Yes or No is an opinion. There can be other hammers. And people using them aren't idiots. A bad worker will screw up even with the best tools. And a good worker will create the best software with even the worst tools.
I just feel like this entire industry gets caught up in trivial matters. What language, what paradigm, what editor. Not that these aren't valid decisions that need to be made but these are problems I can solve in a few minutes or a few hours of thinking about it. The big problems I face are people problems. Miscommunication. Lack of accountability. Developers going rogue. Management not understanding. Users not being trained properly. I could go on and on and I may sound like a grumpy old man. But I just do not get it. Choose your platform and be okay with it. Understand there are others. We don't need one platform or paradigm to produce great things.
This industry has a tendency to make a religion out certain tools and techniques ... IDE people don't ever think about the possibility of working with a simple, yet effective text editor. People that have been doing OOP for the last 10 years won't even look at functional programming techniques that have been know for decades, with firm theoretical underpinnings and still continue to produce hundreds of PeopleDaoFactoryFactoryImpl every day.
The biggest problem is that, as a developer, you simply cannot pick the right tool for the job, because you're not doing your own thing as a solo developer. You're always part of a team. Even when starting a business, you probably need a good cofounder or first employee - finding a smart and dedicated individual is hard enough, while also having preferences about the right tools and techniques is a bitch.
So naturally there is a backlash ... some of us hate IDEs, some of us hate the noun-centric and problematic designs that we see in large Java applications, some of us are aware that there's a multi-processing revolution coming and that mutable state does not scale, etc. And if you work in a team that gets things done, you're really lucky and blessed.
But how can we avoid getting stuck in the status quo, other than expressing our educated opinions on it?
And btw, I actually love OOP, but as a tool, not as a way of thinking about the problems I have.
I find it amazing you talk about mindsets that keep us in the status quo, and then you disparage IDE users and write a post full of hacker news groupthink regurgitation. I've noticed the type of person who hate IDEs tend to fall much more into the religious and close-minded crowd than those who don't. Most people I know who use IDEs are perfectly competent at an editor like emacs/vim and simply prefer different tools, but that doesn't stop many people who prefer text editors from trying to feel superior by stereotyping IDE users as paint-by-number morons incapable of embracing the beauty of the command line. It's a traditionalist and condescending attitude that I think is holding us in the status quo more than something like OO's popularity, because there are all sorts of cool programming language ideas you can come up with if you're willing to sacrifice the source code being easily edited by a text editor. Yet we see far less experimentation there then we do with functional programming languages, and I think that's because functional languages are perceived as cool and smart but IDEs are associated with the philistine class of programmers.
1. I hate IDEs for concrete reasons, like being impeded to work with tools for which your IDE does not have a plugin and sometimes it happens even for really mainstream technologies ... how's the C++ support in IntelliJ IDEA these days?
2. Switching between IDEs and editors is a productivity kill, especially if you do that switch a lot - instead of being a creator that bends the tool to your will by customizing it to suit your needs, you're going to be just a casual user that cluelessly clicks around.
That's not so bad, however to be good at what you do you need a certain continuity in the tools you use, otherwise instead of learning about algorithms or design tricks or business, you'll be learning about tools all day; and unfortunately this cannot be applied much to languages and libraries, because these are optimized for different things - although if you worked on the same CRM for the last 5 years I guess it's not that important ... and I don't know in what groups you hang out, but an IDE user that switches a lot or that is familiar with grep/sed is a rare occurrence in my world
3. I love Smalltalk-like environments where the IDE is part of your virtual machine and can see and work with live objects and continuations, but get over it, because your IDE is not like that - yes I would love to escape a little from the text-based world we live in, however the current status-quo of IDEs is still text-based and text-editing isn't even something they do efficiently
4. HN groupthink should be natural, because it has attracted users with similar interests; that's not bad per se, considering that HN users are a small minority and not necessarily because we are smarter, but because we have slightly different interests ... also, I don't see much evidence of groupthink because I always see both sides of the coin in conversations here (you're disproving your own point right now)
5. I never implied that my opinions represents THE truth and I like engaging in such discussions ... instead of reading about the same old farts coming out of tech-darlings of our industry, because in these conversations I might actually learn something
...Surely, you realize the irony of your position, no? One could easily replace "IDE" with "Programming paradigm [X]" and you'd suddenly be the exact person you were railing against in your original post..
How about this.. both have their merits..? Static typed languages do benefit from a good IDE. That said, I personally prefer the cleanness of Sublime Text over a proper IDE -- even at the expense of having to write my own getters and setters! Doesn't mean the other is antithetical to productivity.
Let's end this senseless arguing and just agree that PHP is terrible.
The even bigger irony is that people using terrible languages and paradigms, like PHP and the original Visual Basic, have historically gotten things done, even if that meant shoving a square through a round whole :-)
I guess the curse of "enlightened" people might be that we think way too much about such things.
I think PHP and the original VB were actually great platforms. At the pure language level they were not elegant (but good enough), but both were not just languages, but a platform which as a whole were great for developing a specific kind of apps.
For developers, tool problems are people problems.
Can I get quick answers to questions about this language? Are there plugins for this IDE for the kinds of programs we write? Are there mature, well documented libraries for our problem domain?
For languages, especially, the culture around the language is probably more important than the language itself.
So arguments about tool sets are indirectly judgments on entire programming cultures, and humans are pretty passionate and defensive when they feel like their cultural values are under attack.
Then don't do it. Pick the tools you like and proficient in and go wild with them. But please don't preach it day in day out on how horrible it is to the rest of us. This is what is happening here. We actually found OOP very useful.
I completely agree with everything said, but I also think that conversations about languages and paradigms are worth having.
Yes, it's true that you can solve the decision on what language or paradigm to use in a few minutes or hours, but your options are not only limited to those that you understand, but are limited by the depth of your understanding.
A lot of the time the decision is likely nothing more than personal preference, but if there is a chance that one paradigm will work better for solving some problem or class of problems; I'm interested in hearing about it
Arguing (or watching people argue) trivial matters gives my brain a break from the serious things I would otherwise be working on. That's probably what drives most people into these discussions and onto their soap boxes too. It's a lot more fun than trying to figure out why my app can't find that damn configuration file.
I think it's because the different platforms are incompatible, and a large compatible community of software is a value multiplier (both in terms of the longevity and the usability of your code). You want people on your platform. Similarly, it takes time and energy to master a new methodology, and that's time/energy not spent if other people work the way you do.
To be sure, it is all bits and most languages are capable of rearranging them as needed. But paradigm is important. If you start every solution by asking 'What classes am I going to write?', your ratio of typing to functionality is not going to be very good.
I just feel like this entire industry gets caught up in trivial matters. What language, what paradigm, what editor. Not that these aren't valid decisions that need to be made but these are problems I can solve in a few minutes or a few hours of thinking about it. The big problems I face are people problems. Miscommunication. Lack of accountability. Developers going rogue. Management not understanding. Users not being trained properly. I could go on and on and I may sound like a grumpy old man. But I just do not get it. Choose your platform and be okay with it. Understand there are others. We don't need one platform or paradigm to produce great things.