Good software is still hard to write. This remains true even for languages such as Java and C#. Some of the grunt work of memory management is now taken care of by the garbage collector, but it is still possible to have "logical" memory leakage.
As my article described, a more sinister form of leakage is privacy leakage. This is so easy to do that I think the Java complier should warn you about it.
If you avoid memory and privacy leaks, you can also improve your code by adhering to the principle of separation of concerns. This principle is the programming equivalent of divide–and-conquer strategy, and learning how to use it is an excellent investment in time well spent.
One other way to produce safer code is to impose your data semantics on your code. The enum type provides an elegant way to achieve this.
Following the principles and rules discussed in this article helps in producing good software. Simple as that.