Today I saw a GREEN traffic light for the first time.
OK, that’s not entirely true. What I mean to say is that I saw that it was green.
You see, I was born color blind. This never really bothered me because, like most people who are handicapped from birth, I didn’t know what I was missing.
But then, I found out that there is this company that sells glasses that help color blind people see color. They are pretty expensive, at least they seem pretty expensive when you believe you don’t really have a big problem. But then I took the standard color blind test on their site and found out
- I’m color blind (duh!)
- there is an 80% chance that the glasses would help and
- I only see 2% of the available color spectrum.
Wow! Only 2%? I knew I had issues. But I’ve been able to function. But only 2%. What am I missing?
Well, my wife got me a pair of glasses for Christmas. Unfortunately, I ordered indoor/computer glasses and what they sent are sunglasses. I’m still trying to get that resolved. But just for kicks, I wore the sunglasses out while I was running errands today. This is the first sunny day that I haven’t been stuck inside since Christmas. The reds are redder, the yellows are yellower and, hey! Guess what?! The green light is actually green!
So, what’s this got to do with programming? You did know this was going to eventually relate to programming right?
Most of us program with only 2% of what’s available. And like those of us who are color blind, we don’t think it is an issue because, somehow, we manage to get the job done.
Just off the top of my head, here are some ways this applies.
Know What You Know!
This is most evident with JavaScript, but I think most of us program this way with every language we use. Since this is primarily a .NET blog, let’s just focus on JavaScript and C#.
JavaScript has some pretty amazing features once you get your head around them. For example, how does “inheritance” really work in JavaScript? Do you know, can you explain it? Or do you just use JavaScript as an “object based” language, much like we used VB6? Do you understand how JavaScript shims work or why they work? Do you know what a closure is and how they can cause trouble if you aren’t careful? Do you know when variables get declared? All difficult questions to answer, because in some cases, you probably think you do but really don’t. Just like I thought I was seeing fine.
Or if you’ve been using C#. Do you know what the yield keyword does? How about var? Ever seen nameof()? Did you bother to learn LINQ? The problem I see with so many of my peers is that once they’ve learned enough to get the job done, they stop learning. New version of the language comes out? Do they learn it? Nope.
Instead, the programmers who excel are the ones who are always learning. It isn’t enough that they can get the job done. They have to understand the tools they are using to the fullest extent possible.
Ask Why
Here’s another place this shows up.
I’ve had this similar discussion twice now, now that single page applications are the hot new thing on the web. Where do our business rules go? I had one manager assert, “Let’s all agree on one thing. Business rules belong on the server!” Well, maybe.
What do you mean by “business rule”? Why do you think this is true? In a closed corporate system, does it really make sense to make multiple calls back to the server when it can be done faster on the client? I’m not saying they belong on the client side. I’m just saying they don’t necessarily belong on the server either. But here’s the real problem. If you’ve stopped asking “why?” and just assert that something is true because someone convinced you this was true 5 years ago (or longer), you’re making decisions like I’ve been seeing color. If you ask me what color the grass is, I’ll tell you “green” with our without my fancy new glasses because, just like the traffic like, I’ve been told “green” is the correct answer.
Ask How
I’ve run into this, hard core, twice in my career and I’m always shocked when I do.
I once knew a guy who, whenever I told him HOW to do something, he would do it HIS way until he finally stumbled on MY way. What gave me the right to tell him how to do it? I’d used the product before. I knew what it could and couldn’t do. He hadn’t.
More recently, I was talking to a programmer who actually told me, “I just want to be left alone. I’ll figure it out. I don’t need any help.” What? Really? I can understand getting into a situation where you don’t know who you could ask for help. Or being so focused on the problem that you don’t know you need help. But flat out stating that you don’t need help? The only time I’ve ever run into people who won’t ask for help are kids that just graduated from college. And even that is changing with colleges focused on teaching students to collaborate instead of “doing their own work.” But to hear this from a seasoned programmer? That’s just ridiculous.
If you aren’t asking for help, you are definitely not working at full capacity.
Stay Young
I’m not saying this doesn’t exist in other sectors. But every time I hear someone say they can’t get a programming job because they are over 50, I think to myself, “really?!” Because I’ve been in multiple situations where I know of hiring managers who would hire martins if they knew they could do more than spell “programming”.
I would submit to you that most people who can’t get a programming job either 1) never really were “programmers” in the strictest sense of the word. Oh, yeah, they might have gotten some work done. But can they solve problems? Or 2) they were able to program once in a language that no one ever uses but they never kept their skills up to date. They are still programming VB6 in a VB.NET world. Or HTML3.2 in an HTML5 world. Never learned to use external stylesheets. Using JavaScript as though it is still a toy.
Maybe this is harsh. But since I’m over 50 and got a job as recently as three months ago, it isn’t like I don’t have any experience with this. Maybe you aren’t 50 yet. Here’s my advice to you. Always be learning. Listen to podcast. Subscribe to blogs and read the articles. Read programming books. Learn new languages. Get a PluralSight subscription. Tons of ways for you to learn and make yourself better. Best of all, you won’t need a new pair of glasses to “see” more than 2% of your programming career.