<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>星霜荏苒 on prometheus</title><link>https://new.halfrost.com/zh/tags/%E6%98%9F%E9%9C%9C%E8%8D%8F%E8%8B%92/</link><description>Recent content in 星霜荏苒 on prometheus</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><copyright>halfrost</copyright><lastBuildDate>Sun, 10 Feb 2019 00:02:00 +0000</lastBuildDate><atom:link href="https://new.halfrost.com/zh/tags/%E6%98%9F%E9%9C%9C%E8%8D%8F%E8%8B%92/index.xml" rel="self" type="application/rss+xml"/><item><title>【2018年终总结】如何看待软件开发 ？</title><link>https://new.halfrost.com/zh/halfrost_2018/</link><pubDate>Sun, 10 Feb 2019 00:02:00 +0000</pubDate><guid>https://new.halfrost.com/zh/halfrost_2018/</guid><description>题记 考虑到本系列文章有部分新的读者，所以关于本系列文章名字的起源就不再赘述了，见这里《&amp;ldquo;星霜荏苒&amp;quot;名字诞生记》
今年的总结主要想和读者聊聊如何看待软件开发，回答去年年终总结文末的问题。这个话题也比较大，每个开发人员也都有自己的答案。笔者根据自己刚刚从业几年的经验说说自己的看法，作为一个开发萌新，见解略短浅，可能会贻笑大方。欢迎大家指点。
软件开发是什么？ 软件开发是一个创造或者维护，应用，框架或者应用组件的过程中涉及到的需求分析，设计，编码实现，测试，bug 修复的过程。软件开发是编写代码和维护代码的过程。更广义的来说，软件开发是一种人类思维活动的体现。
软件开发与其说是搬砖，不如说是处理问题的能力，智商的体现。开发什么并不重要，重要的是思考问题的角度和快速解决问题的能力。使用过的前后端和客户端的编程语言之后，笔者感受到会使用语言并没有什么，能用什么语言解决多大的问题才是关键。前端后端都有相应的职级，相同的职级，不同的开发岗薪资差距不大。职级的高低更多的展现的是一个人思维活动能力强弱的体现。而且各个领域和方向，干到高级开发都不容易，每个领域都有各自的 roadmap，在一个领域深耕都需要静下心来 2-3 年。谁能一直领先并且一直维持在金字塔顶端，都是非常不容易的事情。
广义的来说，开发用什么语言仅仅是一个进入这个行业的首秀，之后往下走，会接触到很多其他语言，如何修炼思维能力才是一个软件开发技术人需要关注的东西。菜鸟和大神的差距在于有效时间的积累，经常有这种情况，菜鸟和大神同时遇到一个同一个问题，哪怕是陌生的问题，大神也可以很快的找到问题的本质。大神解决问题以后，说靠的是自己的“直觉”找到的突破口。但就是这种直觉就是宝贵的经验，这就是菜鸟们需要用时间积累的东西。这种“直觉”并不是玄学，是一种能力，经验丰富以后带来的快速解决问题的能力。
在笔者经历过三端的开发迭代以后，综合看客户端，前端，后端，三端开发流程和工作内容都有相同的地方。
开发流程三端都一致的。评审，排期，kickoff，站会，开发，确定终版，提测，灰度，上线发布。
各端都有 APM，都有监控性能的需求。不过架构实现方式不同。三端关注的点是不同的，客户端和前端更加关注客户为主，用户体验，页面打开速度等等。服务端关注点以服务为主，服务性能，可用性，高并发，低延迟，io 读写速度，多活，跨机房等等。这里可能会有读者说鄙视链的问题，笔者认为没有必要对其他端的鄙视。做纯服务端的开发人员对图形图形和像素就不太敏感，让他们来做一些前端动画，可能比较难。做纯前端的开发人员对后端的架构可能不太熟悉，让他们设计一些大型的高并发系统，可能比较难。(考虑到读者里面有全栈开发，对三端都非常了解，所以这里特意加了“纯”字)让做纯服务端开发的写前端，不一定写的来；让纯客户端开发写服务端，也不一定写的来。所以各端有各端的难处，可以相互学习，但是没必要鄙视。
综上，软件开发狭义的看，是实现需求到最终上线发布的过程，广义的看，是将人类的思维活动固化凝结成软件产品的过程。软件开发的过程中不断的训练人的思维和发现问题解决问题的能力。
好了，至此我关于这个问题的答案都述说完了。接下来的行文逻辑和去年不同，笔者打算写写今年发生的一些“大事”，以及分享一些所见所闻所想和一些憋着也没啥机会说只能放在总结里面的话，有些是周围朋友或者群里常常讨论的问题，我对这些问题也都有自己的看法，写成文字记录下来。我的答案可能全错，读者看完如果能有收获，这篇文章的目的也算达到了。
拥抱变化 过去一年被问的最多的就是“贵司被收购了，是不是要 XXX ？”，XXX 是周围的朋友猜想的很多事情，例如，合并，裁员，N+1，离职……等等。从 2018 年 1 月到 2 月底宣布被阿里收购，公司内部确实发生的非常多的事情，组织架构变化很大。被收购以后内部变化也非常大。当然这也都算是常规操作吧，毕竟收购以后有很多资源合并的流程。和笔者关系比较密切的一些人和一些事都发生了巨大的变化，也许因为年后正常人员流动吧，一个月内微信通讯录里同事的公司备注更换了好多。一起加班奋斗到深夜的亲密“战友”离我而去，晚上大半夜还在公交车站一起讨论问题的战友，第二天醒来却和你说要离开了。笔者是一个比较重感情的人，毕竟我们是一个 team，一起闯出来的“天下”，“出生入死”锻造出来的铁打的感情，说“分手”就“分手”了，心里确实不好受。当知道离开的原因以后只能一声叹息，心里也只能祝福他在新的公司里面大展宏图。那段时间身边的气氛实在压抑，于是笔者去了一趟日本，努力放下一切，一路沿着樱花开放的方向，泡着温泉。当然，越想忘记的事情反而越加记忆深刻。现在 2018 年底了，回过头来再看这段时光，对笔者影响只是朋友之间感情的影响，其他影响基本没有，组织架构的变化影响最大的是上层，工头那一层，对我们这些底层搬砖工和水泥工的影响不大，不老老实实搬砖，多想什么呢？
关于自身技术上的变更也比较多。年头的时候打算参与一个人工智能相关的项目。于是自己看了西瓜书和一些视频，入门了一下人工智能。大多数入门知识还比较好理解，都是高等数学、线性代数、概率论的知识。笔者考研期间把这些知识都好好复习过，遗忘的不多，捡起来也快。后来因为一些组织架构的变更，没能参与这个项目。2017 年比较火的技术是人工智能 AI 和区块链，笔者在年初的时候也在 kindle 上看了 4 本区块链入门的书，区块链底层技术都不算全新的技术，只是它的设计和理念比较新颖。看完几本区块链入门的书以后，对底层加密技术比较感兴趣，又去重新捡起了密码学。看了 3 本密码学相关的技术书籍。虽然笔者没有投身区块链行业，但是密码学的知识作为计算机的基础知识，能扩展的领域也非常多。现在人们对安全的要求越来越高，网络安全，信息安全，无一不和加密有关。到了 5 月份加入了新的项目组以后，定下了自己下半年的 KPI ，下半年的目标也比较一致和明确了。我参与了一个和网络相关的项目，性能是重中之重，网络耗时也是我优化的重点。HTTPS 如果慢，可能慢在哪里？为什么会慢？和加密的密钥套件选择有什么关系？TLS 1.3 为什么能使整个请求时间变短？QUIC 为什么在弱网环境下效果很好？蜂窝网络是如何选择基站的？蜂窝网络中信号回落是怎么一回事？这些问题我之前只有模模糊糊的答案，重度参与了这个项目，经过实践以后，以上问题都有非常深刻的答案了。经过几轮优化，阶段性的结果也得到了业务方的肯定。
2018 年一路学习和工作中的总结见博客博文 Archive 列表吧。回过头来看，这一年收获马马虎虎，在网络相关的收获很大。充满变化的一年，我拥抱了变化。
职业生涯规划和技术人的追求 关于职业生涯的问题，笔者曾经也迷茫过，也请教了不少大佬是如何规划自己职业生涯的。笔者现在不迷茫了。
要想梳理清属于自己的职业生涯规划，需要先想明白作为一个技术人的追求是什么？知道自己心所向，目标明确以后，再指定职业生涯规划就会非常简单了。
一个刚刚毕业的应届生，刚刚进入软件开发的行业，难免会有一些迷茫，不知道自己想要什么，未来的路怎么走。有一位大师曾经这样给我了建议，“毕业前 5 年(最长 5 年)，建议开发的各个方向都多多尝试尝试，找到自己真正感兴趣方向，一旦找到这个方向以后，埋下头来钻进去 3-5 年”。这个做法对迷茫的同学也许有效。对于刚刚毕业就打算进大公司的应届生，笔者给的建议是，第一技能一定要专精。第一技能是进大公司的敲门砖，第一技能如果不够专精，哪怕有 10 个附加技能也没用。进大公司工作只是第一步，之后的发展都看个人规划了，在做好自己本职工作的前提下，多余时间努力钻研感兴趣的方向吧。
关于感兴趣的定义：</description></item><item><title>【2017年终总结】程序员如何在技术浪潮的更迭中保持较高的成长速度 ？</title><link>https://new.halfrost.com/zh/halfrost_2017/</link><pubDate>Fri, 29 Dec 2017 23:11:00 +0000</pubDate><guid>https://new.halfrost.com/zh/halfrost_2017/</guid><description>题记 作为技术人，到年底都会进行一次自我反思或者总结，回过头来看看这一年自己成长了多少。笔者也不例外，同样打算从 2017 年开始记录自己的年终总结。虽然这种总结的文章不算纯技术文章，但是为了避免记流水账，所以想尽脑汁想以一种新颖的方式展现在读者面前。于是打算用一个大家比较关心的问题来贯穿全文。不出意外，以后每年的形式都会如此。一年一个宏观的问题。文章中的经历保证都是笔者百分之百亲生经历的，有成功的案例也有失败的案例，当然读者自身的情况也会与笔者不同，各位读者可以根据自身的情况来取长补短。文章中的一些观点仅代表笔者个人的一些看法，如有不妥，欢迎提出来一起讨论和批判。
笔者在网上的中文笔名是“一缕殇流化隐半边冰霜”，常常被人简称为“冰霜”、“霜菜”、“霜”。这一年一篇的年度文章既然这么特别，那么就给这个系列文章取一个特别的名字吧。在中国的文化中，四个字的成语读起来能更加有内涵，成语里面也必须带“霜”字和光阴意思，通过大量的搜寻以后，就定下了这个系列的标题的名字 —— 星霜荏苒。
【解释】星霜：星辰运转一年一次循环，每年秋季始降霜，因以批岁月。指岁月渐渐流逝。
【出处】唐·温庭筠《寄崔先生》：“星霜荏苒无音信，烟水微茫变姓名。”
好了，本系列的文章该说明的地方都说明完了，以后每年就不做此说明了。正文正式开始。
技术更迭是有加速度的 从 2010 年开始，被定义为移动互联网的元年，移动开发也是从这一年开始逐渐开始火爆的。笔者也是从毕业之后加入这个浪潮的。据说移动开发火爆之时，理发师通过几个月培训以后也可以拿到月薪1，2W的薪水，可见那个时候对移动人才的饥渴程度。但是到了 2014 年底开始，移动开发的入职要求回归理性，要求逐渐提高，到现在基本大公司社招也不再招高级以下的移动开发了。面试当然也比之前几年难度提高了不少。BAT 的面试可能会考察前沿技术，热修复和跨平台，底层技术，LLVM + Clang ，基础技术，WebKit 和 JSCore 。身边一部分 iOS 开发也逐渐开发转写 JavaScript 了。国内 iOS 开发者也可能会觉得大前端时代的到来，对自己技术的冲击。（当然国外的 iOS 开发者对这些并不感冒，国外的玩法还是原生开发。）继续回到国内的行情，当大前端的一些东西逐渐吞噬 iOS 开发者的开发领域的时候，也许还没有等大家熟悉或者精通前端各种框架的时候，这时 AI 又出现在大家视野中了。机器学习，深度学习一大堆的概念如潮水般涌来。
2012 年底到 2013 年初，有大批创业公司如雨后春笋般的出生。到了 2014 年底，也有大批的公司没有活过那年的冬天。到了今年 2017 年，依旧有大批的创业公司出生又倒下，如各个单车公司。在资本的市场里就是如此的残酷。
周围的一些同事也有出现焦虑的，说实话，我也焦虑过。风口技术恨不得一年一变。年初的区块链和三大前端框架可能还没有玩转，年底立即就被 AI 又碾压一波。一位前端大神这样和我解释到，“技术就需要时刻的跟着，前端如果几个月不跟新技术，看到新技术可能会陌生。如果守着老技术几年不变，呵呵，可能再了解新技术的时候，前端框架已经换了新天地了。”也许这个回答带有一些夸张成分，但是从侧面也能看出前端这几年的发展速度之快。
大家也可以回想一下近几年技术的更迭，也许也能感受到，技术更迭是有加速度的。
焦虑的起源？ 我还是以 iOS 开发者来举例。常常会在 iOS 开发者群里出现的 3 个图。
一个是 iOS 开发没人要了和 iOS 开发又有人要了。这 2 幅图常常被作为一个梗出现在各个讨论群中。原因为何？因为 iOS 开发的一部分需求被前端开发者承担了。国内很多小公司招聘要求上也直接写的要求会 JS 、RN、Weex 等技术。直接导致不会 JS 的 iOS 开发就没人要了。每每苹果对跨平台或者热修复进行“封杀”或者任何举措的时候，原生开发都会刷一波 iOS 又有人要了的表情。前端也许同样会有焦虑，焦虑也许来自于对三大框架的掌握程度，如果只精通一个框架，找工作遇到了精通三大框架的人也会心虚。</description></item></channel></rss>