Being a good technologist
June 7th, 2007 by Dan
What is great about the computer science field is that you have many available fields available to you. You can do hard-core programming, project management, requirements management, process improvement, and etc.
Being in the computer science field is a double edge sword. By nature it is interesting because it is constantly evolving and changing. But it also sucks because it constantly evolving and changing.
In my opinion, you can learn a given language or domain really well, but it takes time to be a technologist. A technologist is someone who doesn’t know just Java and C++, but can talk about how it relates to the enterprise discipline, and how they compare against each other, and how it relates to a business case of a company. Basically somewhat who can evaluate a technology objectively. Here’s my 2 cents on how to go down this path.
Be Curious
First and foremast, you have to be curious about the world. For instance, lets say you get into some company doing grunt work programming of lame use cases. Even though you are doing rather crappy work, you still have the opportunity to learn a lot by asking questions. Why are we using this technology stack? Why does the architecture exist like this? Where is this product going? Who is my boss? Who is my boss’s boss? What is the organizational structure of this company? (Okay the last couple questions deal more with organizational management, but they are still good questions to ask.)
Really, you can ask A LOT of questions about the project you are on, and it will probably take a couple months for all your questions to be answered. But the key is to be curious about it. If you just do your job, you’ll do your job, but you probably won’t learn much and grow.
Just because many of us weren’t in the position of creating the initial software architecture of a project doesn’t mean you can’t learn why certain decisions were made in the past.
For example, lets take something as simple as “What is J2EE”? A simple question like this actually yields quite a complex answer.
Be Opinionated
Being curious helps build your foundation of knowledge. You are basically absorbing things like a sponge. After you have a knowledge base, the next step is to be opinionated.
In technology, this is especially important because there is a good answer and then a better answer.
Being opinionated is very simple. It requires taking a set of facts and making an assessment if it is good or not. Here are some examples
J2EE vs .net?
Java vs Ruby?
Compiled Languages vs Dynamic Languages?
Is Object Relational Mapping better than Object Oriented Databases?
Being opinionated is hard. Because most likely when you are curious, you merely absorb other people’s opinions. But after time if you have the ability to give your take on a technology and adequately back-up your answer, you really can be a great technologist.
Read Tech Sites
If you are in the technology field, you need to know what is going on. There are several sites you can read, but my two favorite ones are www.theserverside.com (I know there is a .net version somewhere out there) and www.eweek.com. In sites like theserverside.com, I think what is as interesting as the articles themselves are the comments people provide. People are actually sparring pretty passionately about the content of the articles.
Be Open Minded
When you become opinionated, you develop a stance on things. What is important is to occasionally let your guard down and accept new ideas into your head. There are times where, *gasp* you may be wrong. Being open minded doesn’t mean saying your ideas are wrong. It means pondering a new way of thinking… that’s it.
Dabble in Different Technologies
The people I hate the most are the idealists. Idealists are those who say stuff like ‘it’s Java or the highway’. Just like how traveling broadens your experience, working in several different technology stacks can broaden your perspective.
On the web, there is still the big .net vs j2ee war, but if you use both.. you sort of realize they do the same things, but have different tradeoffs to them.
Working in different technologies and languages can give you the perspective that maybe the core language you learned (Java for instance) isn’t perfect and there can be some room for improvement.
Look Beyond the Buzz Words
The technology field is FULL of buzz words. Part of it is mainly due to marketing, but one of the goals of a good technologist is to see beyond it.
Happy learning!
