StuQ(InfoQ的朋友)对我做了一次专访,下面是原文。

福利:送一本签名版《你好哇,程序员》,参与方式在文末。

我是安晓辉,网络常用id是foruok。

2002年从西安交通大学毕业,懵懵懂懂做了售后技术支持。2005年辞职,成功从技术支持工程师转为软件开发工程师,后来就一直在软件开发这条路上走着,经历过软件开发工程师、项目经理、部门经理、技术专家、初创公司技术合伙人、技术总监等职位,慢慢对程序员的职业生涯发展有深刻理解和体会。

基本上我觉得自己算是一枚斜杠青年吧:作为程序员,有十来年的开发经验;作为管理人员,也有七八年的管理经验;作为技术图书作者,出版过《Qt on Android核心编程》和《Qt Quick核心编程》;作为IT培训讲师,做在线课程,偶尔做企业内训;作为自媒体人,维护自己的订阅号“程序视界”;作为职业规划师,帮助人寻找职业方向;作为分答答主,60秒内回答各种问题;作为在行行家,老和人约到咖啡馆里闲聊。

第一个难点就是入门后怎么用代码实现产品。搭建开发环境,跑 Hello World,学习语法,各种小练习,这都不难。难的是怎么把学到的东西应用到第一个生产项目中去。就像你知道很多英语单词,依然听不懂老美说话不能和他聊天一样。这个阶段需要有过来人带一带,合理划分任务,给新人构造一个坡道,让他能慢慢进入角色。如果没人充任导师,那就要自己多琢磨了,会多花一些时间吧。

第二个容易遇到的瓶颈会出现在开发做了 3~5 年的时候,这个时候对一项技术基本上掌握比较熟练了,但问题也来了:用来用去觉得就那样,没太大长进了。是继续深钻技术 A,还是转移到技术 B,抑或不再搞技术,转向管理岗位?这时候如果选择继续做技术,就要耐得住寂寞,忍得住焦虑,持续挖掘自己的潜力,不断努力钻研,以求精专某项技术,形成自己的优势。

每个人都不太一样,很难说有一条道路是适合所有人的。从这点出发,每个人结合自己的情况,找到自己的道路,就显得非常重要。而一个人要想找到自己的路,发现自己的职业定位是至关重要的。

对程序员来讲,最常见的职业路线有三种:

技术路线

管理路线

转行

每个程序员都要做这道选择题:我到底是愿意走技术路线还是管理路线,抑或干个三几年后转行?

只有识别出这一点,才谈得上后来的发展方向。

如果走技术路线,又可以分为三类。第一类是在某个细分方向上深钻,形成顶端优势,成为这个方向上的专家;第二类是在某个技术方向上有比较深入的了解,然后在更多方向上有一般性理解,形成一个T型的技能架构,走架构师的路线;第三类呢,可能是更多人的现状,既成不了技术专家,也成不了架构师,就是沿着从初级、中级到高级这样的职级划分不断前进,利用自己的技术能力解决实际生活中的问题,在为他人解决问题的过程中实现自己的价值。

如果走管理路线,大概在从事开发工作3~5年之后,就一定要尝试理解管理角色,理解领导力,并逐渐形成自己的领导力,为转入管理岗位做准备。转入管理岗位后,要尽快从执行者的角色转换到管理者的角色上来。很多人会在这个阶段出现问题:抓着技术不放,放着下属不管,结果整个团队生产率低下。要理解并体会驱动人做事和自己做事这两点的不同,积极学习和尝试,从执行者转为管理者,一旦角色转换过来,后续的职业通道就比较明确了,就是沿着初级管理者、中级管理者、高级管理者这样的路线前进。

转行的就不说了……

未来5到10年,程序员会面临这些:

产业升级

很多旧的、产能过剩的产业会淘汰或紧缩(比如煤炭、钢铁、汽车等),而新的产业会加速发展(比如互联网、智慧医疗、机器人、在线教育、互联网金融等)。程序员需要考虑自己所在行业的状况,尽量远离衰退期的产业,靠近上升期或成熟期的行业。这样更利于自我价值的最大化实现。

变化升级

未来的变化会比我们想象的更快,职业的发展也会更快,技能的更新换代也会更快。程序员需要更高效的学习,需要在1到2年(甚至更短的时间)内就能培育自己新的核心竞争力,跟得上产业的变化。

需求升级

现在物质已经相当丰富了,人们购买产品不再仅仅是因为需要这个产品的功能,产品还有很多附加的东西,比如审美、价值观等,用户会成为产品缔造过程的一部分。程序员需要适应这种变化,更加接近用户,接近消费末端,这样才能与用户一起打造美妙的产品。

人对工作的需求也会发生变化,不再仅仅是赚钱养家糊口,自我实现的占比会越来越大。当自我实现成为一个程序员工作的主要需求时,他的职业选择就会发生比较大的变化,因此程序员要需要具备更多的生涯规划、职业规划的能力。

整体来说,在未来,程序员更需要基于产业链建立个人的核心竞争力。核心竞争力包括:

专业能力

高效学习

影响力

自知与自赏

整合与共创

我的初中数学老师对我说:“父母只要给你一个聪明的脑袋就够了”。这句话一直影响着我,让我坚信一切取决于自己。

大学时读《平凡的世界》,让我在失重与迷惘中体会到了竭尽全力去生活的力量。卡夫卡的《城堡》和《诉讼》,让我意识到这个世界的复杂与冷峻,进一步加深了一切取决于自己的信念。

当我从技术支持转行做开发时因为没有经验屡屡被拒,后来遇到我的老上司(谢胜落)把我接收了,我才有机会从事软件开发工作。他一开始的信任和欣赏改变了我后来的道路。

每天中午别人午休时我读书,每天上下班途中听书,每天早上五点多起床写文章,每天晚上10点多以后写文章,每个周末都会抽出至少4个小时读书和写作……

我希望自己是一个有用的人,希望我的存在对别人来讲有价值。写作和分享让我有归属感、价值感,我能在积极投入中感受到我存在的意义。所以我才能够持续投入时间和精力来分享。

虽然 C++ 是一门古老而复杂的语言,但它仍然在不断发展,生命力依然旺盛,有大量的行业和不计其数的应用正在源源不断地引入 C++ 语言,它的前景依然看好。你想 C++11 标准的普及,就给 C++ 注入了新的活力。

2015 年 TIOBE 的编程语言排行榜,C++ 位列第三。

各种数据表明,C++ 语言依然广受欢迎和热爱。这就是它的现状。

有机构通过分析与 C++ 语言相关的招聘信息得出的结果,使用 C++ 语言的前三个行业是:金融、银行和游戏。接下来是:Front Office、通信、电子、投行、市场、制造业、零售业。

如果你想成为开发工程师并喜欢上述行业,学习 C++ 依然是不错的选择。

我前阵子写了一篇 [C++学习指南],感兴趣的可以浏览下。

说手机软件吧(微信就不说了)。

我比较常用的:

有道云笔记(记录点滴想法,积攒写作素材)

樊登读书会(上下班路上听书)

奇妙清单(维护ToDo-List)

分答(我在分答上面回答职业发展、职场生活相关的各种问题,欢迎收听我)

在行(我是在行行家,欢迎约起来)

读书,写作,回答问题(可以到分答向我提问哈),与同好者聊天。

我在2015年5月9日创建了自己的订阅号“程序视界”(id是programmer\_sight),聚焦程序员的职场生活、职业选择、适应、发展、转型、技能Get,每周更新三篇原创文章,有料,有趣,有能量。


>> 福利,送书

这次送的书是《你好哇,程序员》,我的书,手写签名版。扫码关注我的订阅号“程序视界”,点击公众号底部的我可以菜单,选择查看历史消息,找到本文(最新一篇),即可参与活动。

