回顾 <程序员练级攻略>

大约四五年前,小编偶然在网上看到这篇 <程序员练级攻略> (首发于酷壳网), 文笔流畅,内容实在,十分受用。到今天,技术届的发展天翻地覆,再来回顾这篇“大文”,别有一番感慨。

观点一:用户界面

你也许会很奇怪为什么下面的东西很偏 Unix/Linux,这是因为我觉得 Windows 下的编程可能会在未来很没有前途,原因如下:

  • 现在的用户界面几乎被两个东西主宰了,1)Web,2)移动设备 iOS 或 Android. Windows 的图形界面不吃香了。
  • 越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows 的成本太高了。
  • 微软的东西变得太快了,很不持久,他们完全是在玩弄程序员。详情参见《Windows 编程革命史》

现在看来,Web 和移动的确已经形成统治。

Web 目前的用户体验几乎可以媲美 OS 客户端程序,加上 Web 的快速迭代性,优势明显。当下,传统的 Windows/Mac 下客户端程序几乎不在主流市场,当然 Windows Office 套件、外包项目或者某些游戏产品依然可以活的不错,但当年繁荣的生态圈肯定是不存在了。

移动则是目前、甚至未来很多年的新贵。移动端开发的崛起很大程度是由于资本市场对于移动产品的青睐,所以无论用户体验如何,技术成熟度如何,移动端的产品是必须要上线的。

对于对微软的吐槽,只能说现在的时代已经不需要围绕 Windows 的生态圈发展,一代新人换旧人。

观点二:启蒙入门的几点建议

  • 学习一门脚本语言,例如 Python/Ruby
  • 用熟一种程序员的编辑器(不是 IDE ) 和一些基本工具
  • 熟悉 Unix/Linux Shell 和常见的命令行
  • 学习 Web 基础(HTML/CSS/JS) + 服务器端技术 (LAMP)

以现在的观点,这些建议仍不过时。无论是脚本语言、Shell CLI、Editor,这些的确是工作中趁手的家伙,越早掌握越好。学这些知识,可能在找工作的时候不会有巨大帮助,但当你离开刷题的环境,真正需要做点什么,有足够的边边角角的积累非常重要。

对于 Web, HTML/CSS/JS 依然是基础,但是前段框架的快速迭代已经让它们变成相对 “底层“ 的部分;此外 LAMP 略有过气,无论是 Linux, Apache, Mysql, 在云计算的环境中都有非常好的产品,如果想实践的话,完全可以在 EC2 搭上一个 web server, 跑上 Mysql 甚至 RDS.

观点三:进阶加深的几点建议

  • C 语言和操作系统调用
  • 学习 Java
  • Web的安全与架构
  • 学习关系型数据库
  • 一些开发工具 (版本管理、单元测试之类)

C 语言和系统调用的部分,是值得懂得知识。系统上层框架设计的再好,依然是对于各种系统调用的封装和实现,一旦出现底层的问题需要调试,如果 Google / StackOverflow 上再找不到答案,小伙伴们还是得老老实实回来补这一部分知识。

安全与相关的架构现在越来越成为一个单独领域的知识,无论是 SQL 注入,JS 注入,XSS 攻击,还是什么花式翻新的攻击方式,一个全职的程序员想做到精通还是非常困难的,现今更流行的方式还是让专门的安全技术团队来处理这个领域的问题。

关系型数据库是一个非常基础的知识,尤其是 dev ops 和 full-stack engineer 这种概念的流行,普通程序员顺便做点 data analyst 的任务也是非常正常的,不会 SQL? 别闹了。

观点四:高级深入的几点建议:

  • C++ / Java 和面向对象
  • 加强系统了解
  • 系统架构

原文在面向对象、系统了解、系统架构这些方面做了很详细的论述。比如面向对象方面,内存布局,设计模式,设计 Web service 等;系统了解方面谈到的各种 IO 模型,理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)等,各种 IPC 进程序通信的方法,TCP 等网络协议的细节等;系统结构就更多,不一一展开。

现在这些知识仍然是基石般的存在。尤其是 OS、网络、分布式的原理和实现,可以说,是随着时间、随着技术日趋复杂的环境,越来越重要的。当下的各种高大上的技术,真的突破了原来 OS 的限制么?很难说。

但不能否认的是,目前流行的 Web、移动端产品,用户量、数据量都是前所未有的,应对这些新的变化需要更高性能、更灵活的框架,也要求更细致的分工。并不是所有从业者都需要在 Stack 这么低的位置去理解所有来龙去脉,但如果你想成为一个卓越的程序员,或者所谓的 full-stack engineer, 依然建议深入学习,深入实践。

尾声

自己刚入行的时候,朝九晚五,写写程序看看书,貌似尽在掌握,其实心中对未来的职业发展、个人发展是很迷茫的。对于技术,或者说技术掌握到什么阶段就够了,听同行们谈,自己也想,但总感到差点意思,不得要领。

最初看到 <程序员练级攻略>,读者回复中也是五花八门,有说这么多东西学到死也学不完的,有说程序员干不到30岁早点转管理才是王道的,有说看完了热血沸腾好好学习的,有说按这个来只能生产一些每方面都会点的垃圾程序员的,还有说要是两年前看到这篇文章就好了的…

回头再来看它,没当初那么激动,甚至觉得有那么一点点过时(都什么时代了,攻略里面连刷题 / Leetcode 都没提),很多阐述也有主观的地方,但这些并不妨碍它在那个日子,给一个还没那么入门的读者,一个看起来很大的世界。

原文发布于微信公众号 - 包子铺里聊IT(baozitraining)

原文发表时间:2016-03-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏phodal

2015节点——思考的一年:IT书单

照例(高速发展的一年)还是发一下今年的书单。不过,和去年的相比已经去除了非IT类书籍。 大体还是四个方向吧: 架构 前端 数据 工程实践 然后就是书单了。。 前...

19810
来自专栏CoXie带你学编程

Python学到什么程度才可以去找工作?掌握这4点足够了!

 大家在学习Python的时候,有人会问“Python要学到什么程度才能出去找工作”,对于在Python培训机构学习Python的同学来说这都不是问题,因为按照...

1.1K2
来自专栏BestSDK

QuickSDK发行定制化SDK:支持游客模式,快速切换账号

目前,QuickSDK针对国内手游发行推出了一套定制化SDK的解决方案,这是一套帮助手游开发商搭建专属官方SDK系统的解决方案,简单易用,技术门槛低,可以让开发...

1523
来自专栏资深Tester

做一个靠谱的软件测试工程师:进行有效地沟通

1913
来自专栏罗超频道

今天凌晨这个小动作,让微信完成复制中国互联网的最后一步

6月6日凌晨,苹果WWDC 2017年召开让许多人忽视了微信的一个重量级更新:微信公众账号图文消息正式允许插入第三方内容。微信内容运营者在编辑图文消息时,可以插...

3235
来自专栏北京马哥教育

不懂Python学习如何下手?看完本文您能知道60%

本文由马哥教育Python自动化实战班导师wayne撰写,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 你觉得Python真的好吗?或...

4525
来自专栏SEO

移动页面SEO优化最基本的3要素

2798
来自专栏ThoughtWorks

成都活动 : 第17届「BQMeetUp - Wiremock实战」报名进行中

Hi 好久不见成都的测试君们!在测试过程中,如果后端依赖曾让你崩溃万分、如果由于后端依赖不稳定的问题曾让你苦不堪言,那么我们新一期的线下测试技术交流活动非常适合...

1182
来自专栏灯塔大数据

探秘 | 写了一百万行代码是什么体验?

搞程序的累计写到一百万行代码到底是什么体验呢? 如果一百万是标量的话,来和大家研究一下这个数据,假设最好的情况,一天100行高质量代码,一年36500,100/...

4014
来自专栏极限编程

我在ThoughtWorks中的敏捷实践

E项目是一个在线的物资跟踪监控系统。由ThoughtWorks团队为客户提供的一套完善的软件交付服务。

1283

扫码关注云+社区

领取腾讯云代金券