Your Progress As A Programmer Is All Up To You
Feb 3, 2014
I read a comment on a post on Hacker News where a young programmer said they didn't want to work at a place where older obsolete programmers were let go instead of being retrained, as they would be there some day.
This person meant well, but still managed to irritate me no end. Firstly just because a programmer is older doesn't mean they are obsolete (and just because someone is young doesn't mean they are up to date either). The biggest issue I had with that comment is: its your responsibility as a programmer to keep yourself educated and up to date, not some employer's.
I've been a programmer for 32 years now and I've always tried to keep ahead of the technology steamroller. A lot of people I knew my age who got a BS in Computer Science never learned anything new after school and did eventually become obsolete. I spent 6 years studying chemistry but once I got started as a programmer I found I needed to know what was going on outside of my job, and had a desire to continuously learn and try out all sorts of programming. Of course things were a lot slower back then and reading was a challenge (no internet, you had to read stuff on actual paper!).
By my third year I saw the microcomputers were going to be the future and wiggled my way into the group that worked with them. Once I was in there I read about a new language called C and convinced my manager it was worth buying. Turned out that knowing C meant my first startup app could be written in C instead of Pascal.
Later I read about OO programming and it clicked again, I added some hacky objects to C so I could take advantage. Eventually when C++ appeared I was ready to take advantage of that.
After my sojourn at Apple when it sucked, I figured out I need to work on the web and went to work for consulting firm that used NeXT WebObjects, written in some obscure language called Objective-C. Once Java J2EE appeared I convinced the company to start working in that technology, and did the first project. Coincidentally that project was at a company that is now my employer's parent company, and it was their first completed Java project.
That's what happens when you pay attention to what is going on in the industry instead of just focusing on what you are doing. You never know what might become the "next big thing" but you can always make yourself aware of everything, even if you can't actually try everything.
I remember a coworker in the mid 2000's who was a C++ lead, where I suggested he try Firefox when he had some issue with IE. He looked at me like I was nuts: he had no idea that there was another browser other than IE. Even then he had no interest in even trying it as it didn't affect his job. I can't understand that attitude. You never know where the next big thing will come from, refusing to even acknowledge that the world is changing is not going to keep it from doing so.
My friends who got the BS degree and eventually lost their jobs when the mainframes were retired and found they could no longer work as programmers complained how they should have taken the time to learn something else. But once you discover you are obsolete it's too late. Assuming your employer will retrain you is a fool's pipe dream. These days employers may drop you, your job, your projects, or even the whole company without much notice, and then you have to find a new job. Expecting them instead to retrain you is not going to happen. Maybe if you are an automobile assembly line worker but not a programmer.
It's up to you to keep up, to try new things even if they might not be important. Learning anything is useful because the more programming technologies and tools you try and play with the easier others will be. You might learn useless stuff. But learning is never itself useless. It doesn't matter if you write open source projects, volunteer to code something, or even just work on stuff at home no one will ever see. It's training your brain to accept new things. Even just knowing what is going on in the programming world is going to help as you never know what a future employer might inquire about.
I was writing web applications when I first heard of Ajax (a few months after the term was coined) and I started using it; again I wound up teaching my teammates about the new thing first. Sadly it scared the architecture team who thought I had bought some new technology without approval and wondered if it was supported. None of them had heard of it (since they didn't pay much attention) and when I told them it was just Javascript they were only barely mollified. I was on the architecture team and it was my job to keep up with new stuff and it was still a pain.
When the iPhone first came out, but without any development Kit yet, I still thought it represented the future. Amazingly enough my Objective-C knowledge turned out to be useful again!
Today keeping up is a ridiculous job sometimes. People who do web apps today in Javascript have a constant stream of the next big thing every week; you can't learn anything fast enough before it gets crushed by another framework. I don't work in that area these days (just iOS) but I still keep up as again, you never know where things will go or you will wind up.
What few classes I've taken at employers, usually pointless ones that I already knew or some new technology I would use once, haven't ever been all that important to my future. But like anything you never know what might be useful in the unseen future.
In graduate school studying chemistry I learned APL. I never used it for anything other than play but it formed a basis for my first startup's product Trapeze. I forgot about Objective-C after 1999 yet today it's my primary language. You never know the connections that might prove helpful in the future.
What irritates me no end is when programmers ignore everything outside of their work area. I worked with some folks once who used a 4GL tool that generated RPG code. They bragged that their tool was the best thing in the world and that they would never need to know anything else. I can just imagine the day when most of them are laid off and wonder why they can't get a job. Technology rarely vanishes, but your job might diminish, you might do nothing but horrible maintenance, you might become superfluous and chucked out the door. Today no one will help you become re-useful besides yourself. If you wait until it's too late that steamroller will flatten your career.
So don't procrastinate today, learn about something new, or even better learn something new. Keep an eye open, you might see that future coming at you. Then when it shows up it's no big deal. So far I've been lucky to pay attention and it's kept me still programming after three decades and still working on modern stuff.
So keep your eyes peeled and don't expect anyone will help you keep up. Like Baseball pitcher Satchel Page said "Don't look back. Something might be gaining on you." In programming you need to look forward because the only thing behind you is that nasty steamroller.
Your Progress As A Programmer Is All Up To You的更多相关文章
- Some thoughts on a progress
I can feel that I am making great progress now.. if inspected closely, it is obvious that what I'm g ...
- swddude -- A SWD programmer for ARM Cortex microcontrollers.
Introducing swddude I love the ARM Cortex-M series of microcontrollers. The sheer computational po ...
- PIC JDM Prototype Programmer 1001
In need of a programmer for PIC micro controllers I decided to build my own one. This programmer has ...
- HTML5 progress和meter控件
在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等场景的进度.meter控件为计量条控件,表示某 ...
- 登陆Oracle,报oracle initializationg or shutdown in progress 错误提示
前两天,登陆Oracle,发现登陆不上去了,报”oracle initializationg or shutdown in progress 错误提示” 错误. 然后就想着怎么去解决,首先自己到win ...
- The replication agent has not logged a progress message in 10 minutes.
打开Replication Monitor,在Subscription Watch List Tab中,发现有大量的status= “Performance critical” 的黄色Warning, ...
- JavaScript----Js操控-HTML5 <progress> 标签
Js操控----HTML5 <progress> 标签 简单模拟下下载进度跑条 <h4>加载进度</h4> <input type="button& ...
- SharePoint Configuration Wizard - Unable to upgrade SharePoint Products and Technologies because an upgrade is already in progress
故障描述 当要运行SharePonit Products and Technologies Configuration Wizard的时候,出现了如下图所示的错误提示. 错误信息为: Unable t ...
- What technical details should a programmer of a web application consider before making the site public?
What things should a programmer implementing the technical details of a web application consider bef ...
随机推荐
- 我们为什么在移动端项目中选择jQuery而不是Zepto
1.文件大小比较 首先从cnd上(http://www.bootcdn.cn/)下载jquery和zepto. jquery下载的是2.2.4版本压缩: zepto下载的是是1.20压缩版本: 二个文 ...
- 安装SQL SERVER 2016 CTP (二)[多图]
内容中包含 base64string 图片造成字符过多,拒绝显示
- <续>调度算法补充
cpmpute->executors: 1.从storm配置获取<compoent-id,parallelism>集合 2.storm-task-info 获得<task-id ...
- JSP,PHP,Python,Ruby,Perl概要及各自特点
JSP,PHP,Python,Ruby,Perl概要及各自特点 博客分类: JSP PHP Python Ruby Perl概要及各自特点 javascript 互联网技术日新月异,编程的语言层出不 ...
- ubuntu13.04如何修改保存屏幕亮度
ubuntu13.04如何修改保存屏幕亮度 入手ubuntu两月有余,最初只是想装个ubuntu学习下linux,然后搞了个win7和ubuntu的双系统,最后干脆将win7干掉了,直接让ubu ...
- 【C++】排序算法小结
1.计数排序 如果给定上下界,并且区间不大的话,最适用. 比如对于英文字母数组进行排序. 时间复杂度O(n),空间复杂度O(n) void countSort(int A[], int n, int ...
- js实现同时提交多个表单
http://www.jb51.net/article/17284.htm 两种方法: 1.使用ajax异步提交表单.方法简单,jQuery插件等都能实现. 2.使用iframe.方法很原始,较麻烦. ...
- Linux命令-更新系统时间和硬件时间
查看系统时间和时区: date 查看系统时间date -R 查看时区 修改时区: tzselect 修改时区 或 cp /usr/share/zoneinfo/Asia/Shanghai /etc/l ...
- unity, animator stateMachine立即触发状态转换
例如按下键jump按钮人物执行跳起动作,同时动画状态由idle转换为jump,同时打开Game窗口和Animator窗口对比观察,发现人物跳起时动画状态并没有同步发生转换,而是有一定延迟,导致人物动画 ...
- Netty的ByteBuf
https://blog.csdn.net/thinking_fioa/article/details/80795673 netty的ByteBuf知识点