My Pages

Wednesday, January 30, 2013

Previous success is not tomorrows

One of the questions that continuously comes up by people I meet. It's a question that has come up every time I attend No Fluff Just Stuff, as for a shameless plug of Jay Zimmerman's symposium it's an amazing experience with some amazing developers in attendance, "what is going to be the next big language?" NFJS usually revolves around the Java programming language but almost always includes at least one seminar on an alternative language that lives on the JVM. The question is an interesting one, I'm sure that people who were originally working in C had the same questions. Will C++ become the future; or maybe this thing called Smalltalk or what about this thing HTML? Or how about this new thing called the JVM with the Java language?

Today has been a very eye opening experience for me; I've learned quite a bit about what makes "thought leaders." I'm really not one of those employees that drinks the Kool-Aid with the whole "employees are the most important thing" and "employees drive the business." Mainly because this simply isn't true. Yes, employees have an impact to perform their job and do their best to move the company in the direction that the company is already moving. But let's be realistic, customers drive the business; but employees do provide another level of "driving the business" which is being "thought leaders."

No, this is not going to be an anti-enterprise rant; it's a self reflection of how far I've come as an employee. I've begun to understand that I am a "thought leader" in our organization. Before you tune this out and say "oh how you've changed" let me explain how I've come to this conclusion. When we hear about "thought leaders" normally we think about someone who has done something outstanding in a specific business area, at least I did. But I've come to a more realistic understanding that these are actually "innovators." Instead, "thought leaders" are people who attempt to move an entire business area forward with specific concepts that "innovators" created. So for us, this is tantamount to using new technologies to solve our problems or design new solutions to our problems. This, of course, applies to almost everyone in the software development world; so what sets a regular software developer apart from a "thought leader?"

Myself, I'm beginning to stretch out and write a book on Functional Programming. I've been teaching people at my organization how to do functional programming for the better part of a year or more. People look to me not just for help on learning and implementing Functional concepts, but also for general design advice. And instead of just giving them the answer that I might see, I try to help them arrive at the decisions so that they can understand how to actually solve similar problems in the future. Being a central hub for people to seek advice of is a very important part of being a thought leader. When you are able to put the knowledge that you have and the ability to push this to hundreds, maybe even thousands, of other people you become a larger thought leader not just within your organization but within the community.

I talked briefly before about force multipliers. Now this is exactly the kind of thing that assists you in becoming a larger "thought leader" as well. I think about all of the decisions that I make on a daily basis. Then I think about how many people I influence based on my decisions, how many of them might say "you know what, that guy was right we should be doing it that way!" If I, or you, influence many people over the course of your career you should think about how many of them went to other companies or jobs and said "hey, we did XXX at my previous position and it worked out amazingly." This is what being a thought leader is all about. Influencing people in such a way that they will take decisions that you made with them and implement them later with the knowledge that it is a better decision. The important thing is, if they arrive at the same decision then they will inherently believe in the decision beyond just your convictions.

So what does all of this have to do with programming languages and which ones are the next greatest? Easy, think about all those people programming in C. Someone had to walk in and say "we're going to try and use Java." And most likely that happened at a couple of larger companies; as such, they would then get others interested in the Java language over things like C, C++, or Erlang and begin using that language. Those others would then take that knowledge to the next company that they worked for. Remember, larger companies usually churn more people through, and so the more people that get exposure are more likely to spread that knowledge in their future positions. What we can take from this is that the thing that made previous success is NOT going to be the thing that makes tomorrows success. Most likely at those larger companies someone made the statement, probably quite a few times, that "no we're not using Java, C has worked perfectly fine for years and we should stick with it." Eventually the lapse of time causes previous success to stagnate. Instead, we need thought leaders. We need people to push the boundaries and say "yea, that previous thing got us here; but it won't get us to where we want to go." It's important to understand that listening too much to thought leaders can cause a very large distraction; but when used in an appropriate manner, such as replacing an older existing technology, listen to your thought leaders to determine what the best new idea is not just something based on a previous success.

For those paying attention, you'll notice about half way through this blog I stopped quoting thought leaders. The reason being, much like I started out with this mentality of dealing with the enterprise organizational structure I thought it was ridiculous that we had things called "thought leaders." But as I've grown both as an employee and a software development professional, I've come to the realization that thought leaders are a vital part of the ecosystem making up the software development community. They are not the innovators, but instead are the influencers who can take that innovation and get people to understand and use it not just within the business they are at but at the businesses they will eventually move on to.

No comments: