不知不觉已是 6 月中旬了,掐指一算 2017 年已经过去了一半。过去的半年,也许你刚跳槽进入一家新公司,在一个全新的环境里学习和成长;也许你还是和去年一样,仍然奋斗在各种各样的项目和需求里,每天和产品、设计、运营打交道;也许你还在无休止的加班,每天忙忙碌碌却没有方向;也许你正在犹豫是否辞职,彷徨着不知道下一步要怎么走。
不管怎样,现在就可以让自己停下来,找一个清新的早餐,或者在某个安静的夜晚,重新审视自己,对工作、对生活做一个全面的复盘,重新规划,适时调整,更好的前行。
生于忧患
相信小伙伴们都还记得前不久网传华为辞退部分 34 岁以上员工的事。很多人不由感慨程序员也是青春饭,并开始思虑自己的未来,犹豫是不是要转行,担心自己 34 岁以后无处可去。
互联网行业工作强度很大,而中国的互联网从业者更忙。程序员更是战场中的排头兵,身体健康的透支导致很难长期抗战。当你意识到自己跟不上节奏的时候,不管是出于对身体状况的担忧,还是对未来潜在威胁的恐惧,又怎会不感到焦虑呢?
“谁的青春不迷茫”,但其实迷茫不仅限于青春期,人生的每一个阶段都可能迷茫。
回想自己这几年的迷茫,刚毕业那会迷茫要不要进入IT行业,要。工作两三年迷茫要不要离开家乡去互联网公司?去。来北京后,要不要跟着公司搞互联网金融,搞了。去年朋友说创业去不去,思索良久,么去;那么现在呢,要不要继续在北京吸霾,还是没有想好,要不要进入一个新的领域去拼搏,也是没想好?
如果有一天,我们终将离开现在拼搏的城市,那我们将何去何从?
我认为如果让我说出我心中中国互联网乃至移动互联网发展最好的十个城市排名,我会这么排:北京,深圳,上海,杭州,广州,成都,武汉,南京,西安,厦门。
如果除了北上广深,这四个一线城市外,让我推荐程序员最好的归宿和去的地方,首选应该是杭州,其次是成都,再次是武汉,然后是厦门。
PS:从关注 SF 微信公众号的小伙伴们所在城市的分布来看,排名前十的分别是:北京、上海、杭州、武汉、深圳、广州、南京、成都、西安、厦门。
所谓程序员
要想不被淘汰,每个人都需要有自己的核心竞争力,有自己的存在的价值。而在发展变化如此之快的互联网行业,风口浪尖上的程序员们尤甚。
我观察圈子里很多成功和不成功的技术人,提出一个观点,那就是个人的核心竞争力是他独特的个性知识经验组合。这个行业里拥挤着上百万聪明人,彼此之间真正的不同在哪里?不在于你学的是什么技术,学得多深,IQ多少,而在于你身上有别人没有的独特的个性、背景、知识和经验的组合。如果这种组合,1,绝无仅有;2,在实践中有价值,3,具有可持续发展性,那你就具备核心竞争力。
定位能够产生目标,目标会让你聚焦在一个方向上,远离迷茫。所以,只要你根据自身的实际情况,找好定位,就拥有了摆脱迷茫的银弹。
博客
和书籍一样,博客是知识最好的沉淀。
最后奉劝大家,如果你还没有写博客,那从现在开始开通个博客,走出第一步,如果你已经开始写博客了,不要去奢望靠写博客去赚钱,安心的写博客提升自己能力,总结经验,把它看成一种投资自己的手段,别把目标搞错了,也许有一天你会突然发现,原来你已经走了这么远,而且还有意外收获!
勿忘初心,才能方得始终!
我的每一篇文章,通常需要2小时~6小时的写作时间。有时候写完以后,觉得特别累,都不想干别的事情了。不过,我还是觉得这是值得的。回过头看,我幸亏把时间花在写作博客上面,否则那些时间就白白过去了,没有留下任何印记。
在2016年我主要做了两件事情,即编程与写作。在编程方面我主要把重点放在了JavaScript、Vue、React的学习与探究上,而在写作方面我主要发表了20余篇关于前端的原创技术文章。
古人云:学而不思则罔,思而不学则殆。在我看来编程与写作其实并不冲突,编程是一个学习与探究的过程,而写作则是一个分享与记录的过程,只有举一反三,方能为师矣。
书山有路
互联网的发达几乎可以让我们在网上找到任何我们想要的信息,我们也越来越习惯碎片化的阅读和学习。但当我们想要全面、深入地去了解某一样技术、某一门语言的时候,仅有网上的碎片化信息是远远不够的。
“优秀的编程书是没有时间限制的。它们会超越语言的限制,IDE 的限制和平台的限制。它们不是解释 how,而是 why。”
为什么中国的程序员总是在不断学习新的开发工具、钻研程序代码,而不逐步提升自己的视野、思维和经验?
本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读。旨在成为最好最全面的程序员必读书单。
良好的程序设计能力:
掌握常用的数据结构和算法(例如链表,栈,堆,队列,排序和散列);
理解计算机科学的核心概念(例如计算机系统结构、操作系统、编译原理和计算机网络);
熟悉至少两门以上编程语言(例如C++,Java,C#,和Python);
专业的软件开发素养:
具备良好的编程实践,能够编写可测试(Testable),可扩展(Extensible),可维护(Maintainable)的代码;
把握客户需求,按时交付客户所需要的软件产品;
理解现代软件开发过程中的核心概念(例如面向对象程序设计,测试驱动开发,持续集成,和持续交付等等)。
整理分为四大块:编程语言(能写代码)->程序设计(能写好代码)->计算机底层(能做别人做不到)->计算机理论(能做别人想不到)
不过以我的经历,实际过程中会螺旋上升,编程语言->程序设计->计算机底层->计算机理论->编程语言->…,因为一下啃完一整块是不现实的。
简历
其实很多技术人员有很强的工程能力,但是不屑于上述的一些活动,个人觉得这是一个误区,只有有效和这个社会融合,才能获取更多有用的知识和体验,而具备这些能力,才能更好的为公司服务。
最后,如同写博客一样,将你写好的简历不断的修改和完善,直到自己满意,然后将简历投递给心仪的公司吧。
简历就是简单的介绍一下你自己有多 NB。所以,你需要介绍以下的内容:
我是谁。
我会什么。
做过什么。
结果如何。
然后把这些内容放到一个模子里,就可以了。
作为一个潜入 IT 圈五年之久、看过数万份简历的 HR,在这个问题上还是有点发言权的。HR 在筛选简历时主要从公司需求出发,重点不一,不过还是有很多“通用”的套路,为了在 30 秒内判断出这份简历是否值得跟进,我认为程序员写简历的正确姿势是这样的:
相信程序员对 Github 都不会陌生,你的 Github 也是自己的简历,在 Github 的贡献越大,对求职的帮助就越大,也能够慢慢增加自己的影响力。
面试
面试过程中,应该注意哪些问题?
面试中遇到冷场怎么化解?
如何给面试官留下好印象?
对于许多年轻的计算机或 IT 相关专业毕业生,在没有实际项目开发经验的情况下找到第一份全职工作可能是你在职业生涯中遇到的最大的挑战。
我整理这篇文章的重点不在于资源的整理,上面 4 点:面试前的准备——面试题库——大公司面试总结——面试相关的网站和书籍,我是按照先后顺序整理的。
想要去应聘参加面试,首先当然得准备好简历以及自检技能咯;
然后再看看你所面试领域的一些题库,看看自己是否能够回答上来;
再者去针对性看看你要应聘的公司,看看以往面试者是怎样的一个流程以及问了一些什么问题之类的;
最后,如果以上几点都做了之后还觉得美准备好,那么可以找一些网站和书籍看看;
英语这个硬伤
如今英语对程序员而言,已经不仅仅是看懂国外的开发文档和技术博客这么简单了。无数的中国开发者走出国门,进入到各大世界顶级公司从事 IT 开发工作,参加各大开发者会议,和无数国外程序员交流合作。英语对于程序员来说,毫无疑问已经越来越重要了。
别让英语成为自己进步的硬伤。
在此之前,我不并不知道原来有那么多的同学在学习英语的道路上是一路走到黑的。 他们甚至从未想过:英语作为一门语言,学习起来应该是一件比较自然而然的事情,就像我们自然而然地学会汉语那样。
在这份指南里,我会尽可能地综合我主观的看法与一定的科学依据,为大家提供一份详尽的英语进阶指南,真心希望本指南能给你带来一点小小的帮助。
作为程序员,工作中不得不接触英语。如果你对一些新的技术或开源项目感兴趣,英语更是必不可少的。如果你不想花太多时间、精力和金钱去上学习班,又希望可以在日常生活和工作中去提高英语,那么希望这篇文章可以给你带来些帮助。
对于咱们这些高端大气、时刻需要和国际接轨的码农,英语的重要性自然是毋庸置疑的。尤其是那些胸怀大志的潜在大牛们,想在码农行业闯出一片天地,秒杀身边的小弟们,熟练掌握英语更是实现其目标最关键的因素之一。否则,试想在你捧着某出版社刚刚翻译出来的《JSP 高效编程》苦苦学习JSP模板的时候,你旁边的小弟却是拿着原版的《AngularJS in Action》学习开发单页面应用,虽然你们都同样认真地学习了一个月,可做出来东西的效果能一样吗?
软技能
程序员走江湖必备。
这篇文章从以下几个方面进行了整理和推荐,对新手小白自学找资料很实用:
学新技术:想学新技术去哪里找教程?
找项目:想要开发项目,去哪里找点子?找教程?
找书籍:哪里可以找到免费的书籍?
交流探讨:遇到问题哪里可以交流?
其他:一些程序员相关
GitHub 其中一个最重要的作用就是发现全世界最优秀的开源项目,你没事的时候刷刷微博、知乎,而人家没事的时候刷刷 GitHub ,看看最近有哪些流行的项目,久而久之,这差距就越来越大。那么如何发现优秀的开源项目呢?
通过这些项目你可以大幅度减少不必要的开发而将精力放在更重要的地方。
16个相对来说比较小众,但是对程序员来说却有趣或者有用的网站
21个国外受欢迎的学习编程的网站:总有一个理由会让你爱上它们
21个与学习编程有关的网站。 每个网站,我会作一些简单的介绍。
中国程序员容易发音错误的单词 (以美式发音为准, 非音标为字母发音)
本文定位于为使用GIT标准分支开发流程的开发团队新人提供一份参考指南,其中的内容都是我们公司在研发团队初创时所遵循的一些开发流程标准,经过近一年的实践,虽说还有很多不足,但是随着团队经验的丰富和人员的扩张,我会适时地更新本文,分享我们在使用GIT开发流程中遇到的问题和解决方案。
2015年底,在为华为做咨询顾问一年多之后,我决定接受新的挑战,加入华为公司,成为这个拥有着最大的开发者群体的世界级公司的一员。 如何有效地在大公司内进行过知识的传递也是一个课题,我决定将这本书的书稿开源,惠及更多的开发者。
基本口诀
先靠自己、再靠别人
排除原因、礼貌问答
善于总结、手留余香
我实际上是那种总是会问出愚蠢问题或“不好”问题的大信徒。我一直在问人们一些愚蠢并且完全可以通过谷歌搜索或搜索代码库解决的问题。大多数时候我都不愿意自己去搜索解决,但有的时候我又会无论如何都自己去搞定,而且也不会认为这如同世界末日一样可怕。
所以本文中列举的各个策略不是关于“在提问之前你必须要做的所有事情”,而是“一些可以帮助提出更好的问题并得到我想要的答案的要点!”。
作为一枚程序员,我们天生就是来解决问题的。在你不知道你的问题之前,我帮不了你,Google 也不能帮你解决问题。
积跬步,致千里
大神不是一天练成的。
成熟期是整个职业生涯中最关键的时期,快的可能一两年就能走过去;慢的,可能整个职业生涯都定格在成熟期。
从上面分析中可以看到,这些问题最终都和“心”相关。要想高速成长,就得克服掉温水中的舒适。要想提高自信,还得思考成就感获取渠道这么虚头巴脑的问题。所以要想迈过去这个坎儿,必须有一颗非常强大的内心。
每个程序员、或者说每个工作者都应该有自己的职业规划,如果看到这里的朋友没有自己的职业规划,希望你可以思考一下自己的将来。
成为技术大牛梦想固然很美好,但是要付出很多,不管是Do more还是Do better还是Do exercise,都需要大量花费时间和精力,这个过程中可能很苦逼,也可能很枯燥。
这里我想特别强调一下:前面所讲的都是一些方法论的东西。但真正起决定作用的,其实还是我们对技术的热情和兴趣!
只有保持足够的兴趣才能在技术上走得更远。如果做技术无法体会快乐,完全是为了养家糊口而被迫走上这条路,相信很难在漫长的职业生涯中有足够的动力持续成长。世界很精彩,不喜欢做技术的人不一定非要做技术,如果最终一定要转行,越早就越能在新的行业中掌握主动权。
心经
目前能想到的一些学习的技巧和陷阱,大致都列了出来。都是我个人的一些学习的经验,如果对你有帮助,想必也是极好的,如果你觉得我写的有不合理的地方也欢迎指出。坚持着去实施提及的一些方法,一定会对你的生活和职业带来改变。
有的人想成为大牛,却不曾为此努力。有的人辛苦耕耘,却收获寥寥。很多时候,你跟成功的差距并不是能力,也不是运气,或许只是正确的方法?这是一篇不鸡汤的成功学指南,如果你相信且愿意坚持尝试,未必帮不到你!
关于我的一些详细信息:我现年32岁,有10年以上扎实的工作经验。直到最近几年我才对自己所做的工作充满信心。即使是现在,我也在不断质疑自己。问题在于,这种质疑并不会消失,所以你要做的就是无视它,不断的解决问题,不断的积累经验。
首先我要说明的是以下提到的只是一些帮你提升技能的小贴士。最终你还是需要找到一条最适合你自己的路。这些只是我发现对我有帮助的点。
我想说的是,本篇里面分享的一些道理和方法,都是通俗易懂的,就和常听到的例如101%和99%的365次方的故事、1万小时的道理等等一样,但真正去认真思考并实践的屈指可数,也许,坚持才是程序员最大的修养,和各位共勉!
出任 CTO
程序员的未来在哪里?当然是“出任CTO,迎娶白富美,走上人生巅峰!”,想想是不是有点小激动?
以前的我,只会一味的阅读技术书籍,沉迷于技术。
以前的我,不喜欢和不熟悉的人聊天,甚至有些偏内向。
以前的我,只会用最快的速度完成安排下来的任务。
以前的我,只关注自我成长。
现在的我,阅读的书籍类型有管理,心理,商业,人文。
现在的我,喜欢和人聊天,倾听,讨论,分享自己的想法。
现在的我,在接到任务之前更多的是思考是否合理,有没有更好的解决方案。
现在的我,关注团队每个人的成长。
在工作 2 年左右,我发现自己在技术深度上很难有专业造诣的时候,我开始把眼光放的更长远,我不再把自己仅仅定位成一个前端工程师,而是会开始关心互联网的发展趋势与整体格局,关心产品从 0 到 1 诞生过程中的盈利模式,关心在产品迭代中工程师与运营多方参与的角度和结合的效率,关心工作流程和团队文化,这一切其实都是我潜意识不自觉的关注,是一种不安分,过后很久才逐渐意识到自己早就在默默铺路,有时候一个选择早就做了,只是你还未意识到。
从 Google 回来在 Coding 做 CTO,对我来说也是人生的一个大改变。最近我在知乎看到一个好问题,“从大公司离开到小公司当 CTO 是怎样的体验”,我摘抄了一个好答案:“ 顶着 CTO 的名号,招聘,培训,鼓励程序猿,拉网线,查机房,装系统这都是 CTO 要做的事;讨论方案,推方案,定方案,确定进度,拖延进度,安抚程序猿,挨老板骂,安抚老板,这也是 CTO 的职务。” 不包括 Coding,而我的工作还包括 Coding,很伤心。(笑)
致程序媛
虽然程序媛们没有程序员鼓励师,但我们自己就是自己的鼓励师。程序媛们正在创造越来越多的可能。PPS:SF 微信公众号的关注者中有 20% 是程序媛~加油吧程序媛们,请为自己自豪!
在男性占据技术行业统治地位的今天,人们恐怕难以想象,历史上首位电脑程序员竟然是一名女性!在1842年,人称“数字女王”的阿达-奥古斯塔(Ada Lovelace)编写了历史上首款电脑程序。
我觉得就是社会上的social stereotype,这种固有偏见会打消一些姑娘想要成为程序员的想法。她们会听到很多声音:你不适合,或者你做不好,或者说这个很累,坚持不下来,这会导致一件事情在还没开始的时候,就被否定掉了。
我是那种“反着来”的类型,越是说我不行,我就越要证明自己可以。
最后
小时候,我们以为能够改变世界的人只有极少数的科学家。然而今天,互联网正在以几何级的速度改变着世界,改变着我们的生活。“程序员是世界上少有的能改变世界的人”,而每天坐在电脑前敲代码的我们就是这其中的一员。
“这是最好的时代,也是最坏的时代”。我们生于这个世界,也终将改变这个世界。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。