In this article we will define magical thinking and explain what its causes and functions are , according to the existing literature. To finish, we will present some significant examples and contexts in which this type of reasoning appears regularly. Just in case any one whats to add to the discussion there.Magical thinking has accompanied humanity since the beginning of time. We have a natural tendency to establish cause and effect relationships without logically checking them This predisposition is very marked in childhood and is maintained if the context in which we find ourselves promotes it, as has happened in many cultures. * No, I am not going to comment anything the Mythical Web Scale property.ĮDIT: Wow, it has been submitted to Hacker News here. And, perhaps most importantly, raises my urge to kill. It is not going to make you win a discussion unless you carefully measure and proof it. PD: And please, don’t say “Python is slow”. Be conscious that software can bite you back. Those are all reminders that should makes us think that there are no silver bullets and we shouldn’t take lightly all those difficult problems. ![]() Every time you realise that there was a back-of-the-envelope calculation that shows something that will have an impact on some design aspects. Every measurement that makes you wonder what is the best metric to reflect a value. Each bug that takes time methodically eliminating causes. Most of the time, making a totally informed decision is unrealistic, or simply not possible, and some risks must be taken.īut as software developers we should know that things are not that easy, even if we have to compromise. Hey, a lot of times, it even seems to work, because the Feared Problem will only present after certain size that is never attained, or after the designer leave the company and left a latent problem behind. We know that “general Magical Thinking”, simple solutions to very complex problems, is quite common. The problem with Software Development Magical Thinking is that it is very easy and it is also very natural. Even if you use a very good tool for what you’re doing (like Erlang for concurrency), which usually implies paying a price (in development time, etc), doesn’t replace vigilance and issues could eventually appear. And no single thing will make you forget them. In software systems they are confronted almost daily. Not to exclude having previous experience to avoid subtle errors. Or even worst, the problem is not as bad as it looked and the designed system is more complex that it should, trying to catch a problem that never arises. Deep analysis of the problem, which usually is more complicated that looks on the first place. Those are all complex problems that need careful design and possibly measurements to deal with them. And you’ll get as sick of bugs and security issues both on static type language and dynamic type languages. Or that Erlang will avoid having a single point of failure. Static typed languages can avoid some bugs related with input parameters type. But there is no guarantee that creating a system in C++ is going to act like a magic wand against slow code. Please note that those are not completely, utterly wrong statements. We program in C++ so our code is very fast. Java is a static type language and it is safer than dynamic type languages like Ruby. Probably that will become clearer after a couple of examples: Software Development Magical Thinking noun Assuming that a technology will magically avoid a complex problem just by itself. Let me define Software Development Magical Thinking in this context: This can be really harmful for software development, specially when the opposite, positive form is used. That’s a form of Software Development Magical Thinking. You can recognise them on the usual rants about how technology X is The Worst Thing That Ever Happened™ and Should Never Be Used™ Other than the usual “blame the others” when working with other companies (usually big corporations than thinks than using anything except C# or Java is laughable), you can also see a lot of comments in technical blogs or places like Hacker News or Reddit with similar, simplistic arguments. ![]() Python is slower than C++/Java/C# because is not compiled. ![]() I guess we all Python developers heard this kind of argument from time to time:
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |