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 ...
随机推荐
- 有关WINDOWS XP登录密码的几种方法
网上关于破解WINDOWS XP登录密码的几种方法很多,但许多根本不行.我现在总结自己试过几种,这几种方法其实均比较菜的,但可行的.WINDOWS XP登录是由SAM 文件管理的,总体来说“山姆大叔” ...
- 参数依赖查找(ADL,Argument-dependent lookup)
参数依赖查找(Argument-dependent lookup),又称 ADL 或 Koenig 查找,是一组于函数调用表达式查找非限定函数名的规则,包含对重载运算符的隐式函数调用.在通常非限定名称 ...
- Servlet 过滤器 Filter
过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法: 下面是对所有编码过滤器 package filter ...
- datagrid("getSelections")只获取一行
页面加载方法如下 function loadSfXtjsList(sfXtjsListId, url, onClickFun) { $("#eastPanel").panel({ ...
- Sphinx全文检索引擎测试
数据表 1.documents CREATE TABLE `documents` ( `id` int(13) NOT NULL auto_increment, `group_id` int(11) ...
- JavaScript常用語句
1.document.write(""); 输出语句2.JS中的注释为//3.传统的HTML文档顺序是: document->html->(head,body)4 ...
- Linux命令-文件处理命令:head
从头开始往下查看文件,区别于从末尾往上查看文件命令tail head -n /etc/services 查看etc目录下面的services文件的前10行内容 head /etc/services 查 ...
- 线程池c3p0和dbcp2的配置初始化实例
一.c3p0 public class ConnectionManager { public static ComboPooledDataSource dataSource; static { try ...
- centos 7 搭建git远程仓储 免密登录
第一步.安装git服务 yum install git 第二步.创建git用户 adduser git 第三步开启公钥验证 vi /etc/ssh/sshd_config 讲文件中的 #PubkeyA ...
- spine 所有动画的第一帧必须把所有能K的都K上
spine 所有动画的第一帧必须把所有能K的都K上.否则在快速切换动画时会出问题.