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 ...
随机推荐
- Python 创建元组tuple
创建tupletuple是另一种有序的列表,中文翻译为“ 元组 ”.tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了.同样是表示班里同学的名称,用tuple表示如下:&g ...
- JSON格式校验
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- 深入理解C++的动态绑定和静态绑定
转自:http://blog.csdn.net/chgaowei/article/details/6427731 为了支持c++的多态性,才用了动态绑定和静态绑定.理解他们的区别有助于更好的理解多态性 ...
- /dev/null 和 /dev/zero
1.概论 -- 来自维基的解释 /dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一 ...
- Yii::记录日志到自定义文件
默认情况下,Yii::log($msg, $level, $category)会把日志记录到runtime/application.log文件中 日志格式如下: [时间] - [级别] - [类别] ...
- mysql优化三
1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一 ...
- 线程池c3p0和dbcp2的配置初始化实例
一.c3p0 public class ConnectionManager { public static ComboPooledDataSource dataSource; static { try ...
- 使用 SSHFS 挂载远程的 Linux 文件系统及目录
1. 安装 sudo apt-get install sshfs 2. 创建 SSHFS 挂载目录 sudo mkdir /mnt/cong 3.使用 SSHFS 挂载远程的文件系统 sudo ssh ...
- 大数据量下MySQL插入方法的性能比较
不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入.插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方 ...
- DB2的sql函数
转自:http://blog.chinaunix.net/uid-21162795-id-3587646.html 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在 ...