There’s nothing wrong with being narrow. There’s nothing wrong with being whatever it is you feel like fits with you. But as for me, I’m broad and wide in my experiences, and so my first post reflects this…
I was browsing the shared book shelf in an IT office one day. There were books about every buzz word technology: Java, AJAX, .NET, MySQL, Linux, and so on. There were even one or two Cobol books. These were good books to help make good software developers, especially for someone recently out of college. But, could any of these books make someone a great software engineer? What kind of books would that take?
Communication is probably the most important business skill to have. Example: You switch a Java EAR project from a global ClassLoader to a module ClassLoader. Can you explain that to a fellow developer on your team? And can you explain the benefits of doing that to management - who don’t even know what a ClassLoader is? I noticed in my first real job out of college that being technical good will get you noticed, but being able to communicate will make you valued. I was very good and fast at the development work I did, but all the memos and documents I wrote about things that came up during the project were far more noticed.
Be the best you that you can be - Self-Improvement books. Example: A major project milestone is slipping behind schedule. You have to deal with people who are completely opposite personality types. Everything seems to be going wrong and you’re tempted to update your resume. How do you deal with it? When you set out to be the best you that you can be, you’ll do better under those extreme circumstances. Even more important, regular everyday days will be better, easier, and just more enjoyable. Being the best you is all anyone can ask of you, and if you can be a better you, then you can never go wrong.
Knowing a technology is helpful, but the principles behind it are more important. Example: C++ was the most common language in your field, but then Java comes out and now everything is in Java. Can you take all the experience you have at C++ and apply that to Java? Can you use your knowledge of design patterns, refactoring, and so on? As time goes on, I continue to value my ability to learn new technologies quickly rather than to know current technologies.
There are many other book types non-technology related that have helped me that I’m tempted to add. I’m tempted to add in how I think reading 1491 helps me in IT. But for now, I’ll close on those three areas above which off the top are going to be important to everyone: business skills, especially communication; Self-Improvement; and technology re-use knowledge.
Thanks,
Bill