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 ...
随机推荐
- JS 运算、判断优化
1.二级制操作优于Math 如: //函数向下取整 console.log(Math.floor(8.9)); //二进制向下取整 console.log(8.9>>0); 2.慎用|| ...
- [转发]jQuery Validation范例
验证操作类formValidatorClass.js参照文件有: http://www.cnblogs.com/easyinsc/archive/2009/02/27/1407826.html htt ...
- 〖Linux〗不知谁写的,很实用的Linux命令
第一部分 . sudo 运行上一条命令 sudo !! . HTTP方式共享当前目录 python -m SimpleHTTPServer . vim保存一个root用户文件 :w !sudo tee ...
- EL函数库
一.EL函数库介绍 由于在JSP页面中显示数据时,经常需要对显示的字符串进行处理,SUN公司针对于一些常见处理定义了一套EL函数库供开发者使用. 这些EL函数在JSTL开发包中进行描述,因此在JSP页 ...
- servlet request
request.getRequestURI(); request.getRequestURL(); getQueryString();//返回查询信息 getRemoteAddr();//得到来访者地 ...
- jQuery Event.which 属性详解
jQuery Event.which 属性详解 which属性用于返回触发当前事件时按下的键盘按键或鼠标按钮. 对于键盘和鼠标事件,该属性用于确定你按下的是哪一个键盘按键或鼠标按钮. which属性对 ...
- 利用DM工具Weka进行数据挖掘(分类)的完整过程
利用DM工具Weka进行数据挖掘(分类)的完整过程:
- JAVA中的static方法
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何 ...
- nginx配置文件和一些用法
fastcgi配置: location ~ \.php$ { #fastcgi_pass unix:///tmp/php-cgi.sock; fastcgi_pass unix__tmp_php5_c ...
- C# BackgroundWorker的Bug???
废话不多说,上代码: public partial class Form1 : Form { BackgroundWorker _bgWorker; int count; public Form1() ...