Blog

远大前程, 从软件新手到行业大牛

成功的特征

  • 有乐趣的工作
  • 在公司和业界的影响力
  • 改善社会
  • 自由度 --- 随时做你想做的事
  • 名望
  • 旅行

来自Marissa Mayer(Google)的建议

找个感觉非常舒服的工作环境, 因为这将有助于你积极参与。 如果在一个地方, 无论关于软件架构 决策或公司战略都能畅所欲言、分享意见和想法, 你就会想在这样的地方工作。

为寄予你希望和鞭策你的人工作。要有优秀的导师来指导你的工作。

尝试与你可以找到的最聪明的人一起工作, 因为他们的挑战会使你勤于思考, 工作更努力。与真正 顶尖、聪明的工程师一起工作, 会从根本上改变你的思维方式和编程方式。

做一些还没有准备去做的事情。做一些自己害怕的事意味着你将向前迈进一步, 可以学到新东西, 你 将会成长。

简洁性与完整性

简洁性与完整性的斗争往往是简洁和优雅获得胜利。

来自Jon Bentley(编程珠玑)的建议

  • 追随天赐之福
  • 学习你可以学习的一切知识, 这些知识会在某一天某个地方以某种方式和软件关联上的
  • 尝试新事物, 不要放弃(要回归到)旧事物
  • 有最优秀的人一起工作
  • 找到一个导师, 从你敬仰的人身上学东西
  • 回报你的团队、公司、技术社区或左邻右舍
  • 练习写作和编码, 审查同事的工作, 也让同事审查你的工作
  • 对你的团队、公司、技术社区或左邻右舍好一点, 忠诚是双向的
  • 阅读好书 Elements of Style How to Solve It The Woolsey Papers

一些需要掌握的经验和技能

  • 至少学习四种不同的编程语言和四种不同的数据格式

    • C Java Python Go JavaScript
    • JPEG XML CSV YAML HTML
  • 开发至少能支持一千人并发访问的软件

    • Python
    • Node.js
    • Go
  • 开发可以拓展到超过1TB数据量的软件

    • Mongodb
    • Mysql Postgresql
    • redis
  • 参加10个以上程序员一起做的项目

  • 做既有代码的拓展工作, 这些代码至少是5年开发的, 而且无法从原始作者那里得到任何信息

  • 解决至少50个别人代码中的缺陷

  • 编写支持国际化语言输入的程序

  • 研究下列情形的性能特点

    • 无论是否存在CPU缓存未中的情况, 都能从内存中获取数据
    • 对比从磁盘连续块读取与随机 I/O 寻址
    • 对比大块数据与小块数据的 I/O
    • 三种流行的编程语言(Java C/C++ PHP)
  • 输入理解 HTTP/TCP/IP 等网络知识

  • 通过改进算法提高程序性能

职业发展所需的技术技能

基本功

  • 核心编程语言(Java C/C++ PHP)
  • 操作系统
  • CPU
  • 面向对象设计
  • GUI编程
  • 存储系统(RAID)
  • 固态存储系统(SSD)
  • SAN/NAS
  • 内存管理
  • 数据结构和算法
  • 数据库
  • XMLWeb编程

开发技能

  • 编码技能

    • 需求计划
    • 功能规格
    • 单元测试
    • 软件架构设计
    • 封装
    • 重用
    • 调试
    • 诊断
    • 可扩展性
    • 评审方法
    • 可用性设计
  • 质量保证

    • 测试
    • 代码和分支覆盖理论 git
    • Code Review
  • 战略规划

    • 需求收集
    • 市场分割
    • 资源规划
    • 规模规划和估计

领域专长

  • 网络
  • 数据库
  • 后端架构
  • 前端架构
  • 社交网络

工作中的小技巧

  • 了解自己
  • 感知别人
  • 散发积极的情绪
  • 保证从不表达愤怒
  • 识别他人的职业抱负
  • 经常感谢同事所做的贡献
  • 帮助他人
  • 一定向身边情商高的人学习
  • 善于交际

职业发展

  • 0~1年 初级程序员
  • 1~3年 中级程序员
  • 3~5年 高级程序员
  • 5~8年 架构师
  • 8~10年 高级或首席架构师 及从事部分管理工作
  • 10年以上 CTO

影响圈与关注圈

你能影响到的事情

  • 产品质量
  • 生产计划
  • 你被分配的工作
  • 你要发展的技能
  • 你的社会表现
  • 你工作的努力程度

你关心, 但很难有所控制的事情

  • 公司战略
  • 国家经济情况
  • 政局稳定
  • 国际贸易协议和关税
  • 合作者的人格缺陷
  • 天气

你是如何在技术趋势和创新上保持领先的? --- David Vaskevitch(微软)

我读很多的书, 与许多人交流, 并尝试各种新技术。

时间管理的三个方法

  • 优先级
  • 授权
  • 更加努力地工作

卓越之路

  • 著书立说

    • 写你知道的内容
    • 注重质量
    • 创作出自己愿意读的作品
    • 尽量与别人合作发表作品
    • 写作风格和策略不容忽视
    • 写作不是为了致富
  • 公开演讲

    • 了解听众
    • 根据听众调整演讲风格
    • 清晰和节奏是关键
    • 让听众参与进来
    • 适度使用手势
    • 微笑
    • 请记住, 主角是你, 而不是图表
    • 树立与听众无关的反面角色
  • 热爱软件艺术, 注重开发流程