TIMTOWTDI (pronounced “Tim Toady”) stands for “There's more than one way to do it”. It’s well-known mantra of Perl, contrary to Python’s “There should be one obvious way to do it”. How TIMTOWTDI relates to Java? Some say that Java is (too) simple and there’s always one right solution to any problem. Or is it? And, what’s more important, should it be?
The truth is that generally people like rules and guidelines, anarchy does not work in our lives. If there's a some set of principles, standard that we can refer to, we can agree with them or argue with them, or we can create our new standard based on experience from the past. That’s actually happening in programming in 21st century, since the Internet became center of our life and information is spreading very fast - new programming languages are created to solve problems which weren’t solved by predecessors. But in 2014, we’re still using Java, the language created over 20 years ago, known for its massive verboseness and missing language constructs (lamdas are finally in, but there are no first-class functions in Java). There are times when this is painful, but despite that, is Java still a good choice for a software developer?
I must say I truly love Perl’s expressiveness and ecosystem, but I’m also falling in love with Java’s simplicity (due to its sometimes painful explicitness) and power. Of course because of my Perl experience, my point of view on Java and its ecosystem is a bit flawed, but I’d like to talk about my thoughts and share my experience.