Everyone should learn to think functionally and recursively. But how? With which language? I think that one of the best options for functional programming is largely overlooked … Read the rest of this entry »
I had fun creating @py3k_update, a twitter account that would send tweets announcing new libraries that are python 3 compatible. More here: http://wilsonericn.wordpress.com/2011/09/06/python-3-library-updates-via-twitter/
But when the page that I was scraping changed format, there was no joy in figuring out what to change to get the updates working accurately. I’ve got other fun and worthwhile things to do, both in programming, and in real life.
So thanks much to the 200+ folks that found @py3k_update worth following, I hope that you appreciated what it did provide, and aren’t too disappointed to see its demise.
Jeff Atwood posted a thought provoking post that I very much wanted to disagree with. He argues that most people will not benefit from learning to code, and that coding is not at all similar to those fundamental skills (reading, writing, mathematics) that everyone should know. He’s certainly correct. Most of my friends and relatives do not know how to program anything, and they don’t suffer for that ignorance.
But the post bothered me. I don’t just enjoy programming, I enjoy teaching young people to program, and I have often told technically minded young men that it is essential that they learn programming skills. I also enjoy advanced mathematics, and I have very much enjoyed teaching calculus, linear algebra, probability, abstract algebra, and topology. Math is more fun for me than programming, but somehow … Read the rest of this entry »
So you wanted to learn Java. Naturally, you did the hello world thing, then you learned about flow control. You became accustomed to the type system, declarations, initialization, and you learned about scoping issues. Then you learned about polymorphism, inheritance, and you’ve learned how to write object oriented Java code. You’re familiar with the collections API, and you are accustomed to using generics for type safety.
Of course, you want to get paid for programming in Java eventually, and the little console apps you have been building don’t exactly look production quality. Moreover, when you look at the job postings, you see a hodgepodge of terms that don’t mean anything to you, such as Struts, Spring, Hibernate, J2EE, Tomcat, WebSphere, Ant, Maven, etc. What to do? Read the rest of this entry »
You know you aren’t the best programmer out there. You haven’t created an open source project in your free time. You probably haven’t even contributed a patch. You don’t go to all of the hip conferences to learn about the latest “latest and greatest” technologies. You don’t give talks at the local user group, and you don’t have a widely read blog.
But you aren’t the worst programmer either. You try to do your work well and you read a few technical books a year. You attend a user group or two when it fits in your schedule. There are a few technologies that you understand fairly well, and others on your team look to you for help in your areas of relative expertise.
The problem is, you are in a rut. You aren’t gaining skills as quickly as you were last year. You aren’t exactly thrilled about your current job, but not so dissatisfied that you want to take the chance of trading your known problems for unknown problems. What to do?
If you write Java as part of you job, you need to read this book. If you are learning Java, and hope to write Java as part of a future job, you need to read this book. So for many developers, the question of whether you should read this book is answered very quickly. The most important questions that remain are when to read Effective Java, and why to read Effective Java.
This is not a book to read to learn Java, Bloch assumes throughout that you have a familiarity with the language. It is also not a book to help you take the next steps after learning core Java, such as learning popular APIs such as JDBC, Java EE, or Swing. Effective Java is unlikely to equip you to accomplish any programmatic goal in Java that you were unable to code before reading it.
If you are overly pragmatic, it may seem that this book meets no real need. But if you have learned several languages, the purpose of this book, and the importance of books like this, is obvious. Read the rest of this entry »