程序员的成长与规划 | 送签名书啦 | StuQ专访foruok的更多相关文章

  1. 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...

  2. JobDeer 的《程序员必读的职业规划书》

    JobDeer 的<程序员必读的职业规划书> 关键字 持续性,人生规划,职业规划 概念 职业规划三部分: 职业定位 目标设定 通道设计 职业价值论: 能为公司做什么 同样的能力再不同公司价 ...

  3. Java程序员的成长之路

    阅读本文大概需要 8.2 分钟. tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用. 本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要, ...

  4. [No000048]程序员的成长过程中,有哪些阶段?

    有人在 Quora 提问,并补充: 有木有朋友能根据你们自身经历,清晰地划分各个阶段?比如:学习第一门编程语言.第一份工作.职业决策.理解 IT 公司的目标,等等. Quincy Larson 的回复 ...

  5. [刘阳Java]_Java程序员的成长路线_第3讲

    按照Java从业人员的职位晋升来说,Java程序成长路线大致如下 Java程序员 JavaEE初级软件工程师 JavaEE中级软件工程师 JavaEE高级软件工程师 Java架构师 按照职业发展方向, ...

  6. php程序员的成长之路

    第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护:能够做基本的简单系统的php开发:能够在PHP中型系统中支 ...

  7. PHP程序员的成长路线

    作为一名PHP程序员,从你入门到现在我相信也学了很多东西,但是有的PHP程序员却是还在第一阶段,那么作为初级PHP程序员我们应该如何弥补自己的不足往中级阶段或者高级阶段发展呢?下面小编就为大家梳理了一 ...

  8. 映射篇:request-String-Object-Map之间相互转化(程序员的成长之路---第5篇)

    为什么写这一篇 问题一:jdbc连接数据库返回的对象是ResultSet,如何把ResultSet对象中的值转换为我们自建的各种实体类? 我估计,80%的程序员会写jdbc数据库连接,但开发项目依然用 ...

  9. 浅谈iOS程序员的成长和进阶

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

随机推荐

  1. java List 排序

    List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String&g ...

  2. NoSQL生态系统——类似Bigtable列存储,或者Dynamo的key存储(kv存储如BDB,结构化存储如redis,文档存储如mongoDB)

    摘自:http://www.ituring.com.cn/article/4002# NoSQL系统的数据操作接口应该是非SQL类型的.但在NoSQL社区,NoSQL被赋予了更具有包容性的含义,其意为 ...

  3. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

  4. Java中的弱引用

    Strong references StringBuffer buffer = new StringBuffer(); 普通的对象创建都是这种类型,只要buffer还存在,对象就不会被GC回收.同时也 ...

  5. [SHTSC 2007] 善意的投票

    我就是来复习Dinic算法的,仅10天不写,我已经退化成写一遍+调试需要接近一个小时了,当然其中不乏在网上乱逛的时间… 赞成从S源点连一条单向边,反对向T汇点连一条单向边,朋友关系连双向边. 但是总感 ...

  6. Linux——【转】gcc编译与gdb调试简要步骤

    原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...

  7. OC基础--Property

    编译器指令: 用来告诉编译器要做什么 @property: @property是编译器的指令 告诉编译器在@interface中自动生成setter和getter的声明 @synthesize: @s ...

  8. is a 、like a、has a

    has a 代表的是对象和它的成员的从属关系.可以分为组合与聚合两种. 组合:表示两个对象是整体与部分的关系为强关系 聚合:表示两个对象是整体与部分的关系为弱关系 is a 它是类继承关系,只是覆盖了 ...

  9. redis清空缓存

    进入redis命令行 首先启动redis服务 redis-server /home/redis/redis_7901.conf redis-cli -p 7901(指定进入端口号为7901的redis ...

  10. 黑马程序员——C语言基础 函数

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)函数的定义 1> 任何一个C语言程序都是由一个或者多个程序段( ...