The Old Man and the Code
So I'm old, I get it. I've been coding for over 25 years professionally. Where other's have left the art, I've stayed in. I've stopped attempts to move into management. I cannot imagine a job where I am not writing code. I'd get bored. I'd get gone.
I'm not the smartest coder out there, many others know things off of the top of their head that I have to look up. I don't even always stay up to date with the latest in the changing landscape of C++. I let the application dictate what I need to learn. I'm not a huge fan of shared pointers, I've never had issues with memory allocation. I do like those cool for loops, the one's with the colons, real time saver. I can take or leave auto pointers. They are useful when you have a very long std iterator, but if used too much they destroy code readability. Many people coming in from other languages love them and that's why they're there. Making it so anyone can easily work on your code. But sometimes that goes too far. OK, unnamed former employer, if someone is looking at my code and doesn't understand what a reference is, they probably shouldn't be working on my code or any C++ code for that matter. I see now that I've become the ornery old code slinger, oh well. It was bound to happen.
Cool things can happen when you're the old man writing code. Your opinion means something. When you are young and kicking butt, you are still young. When you get older and people get some sort of concept of the actual lines of code you've written, they listen. I'm not saying they should all the time, I can be as clueless as the next guy. But experience does play a role, and usually I don't repeat the same mistakes and in all my years of coding I've committed just about every mistake. My worst, wiping out the contents of the Win98 ME windows folder on a game run. Beat that :) See, when you've got the years and your career is pretty much settled you can admit that stuff.
I do think that some people have the gift of coding and other's don't. My years have only cemented that belief. I meet a lot of pretty good coders, but very few great ones. I cannot define what a great coder is, but I can recognize them when I brain storm with them. They see the whole problem, what the code can and cannot do, what the hurdles will be, an idea about how long it will take, the entire problem and execution. Then hopefully they get excited about the challenge of actually creating that person's vision.
I've never really had a lot of preference about what I write, as long as that application has some challenges and chances for creativity. Yes, it's all buried in the code, but there is power in having the ability to make someone's vision come to fruition.
Oops, our puppy just fell off her chair. Maybe I'll use her picture for this article. She likes to sit next to me while I write.
One thing that I notice and I guess it should make me proud of the accomplishments of the great coders, is that the industry does not expect much. The market is glutted with those that really aren't that good at coding, but are very very smart. So the expectations of most coders is pretty low. Most of the great ones could work just one or two days a week and get their jobs done. But if that's the case, they are a failure. The duty of someone with years of experience is to share that experience. Like when the NFL MVP QB is about to retire. They've got to stick around and teach the new QB all their years of experience. That's the door that opens and it's a great door to enter.
Who would have ever guessed, but I really love sharing my knowledge and teaching others to code. I seriously love it. I know that some companies have code reviews as pissing contests about who can prove themselves the smartest (been there done that), but now my reviews are a chance to shine, to teach, to learn, to share. Send me your tired and your poorly coding and I can teach them, if they are teachable. Face it, some aren't. Some just want to prove themselves right and spend so much energy trying to justify their bad opinion that they cannot learn. I will put those types over to the side right away. But most, most want to code, most see what you can do and want to do it too. How did you know to do that? Well I could tell you a long winded story about how I screwed up, I could give you some ancient guru speech, or maybe I'll just explain why. Depends on my mood and my student.
Puppies asleep, finally still enough for a photo.
With each new position, and I've had a lot of new positions (get bored easily once I master a code base), I've started out by saying I code. I don't manage. At the least half my time must be spent actually coding. I grew that a little and included design as well. So you're given some tasks and you prove your resume. Then they start asking you for time estimates for tasks and that's when it gets hard. I have to give multiple estimates, if I do it alone, if I do it with experienced help, if I do it teaching along the way, if I do it with this kindergarten class and they all need to understand it at the end. It depends on the timeline usually. Yes, crotchety works here.
One thing about remaining a coder is that you'll glass ceiling. That's not anyone's fault really, it's just the market. A company can only pay so much for coding and if you're good you reach it quickly. Sure, if you are willing to move to one of the big cities of software you can make more, but I've done that and the quality of life was so poor it wasn't worth the cash. So you take on some more responsibility in order to keep moving forward. Officially mentoring or supervising other coders is a way I've done that, but I have to be clear about the amount of time I expect to code. That cannot be taken away.
I've written my own apps in the past, a line of war games and it was fun, but too hectic. Hard to be the designer, tech lead, company ceo, tech support, lead coder, etc. Yes I've had help and given off some of those hats, but it's still too hectic. I enjoy creating the visions of others better. Then I don't have to answer all the questions, just the fun ones. Experience also gives your customer a ton of options as to your approach and the pluses and minuses with each approach. Yes, I feel like an artist. Someone describes something to you, or write some high level requirements, then you create. You form their vision in your code. You quickly sling out all the pieces that you know exactly how to write, you google for partial solutions to some of the problems, but you also get to face new challenges, discover new tools, find out that the latest versions of C++ have some new pointers that make life easier. You realize your old school, but it's cool, you're still the best. But... if you have any sense of pride, by the time your done, you won't be.
First program: Pascal coding on an IBM 8088 (I think) at my high school.
First computer: Had a handheld radio shack where I could code the small pixel screen, first desktop was a commodore 64.