关于程序员发展:高级程序员和新手小白程序员区别你是那个等级看解决bug速度

IT入门深似海 ,程序员行业,我感觉是最难做的。加不完的班,熬不完的夜。 和产品经理,扯不清,理还乱的宿命关系始终都在 新需要-做我的项目-解决问题-解决bug-新需要 如同始终都是这么一个循环。(哈哈哈)我感觉一个好的程序员,判断基本取决于,遇到生产问题和bug,解决的问题的思路,和解决问题工夫效率。 大家平时都是怎么解决bug和问题的。 入门程序员遇到了问题如。服务器启动不了端口8080曾经被占用。会第一工夫去查找百度。而后依照百度给的各种解决方案去实操。最终在肯定工夫内完满解决bug。 哈哈不过我不倡议应用百度搜寻了。广告太多,搜寻进去内容品质太差了。有时候我想去搜寻一下官网。搜寻了后果筛选了几页,才筛选到官网。 懂得都懂不过多,解释 高级程序员开始会间接应用 谷歌搜寻,必应搜寻。 我感觉谷歌在搜寻内容和品质,的确是吊打某度了。你给他垂直的内容。搜寻进去的内容第一页首页首条,可能就是你要的官网。 或者说是你要的答案,而且广告内垃圾内容简直很少看到。 搜寻进去内容品质也挺高不一样。 这里拜访谷歌须要一些技巧, 大家能够通过这个去拜访。 点击进入 当然必应搜寻。也能够用至多比某度很多。 中级程序员应用更垂直IT社区内容,进行问题站内搜索。比方 博客园,CSDN掘金 等IT博客内容社区网站。 置信大家,在这个时候,本人也会写技术博客,或者记录文章吧,这些IT社区,是不错抉择,能够看到很多大牛,或者好的技术文章。 我感觉写博客挺重要的,不论是本人想写,还是处于记录。养成写作是一个好习惯。 是写文章时候能够晋升本人学习能力和写作能力更是坚固本人所学习的常识内容。也是对本人学习的一个记录,前面遇到遗记了或者同样问题能够查看也是对本人业余时间养成一个喜好。高级程序员开始接触开源社区,技术论坛等,通过GitHubisssues 或者 stack overflow进行问题解决,和发问。 这类效率往往是最快的,中转的, 软件开发工程师间接开始浏览源码 遇到问题第一工夫,去看程序报错我信息 通过断点和本地调试本人先尝试解决。能够通过间接浏览官网文档来解决问题。 当然下面所有解决问题的伎俩,只是你集体能力循序渐进过程。随着你入行年限,和工作年限,你会接触越多,遇到问题,也不会和开始一样慌乱,毫无脉络。 解决问题工夫效率,也越来越高,会开始重视代码品质,刻意与防止一些低级bug产生。 对本人会有更高的要求。 我来讲讲我目前遇到问题的解决思路大略流程。 自行本地断点调试。查看具体错误信息代码剖析具体业务逻辑问题场景。个别能解决70%问题问AI智能ChatGPT ,而后通过谷歌搜索引擎,IT技术论坛 去查问相似问题。通过官网文档,或者github等去解决,或者间接提isssues这里我提到了ChatGPT 我感觉ChatGPT 至多目前能根本取代我用搜索引擎工夫。 效率比搜索引擎要高很多。 如果不晓得如何应用的,这里我提供了收费的在线应用 点击进入 往期精彩回顾IT入门深似海,入门到放弃你学废了嘛 程序员的十级孤单,你领会过几级 程序员IT行业,在行眼里高支出人群,内行人里的卷王

June 3, 2023 · 1 min · jiezi

关于程序员发展:程序员如何开展自己的副业

本文首发自「慕课网」,想理解更多IT干货内容,程序员圈内热闻,欢送关注"慕课网"! 原作者:Brain|慕课网讲师 说到副业,大多数的人十分功利心,感觉“副业”就是搞钱。谈“副业”就要聊有什么渠道、通过什么形式能赚钱,而且越“快”越好,越多越好。说点切实的,干副业干得好干成主业的人,都是十分自律而又方向十分明确的人,建立正确的价值观,对于走好副业路线十分重要。 而且大家要明确这样一个情理:做副业并不是单纯的搞钱,做副业其实是一个长期积攒的过程,赚钱只是瓜熟蒂落的事。把节奏加快下来,边做边思考,做长期的布局才是正确的做法。做得久远的副业,是对一个人综合能力的考量,比方:经营能力、学习能力、反思能力、新事物的承受能力…等。尽早建立正确的认知,通过副业全面晋升本人,能力让本人力上加力,开辟更顺利的职业倒退路线。 咱们先来看看副业到底能带来哪些切实的益处: 目前互联网行业比拟支流的几大副业: 从事副业所带来的间接能力上的晋升: 那么程序员要发展本人的副业,该如何进行冲破呢? 小慕用慕课网明星讲师Brain的一篇文章,借花献佛,心愿能给大家一点启发。 Brian:大厂背景,全栈开发出身,多畛域实操与我的项目教训慕课网明星讲师,9年副业+守业多元化的变现实战经验,百万级+内容创造者。创建了本人独立工作室,酷爱分享技术副业这场修行,要从两个方向来学习:工夫治理&认知冲破。 工夫治理 这尽管是一个陈词滥调的话题,然而做好的人很少。 那起因是什么呢?次要起因是:口头力与习惯差,人的惰性太强,感性会控制不了本人的身材。 怎么进步本人的口头力 结团口头,相互激励与监督花钱克服本人,找人监督;自我束缚,辞别手机,应用番茄学习法(20+20或者40+20这样灵便组合);自我束缚 + 冥想 + 健身:前面的这两者是最罕用的晋升专一力的办法,前期有机会给大家分享。 进步了口头力接下来就是学习工夫的治理了,依照打算行事: 了解工夫是有长短的 这一点很好了解,每天的工作时长与劳动时长是固定的,能力保障睡眠的同时赚到钱,身材是所有流动的成本。所以,要尽可能的缩小熬夜,缩小透支本人的身材,缩小那种单纯应用工夫换金钱的工作内容的投入。 明确这一点,就晓得为什么打工人赚钱不能致富了。因为打工人的服务对象是无限的,一个人不可能同时打几份工。服务的对象少了,也就赚的钱少了~ 平时,也不要去浪费时间,每个人的毕生的长短也是有一个大略的长度的,所以要珍惜当初,珍惜眼前人,活在当下。 工夫能够复制 听工夫能复制,是不是十分的荒诞?这里的工夫的复制,次要是指利用古代的科学技术,把文字、声音、图片、视频留存下来了,通过复制这些内容,让更多的人受害。随时互联网技术的倒退,现在人们生存消遣的形式变成了看手机,手机上大多数内容以短视频为主。接入视频,数字类型的商品的拷贝,老本简直为零。所以,做好工夫的复制,能够让更多的人接触到更优良的内容。比方:当老师从讲台前走到镜头前,他的声音与画面,他的常识就会被更多人承受到。而一个好的老师,会影响到一个同学的毕生。 同理,如果利用工夫能够复制的个性,咱们可能把本人当初从事的很多事件搬到网上,通过文字、声音、图片、视频的形式让更多的人看到用到,从而也能够从中谋取本人的利益。 购买他人的工夫 购买工夫其实就是雇人做事,让本人的精力放在最外围的事件上,最有价值的事件上,这样能力事倍功半。所有赚钱的事件,要上规模能力有几何效应。很多人赚着钱,怕来人把本人的生意给抢走了,或者不太置信雇的人,所以事事亲为,这样就回到了“工夫有长短”的概念,本人的服务对象就无限,规模就会有下限。 找准本人的赛道,看看将来几年可能的倒退态势,找更多的人退出到本人的团队,从0到1,其实并没有大家想像的那么难,守业先从注册公司开始。有可能很多小伙伴曾经守业了,发现招人十分的难。是的,“千金难买寸时光”,当初的HR招人十分的难,更何况是找到一个适合的人,这一点上须要投入的精力会占公司的2-30%,后期甚至更多。 工夫的多元化收益 你会不会坐地铁的时候听歌看视频?你会不会在上厕所的时候刷小视频?你会不会在吃饭的时候刷微博看知乎掘金?…这些都是工夫的多元化收益,尽管有的听起来看起来不是那么的“衰弱”(吃饭的时候应该认真一些)。 多元化收益是咱们通过把同一份工夫进行分拆让多个事件可能并行的一种手法,说人话就是:一心二用。哇,你这有点反人类啊?老师们从小就教诲咱们不能一心二用,为什么你要举荐大家一心二用呢?因为,很多平时咱们的碎片工夫其实是能够利用起来的,比方:上厕所发发闲鱼单、公交地铁上10站路看看本人感兴趣的视频(学习)、睡觉或者跑步的时候能够听听英语音乐学英语等。 认知冲破 卖工夫 副业赚点小钱,每个人都能够,只是你没有能源、没有入手,空有一个点子。其实,有很多低门槛的副业,像做骑手、点赞、砍单等来钱真的很快,只是有的人会感觉赚这点钱很不屑。这类特点是做不大,造成不了规模,支出不稳固。 这类的副业,最次要的特点是这个世界上最通用,且最容易卖的一种资源——工夫。每个人的工夫是无限的,所以决定你的下限。 那独立的集体就赚不到大钱了吗?当然有,比方一些行业外面的顶级智囊,享有资源与超强整合资源能力的人们,他们的服务对象可能只有极少数的人,然而这些极少数的人却给他们提供了无穷的财产,因为,他们提供的服务是极优的,给这些富人们大大地节约了工夫。 卖能力 比单纯的卖工夫,再进一个维度,就是把卖工夫变成卖能力。 打磨本人的外围竞争力,并且要有肯定的心理承受能力,因为用工夫换钱变成用能力换钱的时候,这个世界会360度无死角的“鞭打”你。然而,随着一次次的打击,能力也会一次次的晋升。 卖资源 比卖能力更进一步的,是卖资源,做资源的整合者,管理者 一个好的创业者企业家,要有发现市场资源和消费者的尖利眼光、口头力、专一力和毅力,才有可能胜利。 欢送关注「慕课网」帐号,咱们会始终保持内容原创,提供IT圈优质内容,分享干货常识,大家一起独特成长吧! 本文原创公布于慕课网 ,转载请注明出处,谢谢合作

April 18, 2023 · 1 min · jiezi

关于程序员发展:团队价值观是什么鬼

价值观是个很玄乎的货色。认同它的人推崇备至,不认同它的人不屑一顾。 我第一次接触价值观 —— 公司价值观我第一次接触价值观是公司的价值观,在实习的时候开始接触阿里价值观,然而过后的我刚入职场,还比拟稚嫩,并没有太深的了解,只停留在晓得和理解的层面,前面完结实习之后,根本就忘记了,然而在多年之后的明天,通过回顾之前的实习经验,反而对阿里价值观有了新的了解,真得是很玄乎的货色。 对价值观感触最深的就是腾讯的价值观了,毕竟工作了将近 8 年,腾讯也非常重视建立公司价值观,因而在近朱者赤;近墨者黑之下,对腾讯价值观也感触颇深,我集体也是十分认同腾讯的价值观的,这也是我能在腾讯待那么久的缘故吧。另一方面,我感觉本人受到腾讯价值观的影响也是十分大的。 为何会提到团队价值观?团队价值观这个概念我曾经遗记是在哪里看到的了。始终感触不是很深,之前的团队也没有谈及团队价值观的事件,反正我进入团队那么久,就没有听到有正式宣导过团队价值观。之前的团队价值观,只能依照本人对整个团队的行事格调的感触来自我总结进去。这点在当初想来,还是会感觉奇怪,并且有一点点遗憾的。 团队价值观的作用就不娓娓而谈了,大家应该都晓得。对于团队价值观的实际,我是在极客课程那里学习到的,感觉讲得十分有情理,于是我也尝试在新的小团队里实际了一下。最终的成果是比拟难测验的,这是个长期的过程,只能留待当前来总结了。 我眼中的团队价值观在我当初的了解层面来看,我感觉团队价值观就是一个筛选器,能够把同一类人默默地汇聚到一起,造成合力,共同奋斗。 身处在一个本人不认同的价值观的团队中,是会十分好受的。大家都据说过安徒生童话里的丑小鸭的故事,如果本身的价值观与团队的价值观不能相容,那不管本人做什么都是“错”的,怎么致力都没用,相同,如果找到适宜本人价值观的团队,那就是变质成天鹅的时候。 雷同的价值观可能带来信赖与安全感。退职场中,如果我发现刚意识的共事是在腾讯工作超过 2 年的,我至多会放下一半的警戒心理,欢快地跟他单干。 团队价值观是须要明确并宣导的。这是我在极客课程外面学习到的,我认为十分有情理。在 IMWeb 团队的 7 年多里,我没有在任何场合里听到领导宣导过团队价值观,因而,直到现在,我都不能说出 IMWeb 团队的价值观来,我感觉这是一个十分大的遗憾。 团队价值观是须要时刻践行的。团队价值观跟这个团队的领导者的价值观有很大地关系,大多数时候,它们根本相等。因为团队价值观是须要时刻践行的,它不是在正式宣导的时候说一嘴的事件,它须要团队的领导一直地去践行它,让团队成员可能感触失去,这样,它能力像润物细无声一样,耳濡目染地影响整个团队。因而,如果团队宣导的价值观跟团队领导的集体价值观不统一的时候,团队领导是不可能做到时刻践行的,那最终的后果就是这个团队价值观变成海市蜃楼,大家听听而已。 团队价值观是会变的。我感觉,会让一个团队的价值观发生变化的起因次要有以下 2 种: 团队领导变更。刚刚说过,团队价值观会与团队领导的集体价值观挂钩,当团队领导有变动的时候,团队的价值观会产生翻天覆地的变动,即便团队构造和成员没有任何变动,团队外面的每一个人都会显著感觉到团队的变动的。团队规模扩充。当团队规模急剧扩充的时候,团队价值观应该要有相应的调整,以更好地适应更大的团队规模。否则,如果因循小团队的团队价值观,那会让团队成员隐隐地感到束手束脚。对于这点我的感触是十分粗浅的,因为 IMWeb 团队的经验至今仍历历在目。 这是篇随想,还是那句话 —— 价值观是个很玄乎的货色。认同它的人推崇备至,不认同它的人不屑一顾。 尽管我不会推崇备至,但我还是认同它的价值和作用的,因而在今后,我还是会做出更多的实际的。其实,我曾经开始实际了 —— 尝试把它写下来。 欢送有跟我一样想法的(准) leader 们关注我,一起交换这方面的心得哈。后续我还会持续分享一些对于本人价值观的想法,欢送继续关注。 ----------------【END】---------------- 欢送加我v【longyiyiyu】,进行无累赘沟通,我会 长期职业倒退布局领导近期工作重点交换职场解惑面试辅导也欢送关注公众号【潜龙在渊灬】,播种程序员职场相干教训、晋升工作效率和职场效力、结交更多人脉。

March 21, 2023 · 1 min · jiezi

关于程序员发展:程序员职场工具库它到底想说什么-思维导图应用篇大纲类

这是《程序员职场工具库》系列文章,在浏览本文之前,倡议先浏览 《程序员职场工具库》 工具导论 和 《程序员职场工具库》思维导图开篇用思维导图展示纲要、目录有一种很常见的 tree 构造信息,那就是目录,菜单或者纲要。咱们常常看到的 admin 零碎左侧的菜单都是 tree 组件实现的。 既然思维导图工具适宜展示树型构造的内容,那应用思维导图来展示纲要和目录是十分适合的。 应用思维导图来展示纲要能够让本人对内容有一个详情的理解,可能从一个整体的视角来了解它想表白的内容。让本人对于整个内容的脉络更加清晰,而后就能够按图索骥,依据本人的须要去深刻理解某一个细节内容。 具体案例案例1:培训课程笔记平时在加入一个培训课程的时候,咱们能够应用思维导图工具疾速记录课程的内容。次要记录培训课程 ppt 的一二级目录,还有每一个模块的外围要点,听到精彩局部,还能够写上本人的心得。 有人会说,不是有讲义教材吗?思维导图的内容就是 ppt 的一二级目录,为什么还须要重复记录呢? 讲义就跟书一样,必须要翻呀翻,看到最初,能力看完所有的内容,这个时候,后面的内容早就遗记了,更不要说从纲要来了解整体的内容了。 应用思维导图记录培训课程笔记还有个很大的益处就是不便温习和后续查阅,也不便携带。很多时候,如果咱们把培训课程的内容学会了的话,根本咱们看其中的外围要点就可能回想起具体的内容。因而很多时候,一个思维导图笔记就足够本人温习了。 最初一点,就是在缓和的培训节奏中,用电脑打字必定是要比在教材上手写笔记要快很多的! 案例2:读书笔记读书笔记和培训课程笔记很相似,就不再赘述了,这里须要重点举例说明一下,应用思维导图记录读书笔记的两个益处。 第一种是更具体的目录,特地是对于技术书籍来说,个别目录就依照模块知识点来划分,层级构造清晰,它的目录就是个字典,能够让咱们疾速查找并定位咱们须要的知识点,而后再深刻去看。而咱们应用思维导图来做笔记,可能给二级目录补充更具体的一些概要阐明,辅助咱们查找知识点。 另外一种是针对那些目录构造绝对费解的内容的,当咱们碰到这种目录时,咱们能够在思维导图中补充上本人的了解,这样在当前查看的时候能够疾速回顾书籍的内容。比方上面这个是我在看《你的灯亮着吗?》的读书笔记。 全书由 20 个小故事来讲述,尽管目录帮忙咱们划分了 6 个章节,然而咱们还是无奈从它的目录中疾速理解到每个章节的具体想表白的内容,因而,我给每个章节都加了一个核心内容的了解,辅助本人回顾并了解这个章节的内容。 我挺悔恨本人没有更早地理解到思维导图的这个用法,我很早之前看的书,都没有做出很好的笔记,保留到本人的资料库中,以至于以前看过的书籍的记忆都隐没了,这是我集体十分大的损失。 案例3:制作 ppt这个案例是跟案例 1 相同,咱们在做培训笔记的时候,都是把讲义 ppt 记录成思维导图,反过来,当咱们本人要制作 ppt 的时候,咱们能够应用思维导图来疾速构思 ppt 的整体构造和核心内容。 所有的 ppt 最重要的不是要表白它的内容有多精美多丑陋,而是它要表白的核心内容和思路,而这恰好是思维导图善于的事件,应用思维导图,能够让本人更加专一于核心内容和思路,能够撇开具体内容细节的烦扰。另一方面,间接在 ppt 工具中制作,会很影响思维的连贯性,因为 ppt 是一页一页翻的,毕竟遍历一个链表怎么会比遍历一个数组来的顺滑呢?而思维导图却能够保障思维的连贯性。 请看上面的具体案例,这是我在制作腾讯 T11 问难 ppt 时应用的思维导图: 首先把每一页 ppt 的核心内容先列举进去,而后再补充每一页 ppt 心愿展示的具体内容和信息。在这个思维导图中,做增删改都十分不便,整个过程都跟 ppt 工具没有任何关系,当这个思维导图实现的时候,整个 ppt 的内容根本 90% 都曾经呈现在我脑海中了,剩下的就只是填充内容制作 ppt 而已,这就很像咱们平时工作一样,方案设计远远比 coding 要重要! ...

March 3, 2023 · 1 min · jiezi

关于程序员发展:10年资深架构师分享-普通程序员向架构师进阶之路

22年开年以来,受新冠疫情“倒春寒”影响,许多企业再次受到倒退限度。在高速倒退的数字化时代,程序员在企业中占比越来越多,在这样的大环境中,程序员该如何自处 ,如何疾速晋升本人的技能和外围竞争力? 与其惶惶不安,不如做好打算,稳步向前。而架构师,是大多数程序员降级打怪、职业倒退的次要方向。 作为程序员的你或身边的敌人,想必都很关怀这个问题:怎样才能疾速成为一名优良的架构师? 而顺利成为一名架构师并且胜任架构师的工作,须要把握诸多的技能。不仅是过硬的技术能力,还需具备许多软性技能,只有软硬技能兼备,才可能成为一名优良的架构师。 那应该从哪里动手?须要多长时间? 须要看什么书籍和课程? 在工作中能够做哪些练习? 有没有避坑指南? ....... 本期AIOps Developer Meetup邀请了领有10年架构师教训,6年研发治理教训的高驰涛(Neeke Gao)给大家分享——《一般程序员向架构师进阶之路》! 直播预报主题 :一般程序员向架构师进阶之路 工夫 :4月7日 19:00-20:00 讲师简介: 把握近10种开发语言。10年架构师教训。6年研发治理教训。寰球PHP社区开发者。云智慧AIOps社区PMC。现任云智慧企业效力部高级总监。 直播内容: 一、架构师都在干什么 从两个实例看架构师们的日常角色定位和保持二、架构师是怎么成熟的 成长路上的那些硬通货刻意训练的软实力三、一般程序员该怎么做 避坑指南怎么开始更好听众受害: 理解架构师的实在工作日常理解成为架构师的必备技能获取进阶架构师的指南报名形式增加小助手(xiaoyuerwise),备注「0407」获取直播链接! 每周一场技术分享,可从小助手处获取直播 主题 及排期! 对于 MeetupAIOps Developer Meetup是由AIOps社区推出的,面向宽广开发者的系列线上直播及线下分享流动,咱们将汇聚AIOps社区专家团的力量给你提供优质的技术内容,无论是技术解读、开源治理、行业解决方案,置信宽广developers总能在这里找到你想要的内容。 AIOps社区是由云智慧发动,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交换社区。该社区致力于流传AIOps技术,旨在与各行业客户、用户、研究者和开发者们独特解决智能运维行业技术难题、推动AIOps技术在企业中落地、建设衰弱共赢的AIOps开发者生态。

April 1, 2022 · 1 min · jiezi

关于程序员发展:热爱代码且发量惊人一名反内卷研发工程师的日常

起源|尔达 Erda 公众号 导读:许多人在抉择“程序员”这一职业的背地,或多或少都会有故事可讲。本文是咱们与一名 Erda 的用户沟通时深度开掘到的故事,征得自己批准后对其进行了整顿,并设立了【开发者故事】这一栏目,旨在收纳宽广同学的故事。最近,一个帖子在互联网圈子火了起来,并在社会上引发宽泛关注,“程序员 35 岁危机”这一话题再次频现热搜。一位名叫 Mary 的网友给总理留言提到:“我是一名计算机专业出身的软件开发人员,往年 45 岁,精通 java 的各种技术体系,包含微服务、大数据等技术,并能利用到理论工作中,帮忙所在公司晋升、革新所应用的技术框架,业余我还考取了 PMP 项目管理证书、零碎架构师证书,成为所在公司的零碎架构师、外围技术骨干。我对计算机实践的了解也随着实际的增多越来越粗浅,我感觉我的职业生涯进入毕生中最好的时刻。在我儿子读初二上学期时,我辞职回家陪伴儿子。半年后,当我再回来寻找工作机会的时候,却发现连个面试机会都很难失去,更别提施展本人的业余专长了 。当初国家激励提早退休,我感觉,40岁以上的有教训的业余技术人员此刻正是本身职业倒退的黄金期间,他们找工作时不能被年龄限度了。”图片源自:中国政府网外界对于程序员群体也会调侃的赋予一个个标签:“高薪”、“格子衫”、“加班”、“技术宅”、“压力大”……但仍有越来越多的人投身于这一行业中,程序员的身影也一直呈现在咱们身边各个领域。 本文的主人公将从本人如何成为一名程序员登程,来讲述本人与这一行业的故事,一起来看下吧~Richfiter 高级研发工程师 从业 10 年 坐标:成都 成为一名开发者能够说是小时候的幻想。上小学的时候,还记得那时操作系统是 Windows 95,第一次接触计算机的我产生了浓重的趣味,在微机课上就学习了 LOGO 语言,能够用一只小海龟,通过代码管制画出各式各样乏味的图形、动作等。对于那时候的我来说,感觉能管制计算机实现我的想法,这真的太神奇了!随着 Windows 98 的遍及,市面上呈现了很多乏味的游戏,比方《风波之天下会》、《仙剑奇侠传》、《星际争霸》、《红色警戒》……置信从那个年代过去的咱们,都会背“show me the money”,都会用《金山游侠》,也都对精彩的电脑世界所着迷。起初,在订阅书刊报纸的年代,《电脑爱好者》、《电脑报》之类的杂志里有大量电脑操作的技巧、黑客攻防战的文章以及各类软件的应用评测。每篇文章,都令我读的津津乐道,那时的我就定下了一个指标:当前上学和工作,都要去做计算机方面的事件。上大学后,我主修了计算机专业,随后顺利成为了一名开发者。和大多数程序员一样,我心中也怀揣着“科技扭转世界”这一美妙的现实。当初写代码这件事曾经融为我生存中的一部分,我会用代码去尝试解决工作以及生存上的问题。每次胜利解决问题,都会让我感触到一次小小的光荣感。不过一个不能疏忽的事实是,各行各业,都有对应的职业病,干咱们这行的,要是没有个颈椎病、腰椎问题、脱发、内分泌失调和过劳肥的,都不失常。工作前几年,每天都还可能按时上下班,每周均匀写 40 个小时的代码。最近这几年,感觉大家都在拼加班、拼业务量、拼计划、拼各种 KPI......随后就演变成了部门制度、公司制度、面试潜规则……目前我每周均匀要写 55-60 个小时的代码,说句心里话:“我好累啊,你们不累吗?”。很多人眼里的程序员是没有“生存”的,不是在下班就是在去加班的路上。尽管工作很辛苦,然而我依然保留了本人小小的喜好:打乒乓球。小时候并没有零碎训练过,不过通过看视频,还是学会了一些适宜本人的打法,也领有了属于本人的业余球拍,上个照片吧: 对于最近很火的“程序员 35 岁危机”话题,我认为这是一个危险信号,同时也是一个时机。危险信号体现在几个方面:膂力、精力、压力、以及工作机会......时机方面,我感觉就是如何转化从业教训和业务能力,能够做业务专家,也能做治理,甚至,本人当老板......目前,我就在积极主动地往业务专家和治理方向转型,期待我能够做的和编程一样短暂。我眼中的开发者:爱折腾,善留坑,很敬业,十分开心能够从事这一行业,和大家一起用代码扭转世界!最初以分享一件乏味的事件完结:湖南卫视的综艺节目《时光音乐会》满新鲜的,无妨试试看? 写在最初当你也有一些想对本人讲的话或者单纯想记录一下本人的故事,欢送踊跃和小助手分享,咱们会将其整顿收在【开发者故事】栏目,让更多人理解到你。如果你仅仅想要凝听他人的故事,也欢送增加微信 Erda202106 退出交换群哦~ Erda Github 地址:https://github.com/erda-project/erdaErda Cloud 官网:https://www.erda.cloud/

November 19, 2021 · 1 min · jiezi

关于程序员发展:欢庆1024程序员节开源茁壮成长

越来越多的程序员通过开源我的项目找到本人真正感兴趣的方向 通过社区找材料、炼手艺、开视线,晋升本人的业余能力 甚至找到气味相投的守业搭档 「开源」曾经成为程序员成长进阶不会错过的关键词 一年一度的 1024 程序员节行将到来 Milvus 社区邀请了有丰盛开源教训的敌人 进行一场对于「开源与成长」的话题探讨 并独特送上程序员「成长大礼包」! 点击预约,锁定直播 GitHub @Milvus-io|CSDN @Zilliz Planet|Bilibili @Zilliz-Planet Zilliz 以从新定义数据迷信为愿景,致力于打造一家寰球当先的开源技术创新公司,并通过开源和云原生解决方案为企业解锁非结构化数据的暗藏价值。 Zilliz 构建了 Milvus 向量数据库,以放慢下一代数据平台的倒退。Milvus 数据库是 LF AI & Data 基金会的毕业我的项目,可能治理大量非结构化数据集,在新药发现、举荐零碎、聊天机器人等方面具备宽泛的利用。

October 22, 2021 · 1 min · jiezi

关于程序员发展:云计算运维工程师所需技能

根底技能:Linux网络根底利用:nginx tomcat数据管理系统:mysql redis集群:LB/HA编程:python shell设施:服务器 外围技能网络零碎:k8s,OpenStack容器及主机虚拟化:docker ,kvm存储:Ceph

September 16, 2021 · 1 min · jiezi

关于程序员发展:个人经验谈谈要想成为一位优秀的程序员一定要做到的几个方面

如何成为一名优良的程序员要尽量接触代码,能看到代码,能写代码 如何疾速成长要写代码先看代码 好的代码让人看到时能够疾速理解,并且可能抓住次要设计精华 公共库代码外围零碎的代码: 用到的设计,原理多看代码,放弃代码的敏感度写代码时,多做总结写的代码要体现设计的思维 如何晋升技术理解我的项目中架构方面的相干常识,尤其是封装的组件架构师工作内容简要介绍: 搭建高可用的框架: 搭建数据库时,要思考如果一台MySQL服务宕机,如何保障业务切换到另一台机器上要思考高并发因素: 须要会用nginx,mycat,netty,redis之类的工具思考搭建实现负载平衡要把设计好的架构部署上线: 要晓得如何将nginx集群等组件部署上线理解部署的linux命令和脚本理解jenkins之类的部署工具可能解决部署和运行时的问题: 懂得如何搭建零碎具备针对netty等组件的debug能力可能通过日志晓得集群的运作状况可能疾速解决集群问题不仅仅关注技术,还要联合业务: 将业务需要通过架构实现晓得组件的优劣可能选型并且设计方案相熟相干技能: 先从ant脚本 ,jekins脚本和linux脚本动手,相熟零碎的部署形式以及必备的linux调试技能通过观察nginx或者dubbo或者zookeeper的配置文件,理解各个组件的运作形式,并可能通过这些理解高并发可用零碎里负载平衡和生效转移的配置形式察看线上相干日志,理解零碎部署状况,以及从架构层面理解诸多组件之间的关联多多解决理论问题,理解组件的要害配置和组件的底层代码 相熟根本的部署和架构方面的技能测试和上线阶段呈现问题: kafka没有配置好,导致音讯积压dubbo超时工夫配置过长,导致调用链路超时生效redis超时工夫过长,导致OOM异样跟在资深人员之后查问题,找到问题后,手动复盘一下: 做到相熟组件配置并能理解组件的底层代码相熟配置各种框架组件的实施方案架构师面试相干问题: 如何部署nginx或者其它组件,从而实现高可用?Redis集群里,容灾个别是怎么做的?Kafka音讯队列里,如何实现音讯反复?如何确保音讯不被反复生产?底层相干比方netty里的读写索引工作形式? 好程序员的思维模式常常钻研你不懂的代码 钻研你未接触过的代码,相熟不同的代码构造和设计模式,钻研代码为什么这样写精通代码调试 先猜想一下到底产生了什么假如猜想是对的,想想猜想会导致程序有什么后果试着察看这些后果有没有异样的中央: 如果没有发现异常,阐明猜想的问题很可能就是对的如果发现了异样,阐明猜想是错的,进行调试对于一名攻城狮来说,这个过程就是电光火石的一瞬间.只有解决的问题足够多,做进去的猜想就会越精确器重节约工夫的工具优化迭代速度系统性的思维形式: 本人的代码和其它代码在性能上是什么关系有没有好好测试代码为了部署代码,线上生产环境的代码需不需要变动新的代码会不会影响曾经运行的代码在新的性能下,指标用户的行为是否是冀望的代码有没有产生商业上的影响 程序员算法要害是了解算法背地的深层次实践,以及修炼出解决问题的思路 十大经典算法疾速排序算法堆排序算法归并排序算法二分查找算法线性查找算法(BFPRT)深度优先搜索算法(DFS)广度优先搜索算法(BFS)最短门路算法(Dijkstra算法)动静布局算法奢侈贝叶斯分类算法 算法局部二分搜寻: Binary Search分治: Divide Conquer宽度优先搜寻: Breadth First Search深度优先搜寻: Depth First Search回溯法: Backtracking双指针: Two Pointers动静布局: Dynamic Programming扫描线: Scan-line algorithm快排: Qiuck Sort 数据结构局部栈: Stack队列: Queue链表: Linked List数组: Array哈希表: Hash Table二叉树: Binary Tree堆: Heap并查集: Union Find字典树: Trie LeetCode刷题程序: 如果工夫紧迫,先刷热门举荐题如果工夫富余: 按从低到高的难度分组刷题按tag分类刷题定期温习,重做之前刷过的题刷题办法: 第一遍: 先思考,看参考答案刷,联合其他人的题解刷.思考,总结并把握本题的类型,思考形式,最优题解第二遍: 先思考,回顾最优解法,并与之前本人写过的解答作比对,总结问题和办法第三遍: 晋升刷题速度,拿出一个题,就可能晓得其考查重点,解题办法,在短时间内写出解答定期总结: 依照题目类型进行总结: 针对一类问题,总结有哪些解题办法,哪种办法是最优的,为什么?总结重点: 有些题刷了好多遍还是不会,那就要重点关注,多思考解决办法,一直练习强化 ...

July 5, 2021 · 1 min · jiezi

关于程序员发展:人均估值5000万RMB53岁程序员能做到的你也能

原文首发于:https://mp.weixin.qq.com/s/iT... 两周前,涛思数据正式发表实现B轮4700万美元融资。一个40人的的团队,四年的工夫,前后共取得了来自红杉、经纬、GGV、明势等近7000万美元的投资,估值已超3亿美元,人均估值超5000万RMB。音讯颁布后,迎来很多惊叹。我本人,一个53岁的程序员,更是感慨万分。我本已到游山玩水的年龄,却凭本人2017年初写的一万八千多行程序,开启了第三次守业之旅,而且继续取得资本的青眼,得以持续折腾,追寻本人的幻想。周末得闲,总结一下本人的心路历程,与大家分享。 一个人,两个月,一万八千行代码2016年,我看了很多个物联网、智能硬件的我的项目,发现大家都在用通用的大数据平台解决物联网的数据,效率不高,运维简单,且广泛埋怨大数据技术人才难找,尤其是很多传统企业,想做数字化转型,但因为待遇、治理形式等问题,找大数据技术人才更是难上加难。 作为一个研发人员,看到这么多通用痛点,我第一反馈就是应该用技术的形式来解决这些问题。剖析了物联网数据特点后(对于物联网数据特点,详见我之前的文章:我为何要开发一个专用的物联网大数据平台,还开源它?),我感觉能够充分利用这些特点来设计和实现一个新的存储和计算引擎,开发一个All in One的物联网专用大数据平台,这样能够大幅升高软件系统设计和保护的复杂度,晋升数据处理效率,升高总领有老本。 思考到联网设施的数量在高速增长,我预计今后世界上90%以上的数据将全副来自物联网,这将是一个微小的市场,须要一个专用、高效的大数据平台来解决,于是我判断,这是一极佳的守业机会。 有了这个想法后,我天然马上想到组建团队来做,本人仅定方向、参加整体设计。但认真思考发现这么做很不靠谱,因为大数据平台是底层软件,抛开翻新的设计不说,工程实现的难度很大,对编程的要求极其之高,不是个别程序员能胜任的。作为一名守业老兵,我深刻理解对于物联网大数据平台这样的创业项目而言,技术是外围,创始人必须深度参加到产品的研发,否则肯定失控。因而我决定本人一个人开干,先把Prototype做进去,验证本人“一个数据采集点一张表”和“超级表”的翻新设计是否能完胜市场现有的产品。 我人生的第一行程序是1984年写下的,过后念高一,因为邓小平的一句“电脑要从娃娃抓起”,我就读的长沙县一中幸运地失去了团中央赠送的6台Laser 310,从此让我与编程结下了近40年的缘分。起初无论是在中国科大念书,到美国留学,在美国Motorola, 3Com等公司工作,都写了太多的代码。但从2008年我本人守业起,尽管产品的外围代码都是本人写的,比方和信的推送引擎、高兴妈咪的胎心计算,但我绝大部分工夫都不在一线作战,因而曾经很难说本人是研发高手。 但近40年的“码龄”教训和继续守业的我的项目经验让我深信,所有不是问题。几天工夫,就把本人以前相熟的vim, cscope, gdb, valgrind这些工具再捡起来。本想用时尚的Go语言来开发,但一想世界上最有名的数据库都是C语言写的,本人又是一个久经考验的C语言程序员,因而最初还是决定用C语言来开发。 2016年12月底,我正式开始上阵写代码。继续两个月工夫,每天均匀工作12个小时,写下了一万八千行代码。通过根本的比照测试,证实了我翻新的设计能完胜市场现有的产品。 53岁,迎来研发状态的巅峰产品原型通过验证后,加上对物联网将来广大市场的信念,我顺利取得了明势资本、蛮子基金的天使投资,开始组建团队。 我认为底层软件开发,人多没用,而且守业公司更须要十倍程序员,因而对选人极其严格。团队规模始终很小,最开始的一年半,包含我本人,胜亮、洪泽两位科大师弟,计算所毕业的廖博士,就4个程序员,披星戴月的写程序、debug,外加两度守业老搭档王婧负责所有非研发的工作。 2018年8月,涛思数据公布TDengine的第一个正式商用版本,确定产品定位为物联网All in One的大数据平台。始终到2019年7月,涛思团队也才7集体,其中6个都是程序员。 当初回过头来看,TDengine的技术开发难度,远超我当初的预期。尽管产品易用性不错,性能也卓越超群,但稳定性问题始终困扰咱们。抱着产品不稳固公司就要关门的信条,抱着死啃技术硬骨头的信心,我和团队把TDengine重构了屡次。特地是2.0版,齐全颠覆了最开始的代码和设计,重写各个模块、加大测试力度,一下将稳定性进步到了产品能商业化应用的水平。 因为总要解决各种辣手的技术难题,比方内存泄露、内存overwrite等等,我本人的技术水平和实操能力也得以一直晋升。为了齐全系统地解决多线程异步调用场景下资源的生命周期治理问题,我写下了tref.c模块,让零碎稳定性晋升了一个量级。2020年整个疫情期间,我为TDengine就递交了近200个PR,解了太多的BUG,而且写下多篇外部技术博客,分析各种具体技术问题。 就这样,我在半百的年龄,不是在美国,而是在中国迎来了本人技术水平的巅峰。所以,程序员哪儿有什么35岁的魔咒,你只有想写、爱写、继续写,巅峰就在下一站。 开源引来了巨变好产品,还须要好的推广。怎么让物联网、车联网、工业互联网等行业尽快用上TDengine,思考了很长时间,最初咱们决定将外围代码齐全开源。 在局促不安的情绪中,2019年7月,涛思数据发表将TDengine单机版正式开源。2020年8月,咱们又将集群版开源。 开源的成果,远超预期。在GitHub寰球趋势排行榜上,TDengine曾多日雄踞榜首。当初TDengine在GitHub上的star数曾经超过15K,fork数超过3800,每天clone代码的人数超过1000,每天新增的TDengine实例数超过200。 每天看到这些数字,我都是兴奋不已,因为阐明本人写的程序失去了大家的认可,没日没夜的debug没有徒劳。更令我开心的是,在李广、江燚销售团队的致力下,尽管代码开源,销售收入却实现了成倍增长。这让咱们得以证实商业的闭环,得以证实Open Core的商业模式在中国是可行的。 因为开源的胜利,咱们迅速取得资本的关注。2020年1月,涛思数据取得GGV纪源资本、红杉中国种子基金的Pre-A轮投资;2020年4月,又取得GGV、红杉中国的A轮投资;两周前,又取得经纬中国、红杉中国、指数资本的4700万美元B轮融资;前后融资总额靠近7000万美元。 因为开源的胜利,咱们也取得了技术大牛们的青眼。多年好友,远在硅谷却始终在帮涛思数据出谋划策的Steven终于全职退出;在360始终做数据库研发的怡豪同学退出了,在华为、Oracle做研发的潘魏同学退出了;始终在技术守业的科大师弟明磊、伟灿同学退出了,在网易做底层存储研发的李创同学退出了,还有很多很多。 咱们当初的5人团队终于成长为40多人的团队。而且除研发外,终于有了专职的人事和专职的财务。我前两次守业的搭档肖波同学退出了,组建起业余的交付团队。 程序员的黄金时代2000年的时候,就有很多人说IT曾经到了高峰,最好不要搞软件开发了。到当初,20年过来,中国IT从业人员预计是2000年的10倍。大家可能设想不到,福特汽车一半以上的员工是软件工程师,苏宁的软件开发人员曾经超过一万,安全的软件研发人员更是超过万人,软件成为各个企业的增长引擎。而且随着数字化转型的深刻,软件研发人员的规模还将进一步扩充。 最令人激动的是开源,它让程序员步入了黄金时代。开源让程序员的代码成为了作品,与画家的画一样,能够被寰球程序员观赏、应用,并传承。对于闭源的软件而言,这是不可能的。你在Oracle开发的数据库外围模块,无论设计得如许优雅,你在阿里为电商后盾设计的交易解决模块,无论高并发能力有如许强悍,都无奈让人观赏、惊叹。但开源之后,所有都变了。只有你的代码足够好,解决了重大问题,那肯定会成为传世之作。即便有瑕疵,后来者也能够在你的根底上批改,但你的名字永远会镌刻在代码上,而不会被历史所吞没。 开源,会让程序员对本人的代码品质产生极致的谋求。在2019年7月决定将TDengine开源之前,涛思数据团队花了好几个月的工夫整顿代码,编写文档,目标就是不想让它过于难看,被人诟病。不开源的话,咱们基本没有这个能源去做,因为用户是看不见的。在2019年底启动TDengine 2.0的开发,更是如此,就是想让TDengine的设计与代码更加优雅,构造更加清晰,让其余程序员看的时候,能享受到一种高兴和美感。我也曾向非研发共事展现过TDengine的代码,毫无技术背景的他们,居然也能看懂一段代码的大抵逻辑。这所有都得益于开源,TDengine的每一行代码都是抱着“这是我本人的作品” “这是要给寰球开发者展现”的想法敲下的。 如果你去GitHub下载甚至fork咱们TDengine代码,就是对咱们一心想打造的粗劣作品的观赏,就是对咱们开源的最大反对。 开源,给程序员提供了一个展示本人集体能力的绝好机会。无论你毕业于清华姚班,还是二本学校,无论你是90后,还是像我这样的60后,无论你是男生还是女生,无论你是科班计算机专业出身,还是我这天体物理业余毕业,无论你是在东半球,还是在西半球,“show me the code”。代码是你实力的最好证实。 开源的代码,能让大家摈弃偏见,看到一个程序员背地真正的价值。 53岁程序员能做到的,你也能!我49岁创立涛思数据,独自一人开发出TDengine的第一个版本,随后带着团队一直重构迭代产品。往年53岁,又缓缓来到研发第一线,聚焦到经营和治理上,但我置信,只有有须要,我随时又能够重返战场,与小伙伴们一道debug,解决技术难题。而且我深信,即便我到了80岁,只有还能动弹,也仍然能写程序。 在中国,普遍认为35岁的程序员不再有竞争力,须要做技术治理或转行。细看软件研发,尽管利用在不停地扭转,各种新的架构层出不穷,程序员需天天学习新的常识,但其实根本的办法和原理是少有扭转的。比方大数据的解决,不外乎是Divide and Conquer的一种具体实现,分区、分片技术是很天然的事件,高牢靠、高可用,对于我这个通信行业研发老兵而言,也就是在新的场景下,从新炒一次饭而已,没有什么新意。对于时序数据的解决,与音讯队列的解决没有实质的不同,只是减少了计算剖析的局部。 人类在科学技术的基本原理和根本办法的冲破上,其实始终是很慢的。程序员只有把握了IT技术的基本原理和办法,爱写、想写程序,有挽起袖子大干一场的信心,年龄不再是问题,你的每行代码都会失去认可,失去回报。 儿子青睐击剑,教练Miller说: “Scores don't determine if you lose or not, you do. Throwing down your sword and mask is true defeat”。作为一个程序员,也是一样,年龄大小、技能高下没那么重要,但只有当你远离键盘不再Coding战斗时,你才是真的被世界淘汰了。 ...

June 9, 2021 · 1 min · jiezi

P8可以年入170万那P10级别的程序猿每天都在干嘛

作者|Python爱好者社区来源|python_shequ“你知道张江凌晨四点钟是什么样子吗?”能问出这个问题的人,是一位程序猿。 “你知道用两个字怎么形容我们这种人?码怪!”能问出这个问题的人,也是一位程序猿。 “你知道怎么搭配服饰,会显得光头睿智又体面吗?”能问出这个问题的人,还是一位程序猿。 从工程师,到专家,到研究员,程序猿的每一个成长阶段,都是一个体面人。 如果你是一个P4-P5级别的IT工程师,对于这样的场景,不会陌生。 但你不好奇吗,成天锁在办公室里的总监,他在干什么?公司楼顶的副总,他又在干什么? 以下场景告诉你什么是程序员之间的差距! 日常工作工作无非就是日常, 但不同的level, 应对方式却可能隔着几个中关村。 收到警报信息 面对习以为常的bug, 小白掀起波澜, 大神气定神闲。 对不合理需求 和产品经理的日常交流, 也充斥着满满的火药味。 对996的态度 加班? To be or not to be? 是一门要静思的哲学。 日常问题 脑袋决定p股, 一般能看见脑门的时候, 就能跳脱世俗, 状态呈大圆满。 日常用语 话不在多, 有用就行。 答题类型 网络上, 程序员小白和大神能帮你解答什么问题? 工资 传说中他们的工资差异是: 一顿操作猛如虎,一看工资三千五。 啥也不干,年薪百万。 阅读 宝贵的私人时间里, 程序员同样会阅读, 当然每个阶段侧重各有不同。 生病 面对病痛, 各有各的“独门秘籍”。 如何哄女朋友 关于感情世界, 谁传出的谣言说格子衬衫们注孤生? 真实的他们,骚着呢! 从P4爬到P10,还要经历多少个996、007?还要熬多少次考核、评比才能够得到?什么时候才能成为一个体面人……路漫漫其修远兮,吾将上下而求索!

October 14, 2019 · 1 min · jiezi

DevOps-工程师成长日记系列五部署

原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-5-deploy-83e790545c23 原文作者:Igor Kantor 翻译君:CODING 戴维奥普斯让我们简要回顾下我们的 DevOps 之旅: 在第一篇,我们介绍了 DevOps 文化以及相关的基础技能; 在第二篇,我们讨论了如何为将来的代码部署奠定基础; 在第三篇,我们讨论了如何有组织地管理代码; 在第四篇,我们讨论如何简单地打包代码。 以下是我们贯穿前后的路线图: 如果在上图每列的技术栈上花费一个月左右的话,那么我们现在处于第 4 个月。基于前文的学习,我们已经知道了如何配置将要运行代码的服务器基础架构、如何正确地对代码进行版本管理、如何将代码打包以备部署。今天我们要讨论如何部署代码。 部署代码注意到了吗?我没有说“如何轻松地部署代码”,因为代码从开发环境到正确部署仍然是一个充满了错误和失败的痛苦过程。 原因很多,但在我看来,这主要归结为差异。具体而言,创建代码的环境与实际代码运行的环境之间存在差异。我认为减少这些差异意味着你不仅可以在整体代码部署中实现最大的改进,还可以在代码部署后的运行时达到一定的优化。那么,我们如何减少或消除生产和非生产环境之间的差异呢? 在我的机器上明明是可以跑的如果你的开发基础设施是这样的: 用“温柔的爱和关怀”手工组装而成的开发基础设施 但你的生产环境基础设施看起来像这样: 那你就会遇到麻烦。 如果你使用基础设施即为代码的方式而不是手动配置,那么差异这事儿你已经搞定得七七八八了。如果不是,请不要绝望 —— 你并不孤单。花一个下午,找出你所碰到的所有差异(培训、文化、人员、流程等),并逐一消除它们。 最重要的是,如果你仍在手动配置,那你可能很难去管理现代技术栈。因此你需要做的第一件事是确保涉及产品的所有内容都是由部署服务器构建的版本化软件包。假设上述事情你已经完成,我会告诉你部署代码的最佳方法是不部署代码。 现代化的代码部署将代码部署到生产环境机器是一件非常 90 年代的事情。 现有技术的“代码部署装置” 将代码部署到一组固定生产环境机器的最大问题是:你的生产环境服务器(代码运行的地方)与你的开发环境服务器(编写代码的地方)不同。这就难怪在部署后会立即出现大量问题。 因此,你需要尽一切可能确保构建产物(而不是一小段代码)一直处在运行环境当中。换句话说,将代码一次性部署到开发环境,克隆运行代码的整个机器环境,然后将其复制到需要的任何位置。这被称为“不可变部署”,是一个非常强大的模式,可以避免你数小时部署后的头痛。当然,如果你运行容器,同样的想法也是适用的:在任何地方部署相同的容器即可。 “但是我的生产环境和开发环境就是不同的!”你可能会说。数据库用户名密码,连接字符串,S3 存储桶位置等等,这些都是不同的。解决这个问题的方法是使用 12 因子应用配置原则。所有配置都需要外部化并作为环境变量传递到服务器。 例如,如果在 AWS,可以使用 SSM 作为外部参数存储,它很好地集成了 CloudFormation。直接通过 aws ssm cli 命令行工具设置环境变量也非常容易。当然,其它云厂商也提供了类似的机制。 当出现问题时,你需要压制“修理”生产环境机器的冲动。这些机器是不可变的,这意味着你所做的任何修复都必须来自开发环境。事实上,你的终极目标应该是根本不允许任何在生产环境服务器上的接入。没有 ssh、没有 scp、没有人有任何访问权限,不是你,更不是觊觎中的黑客。 但如果我需要日志来解决问题呢?所以日志也应该外部化。理想情况下可以通过ElasticSearch / Logstash / Kibana(ELK)技术栈或商业软件(如 SumoLogic 或Datadog)将日志转储到其它地方。 无论你做什么,你的产品都是“黄牛” —— 它们会在出现最轻微的不健康信号时就被替换。它们不是“宠物”,需要耗费数小时进行故障排除来恢复健康。我知道这个比喻被太多人使用了,并且我听到那些真正养牛的人说过实际上他们的工作原理和我们刚所讨论的不同,但重点事务确实如此。不要“修复”你的生产环境机器,而是修复你的开发环境并重新部署。 代码部署机制所以你知道要做些啥了,但怎么做呢? “不幸”的是,这就是 Jenkins 的用武之地,Jenkins 是最受欢迎的开源部署自动化服务器之一。我说“不幸”是因为 Jenkins(及其前任 Hudson)已经存在了近十年,并且在漫长的使用过程当中我们发现了:它的设置很复杂,维护起来更复杂。它带有数以百万计的可疑质量插件。这些插件往往会在最不合适的时候崩溃,把所有事情搞砸。实际上,真正具有弹性的分布式 Jenkins 设置很少见,通常只有最大的研发组织里才能看到。 ...

July 11, 2019 · 1 min · jiezi

如何跳出假想观众误区做一场精彩的技术演讲

近期给孩子学校做科普宣讲,效果不错,孩子们很喜欢。回想近些年来,自己大大小小也进行了上百次的演讲。有公司内部的分享,也有外部的技术沙龙和技术大会;有线上直播式的,也有线下互动式的;有面对十余人的,也有面对数百人的。作为IT从业者,很多人比较内向,不太善于、甚至是惧怕演讲,我也经历了从最开始的内心畏惧,到现在可以做到张弛有度。那么如何进行一场精彩的演讲,我谈谈自己的心得体会。 一、演讲益处在谈到后面内容之前,我们先聊聊演讲的益处。或者说,IT人为什么有必要具备一定的演讲技能。 1.1 深入思考技术对于一个演讲者来说,不是简单的将自己懂的技术讲出来就可以,而是需要更深入地思考已有的技术内容,也就是“知其然也知其所以然”。你需要查阅各种资料,把概念的内涵外延、解决问题思路、对应的理论基础等想清楚明白。 一个10分钟的演讲内容,可能需要花费你数倍、甚至数十倍的时间来完成上面工作。甚至需要做重新做测试,取得一手数据加以佐证。而做这些都是必要的,因为我们需要为听众负责,也避免一些可能的谬误误导大家。同时对于自身来说,也是一个非常好的锻炼。我们可以更为系统地看待这些技术,将它们由点串线、由线到面,构建自己的知识体系。下图是一个很经典的学习金字塔,我们可以看到不同学习动作对内容留存率的效果。 从上面被动式学习的听讲、阅读、视听、演示;到主动式的讨论、实践与教授。从各种方式空间,将学习内容教授给他人,是留存率最高的一个手段。也就是说,教授是最为有效的一种学习方式。 1.2 锻炼教授技能这里就谈到了所谓”空杯”心态,也就是要以空杯子的定位去对待演讲。认清“我懂了”和“我能让你懂”是两个完全不同的问题。自己弄懂,可能和自己经年累月的思考有关,也可能需要以自己之前的知识积累做背景。但是让观众懂,而且是在演讲的几十分钟之内让观众懂,就必须把自己从“假想观众”中区分开来,哪些是自己特有的思维习惯,哪些是自己特有的背景知识,哪些是自己特有的学习方式…… 这些思维习惯、背景知识、学习方式,和典型观众有多少重合?以及,观众有没有办法在这几十分钟内倾注注意力来听取你的表达?这对演讲者的教授方法,提出了很高的要求。通过不断地演讲,可以更好地锻炼演讲者从用户侧角度出发,提高自己的传授能力。 1.3 塑造个人品牌所谓个人品牌,就是一个人带给别人的印象,以及所影响的人的范围。说一个人个人品牌很好,通常是说他在某一方面有专长,有权威,另外就是他还影响和帮助了很多人。可以有很多种方式进行个人品牌的塑造,例如演讲、自媒体、图书等。其中自媒体、图书更多是个人对某问题的深入思考,更具条理性和传承性。演讲相对来说,更为常见,也简单些。但从某种程度来说,反而要求更高。 因为写作可以反复加工,直至拿出成品为止;演讲却没有反复上台的机会。写作可以不必直面观众,以文字作为中介,演讲却必须与观众做直接沟通。写作是比演讲更为自由的,空间也更大,所以写作时往往可以对某个主题做大而全的论述。但是演讲的时间有限,观众的注意力和耐心也更有限。所以设计演讲稿时务必对写作的内容做大的削删,去掉细枝末节,只留下最重要的点。1.4 有效沟通手段作为职场最为常用的技能之一,沟通是非常重要的。在很多比较正式的场合,是需要通过演讲的方式进行有效沟通的。例如,和你的领导汇报工作,争取领导批准;去跟关联部门开会,争取工作支持;对个人阶段工作进行述职的时候等等。以上这些,都是要以演讲形式体现,某种程度来讲,演讲技能对于个人在职场升级有着举足轻重的作用。 二、演讲准备要做好一场演讲,必要的准备工作必不可少。我们可以从下面几个维度做好演讲准备工作。 2.1 心态准备严肃对待首先要有一个严肃的态度去对待一场演讲。不要以一种无所谓的态度面对。每一次演讲,都是需要精心准备、反复演练以达到最优的效果。这是对演讲者个人负责,也是对台下每一位听众负责。 调整紧张我们要认识到,紧张是一种非常正常的现象。紧张说明你内心重视,甚至适当紧张的状态有助于你的发挥,当然要避免过度的紧张。可以通过充分准备材料、反复排练试讲等手段减轻,但要完全避免是不太可能的。这时更需要以一种“微笑”的心态对面对,自我调节、自我鼓励。 面对错误要认识到,演讲中的错误是不可避免的。可能是材料准备的瑕疵、可能是演讲状态的不佳、可能是问题回答的欠缺。可以说,在演讲中,错误肯定会发生,重要的是如何定位错误以及如何应对错误。面对错误,我们应该抱有坦然接受的态度,要接受不完美的演讲,而不要试图避免错误的发生。因而只有接受这点,才能放松自己,对演进者而言,越放松状态越好。此外,面对观众的态度如何?针对重大错误,可以坦然说明;对于微小错误,可以轻轻跳过,很可能听众都没有感知到。 2.2 情况收集 – 演讲六要素(4W2H)Why:演讲的目的是什么?为什么需要这场技术演讲,目的应该是明确的,这也是整个演讲的核心所在。演讲目的要鲜明,要让听众直观接收到这一信息。不要出现不知所云、稀里糊涂的情况。一个糟糕的演讲总是让我们找不到重点。常见的演讲有以下一些目的: 教育性,例如说明某项技术的使用等。说服性,例如说服领导支持某项决策,寻求资源支持等。引导性,例如说明某产品的最佳实践,引导用户用好产品等。告知性,例如说明某产品的最新技术、最新版本功能等。What:演讲的内容是什么?要围绕上面的目的,组织演讲内容来说明它,这也是考验演讲者能力的地方。尽量采用详实的、有说服力的材料来补充,做到言之有物。往往一些真实案例、踩坑经历、对比方案等,较之空洞的理论,更容易引起大家的共鸣。 Who:演讲的受众是谁?要尽量做到了解受众情况,他们的参与目的、能力水平、接受程度等,这对于演讲者组织材料、演讲手段等均有影响。可通过多种方式,提前了解到这些信息,比如问卷调查、个别走访、之前演讲反馈等。如实在搞不清受众情况,就要反思一下做这场演技的目的是什么了。 Where:演讲的地点在哪里?是公司还是外部演讲?受众的人数有多少?是开放式还是封闭是场所等。 How:如何完成演讲?这是对演讲者的核心考验,你要通过什么方式展示演讲内容,包括演讲结构、辅助工具等。这往往是需要做专门设计的。后面我们还会谈到。 How Long:演讲的时长?演讲会有多久?中间是否有休息?是否有问答环节等。 2.3 方案设计后面是针对演讲方案进行具体设计,这里包括了很多细节问题。 演讲开场开场给人的第一印象很重要,常见方式是说明公司、姓名、职位等。接下来对演讲内容做一个概括性的描述,方便台下听众了解。最重要的是,对听众可以带来什么收获。其目的是聚焦听众注意力,为后面做铺垫。一个好的开场,往往是成功的一半。 内容结构采用什么样的结构来说明,比较典型的是”抛出问题、分析问题、解决问题”的三段式,总的方式上可考虑“总-分-总”的方式。这是比较常规的一些做法,也比较安全。此外对于阶段间的衔接等,也要做好处理。 演讲收尾进入收尾阶段后,此时的要点就是针对重点内容的”反复强调”。对于听众来说,第二天还能记住演讲内容的已经少之又少,因此需要在末尾强调,加深听众记忆。有所谓的“遗忘曲线”,希望能够通过强调,减少流失。 2.4 材料准备材料内容尽量主题清晰、言简意赅。展现形式上,则按照“图>表格>文字”的优先顺序。所谓之,一图胜千言嘛。在具体内容上,建议: 使用图的目的,是将复杂问题简单化,因此要重点突出,不需要表达太多信息。表格展现形式优势在于对比,关键需收集具有说服力的数据。文字上,尽量简洁;一屏最好不要超过50个汉字,让人可以快速定位信息。2.5 演讲技巧把控节奏对于长篇演讲,把控节奏很重要,常常面临两类问题:内容多,时间不够;内容少,提前结束。这两类其实都在于对节奏的把控不够,可通过下面方式解决: 控制好语速。人在紧张是很容易语速加快。一方面可以刻意放慢语速,另一方面可以预留材料,防止”无料可讲”。计划时长。针对每页材料,有大致的评估,需要演讲的内容及时长是多少。必要时,可以把所说文字材料写到备注区。针对计划好的部分,需要反复练习,做到”心中有表”的状态。预留时长。在某些环节,可以预留部分buffer时间。例如某个案例的说明,可视情况来临时决定讲与不讲。这样灵活机动性比较好。应对预案。对于一些意外情况,例如设备故障、临时提问等,打断了原有的节奏,也要把底线留好。哪些内容是必须要讲的,哪些是可以放弃的,留到后面大家自己看的。出现问题时可随机而变。控制语速控制语速,更多的是心态问题。这一点只有通过反复练习,通过各种场合的锻炼来逐步提高对语言的控制力。 如何互动互动是需要专门设计的。其根本目的是在于将平铺直叙的演讲,引入一点意外,提高大家的注意力。这里有多种选择,有些适合使用开放式问题,发散性思维,听取大家的想法;有些适合封闭式问题,主要得到“是与否”即可;有些甚至可以用自问自答的方式,只作为一种过渡。对于互动的要求,一般是比较高的,需要演讲者有较强的控场能力。如感觉不太好控制,不采用也罢。 回答问题一般演讲的末尾,会有问答环节,这也是很多演讲者比较头疼的地方。一方面可能是问题比较刁钻,一方面可能无问题有点冷场。对于第一种情况,可以模糊化回答,只谈自己观点,不谈对与错;或者将问题转化为自己熟悉的问题,即使此时问题有所偏差,一般也不会计较。再或者干脆说明,这一点比较复杂,建议台下沟通。对于第二点,可自备一两个问题,与演进内容比较契合,也就是作为“反复阐述”的一部分,加深大家对演进的记忆。 设计段子可以在演讲中,不定期地插入段子,目的是重新抓回听众注意力。其数量不宜太多,多了就干扰正常演讲内容了,只是在较长描述部分适当点缀,来保证听众的注意力都在自己的身上。 肢体语言知名的传播理论家Albert Mehrabian教授研究出了"7/38/55法则"。他总结,你传递的信息或旁人对你的观感主要取决于三个要素: 实际言语(内容)占7%;语气(说话的语调、声音的抑扬顿挫等)占38%;肢体语言(手势、表情、仪态等)占55%。由此可见,肢体语言在整个演讲中的重要性。这个可以通过排练,把自己的语气、肢体语言形成“记忆”。这样在演讲中,就不容易因为紧张而导致变形。此外,可通过练习回放的功能,反复观察自己的肢体语言,听取他人的建议。 2.6 反复练习技术演讲其实完全不需要什么天赋,完全是个熟练工。所谓“熟练工”,就是反复练习多遍之后,动作顺理成章,不会有任何走样。建议每一遍练习,都要计时;练习完后需要复盘。不断改进,反复排练,直到达到自己比较满意的状态。 三、演讲中期对于精心准备、反复排练后的演讲,在正式演讲中,一般都不会有太大问题,要对自己有充分的信心。此时,更多的是”灵活调整”的能力。需要根据现场观众的反馈来调整自己的语速、内容等。可通过台下的表情、眼神、动作等,观察当前观众对内容的接收程度。对于不感兴趣的部分,可适当做删减、跳过处理。缺少的时间部分,可通过备选的重点内容来补充。 四、演讲结束接受不完美并不代表接受错误,我们要做的是在演讲之后及时复盘、查漏补缺。这可以帮助我们客观的了解自己讲得到底如何,演讲中出了什么差错,哪些地方没有达到自己的预期,然后找出到底是什么原导致你犯了这个错误,是否有方法可以改进,保证下次不会出现一样的失误。 作者:韩锋 首发于公众号《韩锋频道》,欢迎关注。 来源:宜信技术学院

July 9, 2019 · 1 min · jiezi

程序员个人职业发展规划方法论分享持续更新

前言去年毕业的我,加上实习到现在已经工作一年半了,作为一个新人的我在目前这家公司学习到了很多,不管是工作能力上还是技术上,目前在组内可以独立负责多个项目,上个季度刚在绩效考评拿了A(10%),本该踌躇满志的我却感觉到斗志缺失,目前的工作对我来说有点温水煮青蛙。 因为本身就是放弃了保研名额,直接选择的就业,我现阶段的需求就是快速且野蛮地成长。我本人是热衷于微服务、分布式相关的技术学习和实践,想要往这个方向发展,但是目前公司在这方面无法满足我,也缺少在技术方面能领导我、折服我的人。同时为了之后可能存在的职业转型,我需要一个更大的平台,提高我的大局观,扩展我其他的软能力,对之后进一步的职业发展做储备。 人生就如一潭水,主动求变才能把水盘活,所以我花了一个周日的时间,根据SMART原则,对自己的目标进行了明确定位和初期的计划制定。特以此篇文章记录整个过程。 当然就如软件架构一样,整个方法论(实际上暂时就是个计划,还足以成为方法论)肯定不是一成不变的,以结果为导向,不断迭代更新才能得到最适合自己的方法论。 文中涉及到的工具: XMIND幕布chrome 插件 - Marinara(番茄工作法助理)SMART原则SMART原则是目标管理中的一种方法。目标管理的任务是有效地进行成员的组织与目标的制定和控制以达到更好的工作绩效,由管理学大师彼得·杜拉克于1954年首先提出。何为项目管理,就是用现有的资源进行组织调配。达到你想要的结果。SMART原则虽然最早应用于项目管理,但是也同样能应用在个人的目标管理上。因为你的目标就是你的结果,你的时间,你的金钱就是你的现有资源。 那么先来了解一下SMART原则的具体内容。 基于SMART原则,我们需要先思考我们的实践思路,毕竟理论要与实际相结合才有意义。 拿我个人来说,我上周日在制定计划的时候就是早起,吃完早餐后,打开油管上最常听的Relaxing Jazz Music 来帮助集中注意力,按照以下的思路去制定整个目标: 目标的设定这个部分重要的是明确时间点和你要做的事。SMART原则本身是目标已存在的情况下实行的管理方法,如果连自己的目标都不清晰的话,还需要通过更多的思考去想清楚自己的目标是啥。 作为职业发展规划的目标来说,一般人最好是制定一个中期的目标,时间长短在半年至三年内。当然这个取决于个人对自己的职业规划清晰程度。 实际上如果按照项目管理思维来看的,这里还少了验收标准,但是这个验收标准我自己暂时都没想好,或者说这类的目标不好定,反正我就没加进去。 以下是我对目标的设定: 目标的检视与拆解做这一步的目的是为了在事先先认清自己尚且缺少什么能力,并做出合理规划。 我在进行到这一步骤时,会去各大招聘网站上,对类似的目标招聘岗位的招聘要求进行收集整理。然后根据我自己的情况进行子目标分解。 这些可能办到吗?可能有细心看的人会发现,我列举的子目标的时间,已经超过了我目标的截止时间。 一般情况这个时候,应该是要量力而行,更改目标期限或者目标达成条件。 但是我选择了保留现有的学习计划,因为这是一个接近一年的计划,我个人之前并没有对自己的学习效率和时间管理能力进行过具体的评估,换句话来说我不知道我是否可以提前完成这些目标,所以我选择了保留。通过之后的目标记录中的一些工具方法来帮助自己明确自己的完成效率,周期性的迭代,之后可能会调整子目标的优先级,调整目标本身等等。 多说一句,本人在整个子目标明确过后才发现,技术这条路真的只能慢慢走,有时候你看一些公众号分享的年薪50W的学习资料,放在硬盘里好像就那么点,可当你实际上去学习的时候,你会发现原来需要花那么多的时间。看那些招聘要求上,就那么点,如果仔细琢磨一下,需要的知识真的是太多太多,所以尽早计划起来,让你的学习计划更加的有目的性、规划性是很有必要的。在人生其他道路上亦是如此。 目标记录方法 和 学习形式 (参考)这里的方式方法很多,我直接分享我的吧。 配合使用Marinara - 番茄工作法助手,来做专注时间统计和单位时间产出统计;在ONENOTE上做每日总结的时候,加上这个目标进度的相关内容;github 每日学习demo 维护提交每周或者每个 最小 子目标完成之后 写一篇或多篇(针对中间件/框架源码这类)总结性的技术博客;每周日做周总结,根据目标完成度和使用时间,调整下一个阶段的目标;所有的周记录日记录 务必保持 keep it concise to the point固定学习时间段 工作日:上班前的一个小时(提早到公司)下班后的一个半小时结语本文标题特定写了个分享,是因为个人职业发展规划是一个很private的事情。每个人情况不同,没有万能解,也没有共同解。所以这篇旨在分享我在做个人职业规划中的一些心得体会、方法论、思想等。希望能够帮助到可能正在迷惘岔路的你。 另外,本人资历尚浅,也欢迎前辈们给我一些更好的建议。Thanks in Advance.

July 7, 2019 · 1 min · jiezi

DevOps-工程师成长日记系列三版本

原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-part-3-version-76034885a7ab原文作者:Igor Kantor翻译君:CODING 戴维奥普斯“Close-up of a backlit laptop keyboard” by Markus Petritz on Unsplash 快速回顾让我们快速回顾一下前文:简而言之,这个系列文章讲述的是现代 DevOps 的精髓——如何将一个想法尽可能快速地转化上线实现盈利。 具体来说,在第一部分的文章中,我们了解了 DevOps 文化和目标;在第二部分的文章中,我们讲述了如何使用 Terraform 为之后的代码部署奠定基础。因此在本文中,我们将会讨论如何防止这些代码在运行中失去控制(we will discuss how to keep all these pieces of code from completely going haywire all over the place. ),同时还将讨论如何使用 git 来构建和推广你自己的个人品牌。 如图所示,我们现在在 DevOps 旅程的这个位置: DevOps Journey 为什么要进行版本控制当我们谈论"版本控制"时我们在谈论什么? 假设你正在开发一款软件,并且在不断的根据需求修改代码,添加或移除某些功能,那么最近的一次更新通常会是一次“突破性的”更新。换言之,不管你上次更新了什么内容,都打破了之前所做的工作。 现在要怎么做? 如果你真的比较老派,那么你可能更倾向于这样命名你的第一个文件: awesome_code.pl接着你开始做一些修改,同时需要保留有效的内容以防可能需要回退。因此,您将文件重命名为: awesome_code.12.25.2018.pl这样看起来运行得不错,直到你开始在一天内进行多次更改,最终可能会得到这样的文件名: awesome_code.GOOD.12.25.2018.pl当然,在专业的开发环境中,你有多个团队在同一代码库上协作,这将进一步打破这个模型。 毋庸置疑,这条疯狂的火车将快速脱轨。 源代码控制源代码控制:一种将文件保存在集中位置的方法,多个团队可以在一个公共代码库上协同工作。 这并不是个新方法,我能找到的最早提到源代码控制的内容可以追溯到 1972 年,因此将代码集中在一个地方管理的想法肯定是陈旧的。相对较新的方法是所有构建产物都必须版本化,这意味着所有与生产环境相关的内容都必须进行版本控制,能被追踪、审查并且保留历史记录。 此外,强制“所有产品必须版本化”实际上也是迫使你以“自动化优先”的思维方式处理问题。例如,当你决定在你的 Dev AWS 开发环境中通过单击解决复杂问题时,你可以暂停并思考一下,“所有这些都是能以单击实现版本化构建吗?” 答案当然是否定的。虽然可以通过 UI 的快速原型查看是否有效,但这些尝试一定不是长久之计。从长远来看,请确保你使用 Terraform 或其他基础架构作为代码工具来执行所有操作。 ...

June 19, 2019 · 1 min · jiezi

DevOps-工程师成长日记系列二配置

原文地址:https://medium.com/@devfire/h...原文作者:Igor Kantor翻译君:CODING 戴维奥普斯前情提要在第一篇文章中,我对 DevOps 工程师的工作定义是搭建一个数字化的全自动流水线来高效地将代码从编写环节部署到生产环境中:《DevOps 工程师成长日记系列一:必备知识与技能组合》。 但是高效地完成这项工作首先需要有一定的基础,如下图: 同时还要对各类工具和使用这些工具所需的技能有所了解,才能做到事半功倍。 温馨提示:我们的目标是快速地学习下图中蓝色部分的内容,按从左到右的顺序,然后开始学习紫色的部分,同样是从左到右。整个流程分为六个模块,顺利的话每个月完成一个模块的学习,刚好六个月学完。 在这篇文章中我们会 cover 整个流水线中的第一部分:配置(Configure)。 综述所以在配置阶段到底是要我们做什么呢? 简而言之,就是我们写的代码需要跑在服务器上,在配置阶段我们所要做的就是在服务器上搭建适合我们的代码运行的基础环境。 在过去配置基础环境的过程是一个及其冗长、到处是坑、重复性高的痛苦经历。 现在由于我们拥有了云服务器这种高级服务,所有的基础环境设置都可以通过点击完成,当然有时候可能需要很多次点击。 但是,我们发现通过点击来实现配置环境也不是一个好主意,因为同样的问题仍然存在: 还是到处是坑(human error 无法避免)没法控制版本(点击没办法存储在 git 里)重复性高(更多的机器 = 更多次的点击)同时还没法测试(完全黑箱,不知道点击后会不会把所有东西弄乱)想象一下,当你需要给你的 dev 环境、QA 环境、Staging 环境和各个地区不同的生产环境做配置时所需的工作量,而且这项工作很快就会变得非常烦人和冗长。 所以我们就需要一种新的方式来完成这个工作,而这个新的解决方案就是 “基础设施即代码(Infrastructure as Code)“ 这也是本文关于 DevOps 中配置环节的重点。 基础设施即代码(Infrastructure as Code)的最佳实践即所有归为计算资源编排工具类的工作都必须使用代码来完成。这里的计算资源指的是为了让代码跑起来所需要的一切,比如:服务器、存储、网络、数据库等等。 此外,这意味着我们部署基础设施的方式从各种点击变为: 在 Terraform 中编写所需的基础架构状态将其存储在我们的源代码版本控制中通过正式的 Pull Request 流程征求反馈测试一下配置通过执行代码来配置所需的资源为什么选用 Terraform 而不是其他的呢? 你现在可能会问为什么要选用 Terraform 而不是 Chef 或者 Puppet 或者 Ansible 或者 CFEngine 或者 Salt 或者其他什么呢? 好问题,而且这个问题已经在各个社区翻来覆去讨论过无数遍了,简而言之,我认为你应该学习 Terraform 有以下原因: ...

June 19, 2019 · 1 min · jiezi

DevOps-工程师成长日记系列一必备知识与技能组合

原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737原文作者:Igor Kantor翻译君:CODING 戴维奥普斯写在前面据 StackOverflow 2019 开发者调研结果公布:DevOps 专家的薪水仅次于研发管理者以及 SRE,位居第三: 数据来源:https://insights.stackoverflo... 从 DevOps 专家的热门度来看,越来越多的企业意识到需要将 DevOps 从口头落地到日常研发流程中,实实在在给企业带来研发效能上的收益。在这场无声变革当中,专业的 DevOps 工程师必不可少。CODING 针对想要从事 DevOps 相关岗位的开发者精心策划了 DevOps 工程师成长日记系列,希望这系列文章能够给相关同学带来学习路径上的启发。接下来让我们进入到翻译内容的正文: 目标读者你是否正在寻找一条 DevOps 转型的快速之道?你是否是一个受过传统训练的运维人员并且想要体验 DevOps 领域的相关内容?或者你已经学习了一段时间相关技术,现在只是想要寻找职业上的转变但不知从何下手。如果属于上述情况的话,就继续往下阅读吧,接下来让我们一起看看如何在六个月内成为一名中级 DevOps 工程师。如果你已经从事多年 DevOps 相关工作,也仍然在寻找关于 DevOps 工程师的有效认可方式,那么你也是该系列文章的目标读者。 DevOps 工程师新定义什么是 DevOps关于它的定义与由来你可以 Google 到各种前沿理论,但是大部分的解释都是长篇大论,让人喘不过气来。看看我会怎么做——我会帮你节省鼠标的点击次数并且把关键信息摘出来:DevOps 是一种研发团队同甘共苦、患难与共交付软件的方式。 定义就是这么简单,但它意味着什么?这意味着,传统意义上的开发人员(编写软件的人)的目标与运维人员(运行软件的人)的目标大不相同。例如,作为一名开发人员,我希望尽可能快速地开发更多的新特性。毕竟,这是我的工作并且是客户需要的。然而,如果我是一名运维人员,我就会希望新特性越少越好。因为每一个新特性都意味着新的变更,而变更就意味着风险。由于这种目标错位,DevOps 诞生了。 “系统工程师 2.0”DevOps 尝试将开发和运维融进一个研发小团队里,由这个小团队共同承担开发、部署、努力创造软件收入的痛苦、责任(相反也可能是奖励)。现在,纯粹主义者会告诉你没有 DevOps 工程师这样的职位,“DevOps 是一种文化,不是一种角色”, 他们会这么说。好吧,在技术上他们说的是正确的(最糟糕的那种“正确”)。但是正如经常发生的那样,这个术语已经超越其原始含义。 现在,成为 DevOps 工程师就像“系统工程师 2.0”。换句话说,DevOps 工程师了解软件开发生命周期,并通过软件工程工具和流程解决传统运维挑战。DevOps 最终意味着建立一个数字流水线:从开发者的笔记本中获取代码直至产生收益的全过程。 作为一个职业选择,公司给 DevOps 相关岗位的薪资待遇都相当不错,几乎每家公司推行 DevOps 时都这样做或声称这样做。无论哪里的公司,DevOps 相关的工作机会都很丰富,它依然会是未来几年内有趣且有意义的工作岗位。温馨提示:要警惕那些声称招聘DevOps 团队”或“DevOps 部门”的公司。严格来说 DevOps 终究是关于文化和交付软件的方式,而不是配备新的团队或部门。 免责声明现在,让我们把肥宅快乐水放在一边,考虑以下几点:你听过这句古老的格言吗 ——“世上没有初级的 DevOps 工程师。” 它其实是 Reddit 和 StackOverflow 上的流行比喻。这意味着需要多年的经验,结合对工具的扎实理解,才能最终成为真正有效的高级 DevOps 从业者。遗憾的是,没有捷径可行。因此,这篇文章不是 DevOps 伪装指南。我不认为存在能够假装成一位具有几个月经验的高级 DevOps 工程师的方法;或者在几个月中掌握原本需要数年才能精通的快速变化的工具,和对方法的深刻理解,并且这些问题目前还没有完全解决。然而,大多数公司都使用大同小异的(或者主流的)工具和概念菜单,这些就是文章的主要内容。工具与技能不同,因此在学习工具时,请确保不要忽视自己的技能(面试,网络,书面沟通,故障排除等)。最重要的是,不要忘记我们追求的目标——建立一个全自动的数字化流水线,将创意转化为创收。 ...

June 13, 2019 · 1 min · jiezi

ES6项目小练习TodoList15

ES6技术本身非常容易,相信大家也体会到了。各种新特性都不难,但是为什么很多人学习起来困难呢? 其实ES6难的不是技术,而是实际工作环境的搭建。比如我们想写一个简单的ES6版本的TodoList. 很多同学学生是这么放弃的: 通过搜索引擎,发现很多教程都是直接引入Traceur.js 然后讲解ES6各种功能和语法的,但是好像实际并不是直接引入Traceur.js ,而是用babel。 使用babel的话好像需要安装node.js,还有会用npm 安装好npm 以后我是该使用gulp还是webpack呢? 嗯,应该webpack吧,这个好像目前更主流。好,就选它了。 webpack怎么安装?是不是需要webpack-cli?另外webpack 4.0好像更好用,但是好像安装又有兼容性问题? 纠结ing…… 考虑了半天后,终于下定决心,就用最新版本,学老的没用。 安装好webpack 4.0,对了是不是要配置工作流? 对配置吧,这才是“工作的方式”,js需要压缩,装个压缩插件,webpack怎么用啊?有各种rule,plugins,还有entry. 开始头疼,耐着性子把网上的教程配置完,这个插件怎么报错了啊? 继续查,原来是webpack 4.0和它不兼容,换webpack 3.0还是换插件? 纠结半天后,终于鼓起勇气,换插件! 又配置出错了…… 开始进入暴走模式,又气又恼。 好吧,折腾半天,请教大牛总算通过了。 那么问题来了,学了这么久css和js,我居然不知道往哪里写css…… 好吧,听说得用sass…… 配置完了,sass语法不会…… 我就想写一个ES6的todoList,太费劲了,咋得学这么东西啊…… 还是放弃吧,我感觉我不适合做前端。 虽然夸张了些,但是大部分前端都有类似的经历。 今天我就让大家彻底的学会如何工作中写ES6,我们依然用todoList举例,对了我们并不需要学习webpack,sass,插件等等。我们只学习ES6,对其它的统统不用学,你会用就可以,也不过几个命令而已。 ok,我们开始。 首先,拿到我配置好的工作流,直接在根目录下进入命令行,然后 npm install安装完成后,使用 npm run dev然后就可以用了, 就这几个文件,对应写html,js和css。 首先我们先写 html文件 。 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"> <title>TODOList</title></head><body> <div class="container"> <div class="item-area"> <h1 class="title">TODO-LIST</h1> <ul class="item"> <li class="item-li-default">输入任务...</li> </ul> </div> <div class="input-area"> <form class="add-item"> <input maxlength="15" type="text" name="item" placeholder="待办事件..." class="add-text" required> <input type="submit" value="+ 添加" class="add-button"> </form> </div> </div></body></html>接着,写css美化一下 * { padding: 0; margin: 0; } li { list-style: none; } html { display: flex; justify-content: center; align-items: center; text-align: center; min-height: 100vh; box-sizing: border-box; font-family: Futura, "Trebuchet MS", Arial, sans-serif; background: #ffc600; } svg { fill: #fff; background: rgba(0,0,0,0.1); padding: 20px; border-radius: 50%; width: 100px; margin-bottom: 50px; } .container { padding: 20px; max-width: 350px; box-shadow: 0 0 0 10px rgba(0,0,0,0.1); background: #fff; } .container .item-area .title { text-align: center; margin: 10px 0; color: #aaa; font-weight: 200; } .container .item-area .item { background: #fff; border-radius: 4px; } .container .item-area .item .item-li-default { color: #46b7b9; } .container .item-area .item .item-li { width: 100%; border-bottom: 1px solid #eee; height: 30px; line-height: 30px; text-align: left; color: #f95959; } .container .item-area .item .item-li .delete-item { float: right; outline: none; width: 44px; height: 26px; border-radius: 4px; color: #f05941; background: #fafafa; } .container .item-area .item .item-li input:checked + .item-text { color: #196b69; text-decoration: line-through; } .container .input-area { padding-top: 10px; } .container .input-area .add-text { outline: 0; border: 1px solid rgba(0,0,0,0.1); height: 40px; border-radius: 4px; text-indent: 10px; } .container .input-area .add-button { outline: 0; height: 40px; border-radius: 4px; width: 60px; padding: 4px; background-color: #fff; border: 1px solid rgba(0,0,0,0.1); }ok,使用 ...

May 21, 2019 · 3 min · jiezi

ES6面试常见ES6问题集锦14

通过对ES6系列文章的学习,相信大家对ES6已结有一定程度的了解。 所以本节的目的在于通过测试,便于让大家了解在学习中的知识掌握情况,查缺补漏,一步一个脚印。 1、选择题 1.1 下面不属于关键字let的特点的是:( ) A、只在 let 命令所在的代码块内有效 B、会产生变量提升现象 C、同一个作用域,不能重复声明同一个变量 D、不能在函数内部重新声明参数 答案:B 解析:使用var关键字才会产生变量提升的现象。关键字let不会产生变量提升现象,所以必须先声明定义后使用,否则程序抛出异常。 1.2 关于定义常量的关键字const,定义一个Object对象{“name”:”Jack”},再对属性name 的值进行修改,如:obj.name = “John”。下列说法正确的:() A、修改常量,程序跑出异常 B、程序不抛出异常,修改无效 C、修改成功,name的值为John D、程序不抛出异常,name的值为undefined 答案:C 解析:用const来声明一个对象类型的常量,就是传址赋值。而不可修改的是对象在内存中的地址,而不是对象本身。所以修改name并不是修改对象的内存地址,所以可以成功修改。 1.3 在对象的解构赋值中,var {a,b,c} = { “c”:10, ”b”:9, ”a”:8 } 结果中,a、b、c的值分别是:() A、10 9 8 B、8 9 10 C、undefined 9 undefined D、null 9 null 答案:B 解析:对象的解构赋值不会受到属性的排列次序影响。 1.4 关于模板字符串,下列说法不正确的是:() A、使用反引号标识 B、插入变量的时候使用${ } C、所有的空格和缩进都会被保留在输出中 D、${ }中的表达式不能是函数的调用 答案:D 解析:${ }中可以放任意的JavaScript表达式,包括运算表达式、对象属性、函数调用等。 1.5 关于字符串扩展的新函数,下面描述错误的是:() A、includes函数用于判断字符串中是否含有指定的子字符串 B、repeat函数将目标字符串重复N次,目标字符串被修改 C、startsWidth函数判断指定的子字符串是否出现在目标字符串头部位置 D、endWidth函数判断指定的子字符串是否出现在目标字符串尾部位置 答案:B 解析:repeat函数将目标字符串重复N次,会返回一个新的字符串,不影响目标字符串。 1.6 数组扩展的fill( )函数,[1,2,3].fill(4)的结果是:() ...

May 18, 2019 · 2 min · jiezi

为什么许多程序员和设计师更喜欢用MAC而不是windows

MAC、windows和Linux谁更好已经成为了一个“千古难题”,就像从前的梗,“PHP是世界上最好的语言”一样,三大操作系统的用户各执一词,谁也不能说服谁。当然Linux用户趋向和其他两种用户完全不同,对于程序员、极客、专业人士而言更为友好,但对于普通用户来说门槛太高且实用性不佳,所以Linux及其忠实用户大多数时间也都是不与世俗争长短的状态,所以今天我们就来说说剩下的两个系统,MAC和Windows。 说到这两个操作系统,想必各位看官老爷都不陌生,一个是苹果PC产品搭载的桌面操作系统,另一个则是微软出品、陪伴我们二十余年的大众桌面操作系统,二者之间的争斗也从windows诞生就开始,一直持续了二十年余之久,大多数用户都会选择Windows作为自己的主要使用系统,但也有一部分程序员和设计师在使用windows的同时也在使用MAC系统,并且使用mac的场景往往是工作的时候,也就是用MAC作为生产工具,这是为什么呢? 首先我们来普及一下MAC和Windows的软件管理机制。Windows在安装软件的时候,我们都非常清楚安装过程中要写入注册表,这个原因是Windows的软件安装模式是先将安装包解压到指定位置,然后通过注册表写入来给这些文件赋予“身份证”,也就是该软件允许在本台电脑中获得权限并使用的权利,Windows也会记住这个软件,这样的安装方式是从win98年代就有的,机制也一直没有变化,优势在于这样的方式兼容性要更好,同时单个程序能够实现的功能也更多;但换来这些的同时也因为大量的文件分布在文件夹中,运行软件时多个文件同时运作,导致线程占用和资源占用更大,而失去了绝对稳定的运行效率。 MAC的软件管理机制可以简称为“沙箱”机制。在MAC软件安装中,所有的软件都是一个独立的程序文件,安装时没有任何解压、写入的步骤,将整个文件拖入application就可以直接使用,而在需要卸载的时候把该文件直接删除就可以了,这样做带来的好处是软件运行的稳定性极佳,同时软件因为封装紧密,不会出现文件损坏等特殊情况,所以MAC作为生产工具来说是一个非常可靠的选择;但这样的做法同样也有问题,那就是由于单一文件运行软件的机制在部分多平台的软件中无法实现全部功能移植,所以相对windows 的软件功能可能会略少。 然后我们再来说一下MAC和windows的防病毒能力。这个单独拿出来说对Windows似乎有些不公平,但事实上这确实是MAC非常大的优点。Windows因为每个程序能够获得的权限几乎是纯粹看用户想不想给予它权限,从软件权限获取难度上来看Windows是非常松散的,毕竟从最开始的系统设定上就是这样,虽然从vista开始加入了管理员运行这样的通道,以保证平时状态下不给予软件重要的权限,但相比MAC来说还是不够严谨。 MAC强悍的防病毒能力有两方面,第一方面MAC系统给予软件的权限并不多,用过IOS的人应该都清楚,在IOS 8之前苹果是没有第三方输入法的,原因就是对软件的权限审核非常严格,MAC也一样,甚至在某些软件上更夸张,什么类型的软件只能获得这类软件基本的权限,所以病毒、流氓软件根本不够格拿到权限,也就没法干坏事;当然还有第二点,那就是MAC在全球市场范围内的份额太小,windows才是主流,病毒肯定会针对市场大且相对而言更好下手的windows制作,所以MAC很少受到病毒困扰,就是因为MAC这块石头“又臭又硬”。 最后是MAC的文件管理机制。相比Windows混乱的文件管理机制,MAC因为文件管理内核和格式都要成熟许多,且在多年前就已经开始使用固态硬盘,所以文件碎片要比Windows少了许多;同时MAC的文件管理模式并没有像Windows一样给用户提供一个专门的资源管理器来让用户到处翻找文件,它系统的设定在最开始就不需要用户对硬盘进行分区,而事实证明MAC的文件稳定程度、磁盘格式的出色使得MAC根本不需要分区。 其实对于MAC比Windows更适合做创作类生产工具还有许多原因,例如MAC独占专业软件更好用云云,因为篇幅限制只能够简单概括,大家还知道哪些原因可以在评论区说出来哦。**写在最后程序员小伙伴们可以关注我一波,以后带来更精彩的**

April 28, 2019 · 1 min · jiezi

程序员,你该为自己加薪 -- 用钱生钱,从掌握金钱的规律开始

“如果你没找到一个当你睡觉时还能挣钱的方法,你将工作到死。” ——巴菲特上图是北京早上 8 点钟挤地铁上班的人们。不知图上有没有你的缩写。前言唯金钱与技术不可辜负。作为智商比较高的程序员,这么难的程序都能学会,投资理财就更不用说啦。金钱是有规律的,只要掌握了一定的规律,虽说不能一夜暴富,但是把掌握的规律用于生活中,至少是可以让挣钱变得轻松一些。不知道他们有没有想过:生活中,单靠增加工时获得的收入永远无法让你摆脱贫穷。用青春来换钱的交易也绝对不可取。绝大多数的人,都是非常勤奋的,不然也不能坚持每天定时去上班,但又是懒惰的,从来没有想过学习掌握金钱的规律。要点最近笔者在看作者博多·令费尔写的一篇小作《小狗钱钱》,这本《小狗钱钱》是根据作者根据他写的《财务自由之路》,把其中的方法与策略编成这么一个小故事的。《小狗钱钱》讲的是一个 11 岁的小女孩捡到一条会说人话的狗(名为 钱钱),然后钱钱教会了这个小女孩与钱打交道的方法,怎样理解钱与一步步轻松地挣钱,最后小姑娘不仅自己掌提了钱的使用方法,而且还帮助自己的父母走出了财务危机的故事。看完这篇小作,做点笔记与写自己下看完后的一些感悟。里面讲到一个故事:“从前有一个农家小伙儿,他每天的愿望就是从鹅笼里拣一个鹅蛋当早饭。有一天,他竟然在鹅笼里发现了一只金蛋。一开始他当然不敢相信自己的眼睛。他想,也许是有人在捉弄他。为了谨慎起见,他把金蛋拿去让金匠辨别,可是金匠向他保证说,这只蛋完完全全是金子铸成的。于是,这个农家小伙儿就卖了这只金蛋,举行了一个盛大的庆祝会。”“第二天清晨,他起了一个大早,赶到鹅笼里一看,那里果真又放着一个金蛋,这样的情况延续了好几天。可是这个农家小伙儿是一个贪婪的人,他抱怨自己的鹅,因为鹅没法向他解释是怎么下出这个蛋的,否则他也许自己就可以制造金蛋了。他还气乎乎地想,这只懒惰的鹅每天至少应该下两只金蛋。他觉得现在这样的速度太慢了。他的怒火越来越大,最后,他终于怒不可遏地把鹅揪出笼子劈成了两半。自那以后,他再也得不到金蛋了。”假如我没有了我的“鹅”,我就总是得为了赚钱而工作,但是一旦我有了属于自己的“鹅”,我的钱就会自动为我工作了。金钱有一些秘密和规律,要想了解这些秘密和规律,前提条件是,你自己必须真的有这个愿望。必须真的有这个愿望的意义在于,如果足够的动力,没有足够的决心去做某些事情,终究很难成事。如果你只是带着试试看的心态,那么你最后只会以失败而告终,你会一事无成。尝试纯粹是一种借口,你还没有做,就已经给自己想好退路了。不能试验。你只有两个选择: 做,或者不做。你是否能挣到钱,最关键的因素并不在于你是不是有一个好点子。你有多聪明也不是主要原因,决定因素是你的自信程度。 一个人把精力集中在自己所能做的,知道的和拥有的东西上的那一天起,他的成功就已经拉开了序幕。你最好想清楚,你喜欢做什么,然后再考虑你怎么用它来挣钱。你要每天不间断地去做对称的未来意义重大的事情。你为此花费的时间不会超过 10 分钟,但是就是这 10 分钟会让一切变得不同。当你定下了大目标的时候,就意味着你必须付付出比别人多得多的努力。公式72 定理: 用 72 除以你们投资的年收益率的百分比, 得出的数字就是这笔钱翻一倍所要的年数。72 小时规定: 当你决定做一件事情的时候,你必须在 72 小时之内完成它,否则你很可能 就永远不会再做了。72 公式 也可以用来帮助我们计算通货膨胀。它可以告诉我们,在一定通货膨胀率下,我们的钱在多长时间后会贬值一半。我上网查了一下,我国目前的通货膨胀率大概是 3% ,用 72 除以 3% ,得到 24,就是说 24 年以后,你的钱只值现在的一半。”买基金为自己加薪学习一门技能时,尽量选择积累性很强的技能,随着时间的推移,这个技能越来越厉害,那这个技能就很值得去学习。毫无疑问,投资理财,这个技能积累性就很强,最重要的是,这个技能适用于任何人、任何行业,因为投资理财 的本质,是用钱来帮你赚钱,这是最高级别的赚钱方式,除非你不想赚钱,否则每个想赚钱的人,都该重视投资理财。越是有钱人,越是懂得投资理财。银行一年期定存利率大概是 1.5% 左右,而这利率是跑不赢通货膨胀的。一般的年轻人都是把钱放到一些收益稍高一点的理财产品里面,比如:余额宝、微信理财通里。但这也只是比银行还是要好一点而已。定投十年挣十倍。我建议年轻人应该把部分钱(除去这部分钱,不会对你的生活产生任何影响的,比如你每月工资的 5% - 10% )用来买基金比较好,通过 买基金为自己加薪,每月定投。当然买基金也是有风险的,建议是了解基金之后再买。往后的时间里面,笔者会读更多关于挣钱的书箱,对买基金的策略有了更深的了解后,会再分享。本质在笔者看来,故事里面的小姑娘,在后期可以轻松获取金钱的本质:改变了自己。这和《大学》里面说的:“修身、齐家、治国、平天下” 的道理是一样的, 一切从改变自身做起。最后如果想获取更多的财富,就从读如何实现财富自由类的书籍开始吧,从书中获取金钱的规律,从而使自己获取财富变得更轻松一些。最后送上笔者目前支付宝上的理财收益图,收益中的 99.9% 都是买基金得到的。愿你我都能如下图:欢迎关注以下公众号,学到不一样的 武功秘籍 !关注公众号并回复 福利 可领取免费学习资料,福利详情请猛戳: 免费资源获取–Python、Java、Linux、Go、node、vue、react、javaScript

April 9, 2019 · 1 min · jiezi

资深技术布道师的 5 个秘密武器

技术布道师的日常对于程序员来说,摆在面前的职业道路选择很多,不仅限于向管理岗位或技术专家的方向发展。近年来,技术布道师也成为了开发者们的新选择,很多经验老道的程序员都或多或少地承担起了布道师的工作。技术布道师主要指既拥有丰富项目经验,同时也有极强沟通技巧的人。他们可能是:大厂技术专家、知名博主/大 V、技术会议组织者甚至是艺术家,不同背景的人都能在这个职位上取得成功。技术布道师在国内是一个新兴职位,本文通过与 15 位国外技术布道师的访谈,介绍他们的工作日常,揭开技术布道师这一职位的神秘面纱。Microsoft Azure 技术布道师虚拟形象(小浣熊干脆面)对技术布道师最主要的误解@Alex Lakatos就职于Nexmo,JavaScript 布道师人们总是觉得我们唯一的工作就是到世界各地参加会议+吃喝玩乐。但是很少有人能理解对于我们来说,不同的城市仅仅意味着不同的机场、酒店和会场而已。台上一分钟,台下十年功,每次演讲都需要花大量的时间来进行准备,而且经常出差还需要适应在飞机、火车这类交通工具上工作——我到现在都还没学会在汽车上办公: )@Don Goodman-Wilson就职于 GitHub 的 EMEA 布道师就布道师这个职业来说,其实对技术水平的要求没有那么苛刻,相对的,与人沟通的技巧才是最重要的。我认为,只要你的技术水平足以让你应对各类可能会被问到的问题就行了。大家总认为成为一个布道师,意味着要在技术圈作为摇滚巨星出道才行,我觉得这完全是误解。我最喜欢招有教师经验的人来做这份工作。在我看来,一个有高中教师经验的人会比一个资深的程序员更适合,因为我就是教师出身,不过同时还有超过 20 年的编程经验而已。布道师的日常工作@Ihor DvoretskyiCloud Native Computing Foundation (CNCF),技术布道师CNCF 是一个非盈利、以开源社区为中心的组织,拥有现在世界上增长速度最快的开源项目,比如:Kubernetes, Prometheus, Envoy, Helm 等。在这样的背景下,我的主要工作是为社区管理项目和进行技术布道。布道师方面,我主要是通过演讲和博客的形式帮助宣传 CNCF 的项目(主要为 Kubernetes 和 Helm)同时也会为 CNCF 生态中的其他项目站台。在这之外,CNCF 有很多社区自发组织的技术小馆、技术大使等项目,再者 CNCF 也是 Google 的 Summer of Code 项目的合作伙伴,我也会协助执行这些项目。对于我这种对开源项目有极大热情的人来说,能在一个以开源社区为中心的组织当一名技术布道师,是很幸福的一份工作。@Amara Grahan就职于 IBM 的技术布道师我会写很多技术相关的内容(教程、博客、经验分享等),同时也会牵头一些 workshop 和讲座。个别情况下我还会参加一些售前会议,跟研发团队一起为客户展示如何最高效地使用 IBM Cloud/ Watson API 的服务。这些工作的目的是收集外部各个社区的声音,然后归纳整理反馈给我们的研发团队,来确保现在的研发方向是正确的。@David Needham就职于 Pantheon 的技术布道师对于我来说,我的大部分精力是放在培训和教育上的,同时我也是 Drupal 和 WordPress 社区的贡献者。我觉得我们推出的项目,比如 Pantheon for Trainers(免费的教育培训)和 Getting Started with Drupal 8(线上和线下结合的课程),对于关注这个领域的工程师来说都非常有意义。Pantheon 对开发者关系的要求就是要能真正理解社区的需求,为了做到这点,我们秉持着从群众中来到群众中去的原则,会志愿参加各式编程夏令营和会议,除了做命题演讲之外,有时我们也会做一般性的支持工作,比如会场清理等等。对我来说,技术布道师是一份完美的工作。我能分享我学到的东西,力所能及地为社区做出贡献,然后还能在第一时间感受到这些努力带来的变化。什么样的人能做好这份工作呢?@Jlsh DzielakDeveloperMode 联合创始人,前 Algolia 开发者关系负责人一个享受同时使用左脑和右脑的人。技术布道师其实是代码和写代码的人之间的桥梁,所以对于他们来说必须要能很好地理解桥的两头。我见过的优秀布道师都具有一种与生俱来的、乐于助人的意识,即使很多时候解决的问题与自家公司的产品无关;而且很多布道师其实都在凭一己之力开拓新的领域,所以我认为拥有企业家精神和无限的求知欲是成为优秀布道师的两个重要品质。@Zan Markan就职于 Pusher,技术布道师拥有主观能动性的工程师,同时还要能热爱社区这种形式和与人打交道。我觉得技术布道师一般都是喜欢分享知识,帮助其他人进阶的人。当然不同公司、组织甚至团队对于技术布道师的角色和职责都有不同的定义,提前确保个人对职位的理解和发展方向是否契合公司的需要,也是成功的关键。@Nicolas Grenié就职于 Typeform,技术布道师在技术布道师这个职位刚刚出现的时候,很多公司主要是在找一个什么都能做的人。随着近两年的发展,这个职位逐渐有了不同的细分模块,有的人可能更专注于社区方向,有的人可能在内容产出方面更加专业,也有人专注于写代码。在我看来作为技术布道师最重要的是要有好奇心,要能聆听用户的故事,乐于认识新朋友同时还要喜欢尝试新事物。谦虚也是布道师应有的品质,还要能站在其他人的角度考虑问题。并不是说外向的人才能成为好的技术布道师,喜欢安静产出内容的人同样能把这件事做好,甚至我觉得我们中的大部分人都是内向型的。你是如何成为一名布道师的,对正在观望这个职位的朋友的建议?@David G. Simmons就职于 InfluxData,资深技术布道师大概 25 年前我就成为了一名技术布道师,主要是因为做一名全职的工程师比较无聊,所以我想出去多跟人交流。对于那些希望成为布道师的人来说,我觉得要多多练习与人沟通的技巧,用“说人话”的方式让对方理解你做的事情。不要因为麻烦就回避交流,应该去尝试用更有趣的方式来解释问题,同时要学会聆听,花时间去了解其他工程师们在说什么。@Lorna Mitchell就职于 Nexmo,资深技术布道师作为一名软件工程师,我很喜欢没事儿写写博客,同时我还会去各种大会做演讲,还写了几本书。成为一名布道师仅仅是因为这个职位能支持我做这些我喜欢做的事情!对于所有工程师来说,能够走出去,融入社区都是很重要的,而且也是有回报的。@Tim Falls就职于 DigitalOcean,开发者关系负责人我当布道师的经历还是挺意外的。最开始我在 SendGrid 当工程师,当时我在 Twilio 的朋友 John Sheehan 刚好准备推出布道师项目,跟他聊天的过程中我意识到我们两家公司的商业目标是一致的,都是用更好的服务来吸引开发者群体,于是一拍即合,我们开始合作发展双方的布道师项目,直到取得了如今的成果。建议:如果你对布道师或者开发者关系感兴趣,那么最简单的方式就是立刻开始尝试。千里之行始于足下,从现在开始主动为公司的产品代言,去参与到那些你感兴趣的技术社区中,产出有价值的内容,逐步开始在开发者群体中塑造个人品牌。如果现在你所在的不是技术性公司,没有产品去布道,你也可以在市面上选一款感兴趣的产品,然后融入相关的技术社区,和社区中的成员互动,写写博客,做相关的主题演讲。一分耕耘一分收获,你终会获得相应的回报。@Shawn swyx Wang就职于 Netlify,技术布道师/用户体验工程师2017 年我定下了一个新年目标,全力专注于前端开发并逐步尝试对社区做出贡献。我把之前所用到的编程技巧和知识都重新打包成了一系列博客文章、cheatsheets 和一些主题演讲,这些内容帮我在前端技术圈建立了一些影响力,也渐渐开始接触到更多圈内人。对于我来说,这些工作让我能在大厂里拧螺丝钉之余,增长见识,搭建人脉和塑造个人品牌,同时还能回馈社区。成为布道师本来只是我的一个职业发展经历,结果当我开始之后,发现原来很多老板也很需要有人说”人话“,给他们展示 demo 和站在用户的角度理解问题。@Chloe Condon就职于微软,技术布道师我是表演系毕业的,最开始白天在一家科技公司做行政,晚上和周末偶尔会接一些音乐剧的角色,后来慢慢开始接触代码。机缘巧合下参加了一个女性程序员专属的训练营活动叫 Hackbright,成为布道师的契机发生在活动最后,在面对潜在雇主展示成果时,虽然参加活动的很多女性都有很强的技术背景,但她们大多都不善于做主题演讲。当我发现技术布道师也可以作为职业的时候,就觉得这应该是我的菜。你可能不太相信,但是真的只有部分人可以玩转技术圈的内容创作/演讲/教学/没事儿写写微博/理解开发者等等事务。我的舞台经验成为我的秘密武器,让我在会议、市场活动和人际交往中能游刃有余。我把布道师的每一项工作都当作是一次演出。我觉得有时大家会忘记程序员也是人,也有感情需求,也喜欢幽默、喜欢笑,我能给出的建议就是要 think out of the box。对于我来说,我会组织带有主题的活动,在活动上提供有趣的食物、带大家唱歌并穿上巨大的松鼠布偶服。对比传统的大家都严肃的坐在一起,吃着冷掉的披萨的活动,这种推陈出新的活动可能更容易让人接受。所以要活用你的背景和经验去思考如何更好的布道。结语在国内,技术布道师才刚刚起步,但无疑会成为技术型公司的重要职位之一,来帮助社区的搭建和活跃,完善公司的品牌形象。同时成为一名布道师的过程也是个人品牌搭建的过程,无论对于公司还是个人来说,都能增加重要的无形资产。期待国内能涌现出越来越多的优秀技术布道师!原文链接:https://www.keyvalues.com/blog/what-exactly-do-developer-advocates-do ...

March 18, 2019 · 1 min · jiezi

从国企到互联网,一个六年程序员的「得」与「失」

程序员,六年,四段工作经历,这也许是一份会被很多 HR 刷掉的简历。从学生时代至今,我经历了两次大的方向转型和一次大的技术转型:从偏理论推导的数学科学到重工程实践的计算机学科,从「安稳固化」的国企到「活跃求变」的互联网;从「人人为我」的客户端到「我为人人」的服务端技术转型。回看自己的经历,在方向选择上,我是后知后觉的。在 PC 时代即将谢幕时入场,完美地错过移动互联网时代的红利期/窗口期;技术选型上,我是「愚钝」的。一头扎进学习曲线最为漫长的 C++,又投入 Windows 封闭生态环境的怀抱,转型服务端之初「逆趋势」地被选择了「世界上最好的语言」(PHP)。然而从硬币的另一面来说,我是幸运的。丰富的经历自不必多说,在这个过程中,我也初步丰富和完善了知识结构。虽不健壮,却也雁过留痕。年岁渐长,我愈发感受到总结的必要性和重要性。这篇文章远谈不上什么感悟或是经验分享,只是想把曾经那些曾令我兴奋的、失落的、沮丧的故事说一说,也算是回看自己略显「折腾」的几年中那些「得」与「失」。瞒着父母,我从国企辞职作为一个从农村走出来的孩子,211 院校硕士毕业,在国企实习后顺利转正,是一件让我父母脸上颇为有光的事情。但是只不到两年,我在没告诉他们的情况下选择了离开。我第一次经历了系统且完整的软件开发全过程,使用被时间证明足够稳定(过时)的 MFC 技术,开发和维护 OP 工具软件,实现私有的应用层通信协议。大家对于国企的第一印象,可能都是「工作稳定、福利待遇完善、竞争压力小」。但对于刚出校门的毛头小子来说,要把之前书本中学到的理论知识转化为生产力,挑战总是有的。而且在国企环境下,对系统稳定性、信息安全性都有很高的要求。同事们严谨的工作方式,也帮助我养成了编程规范和及时留存技术文档的习惯。工作之外,我享有充足的时间读书学习。技术类书籍当然看得最多,历史、社会和文学也都没落下,以至于让我一直有种未曾离校的错觉。即便如此,我却并不感觉自由。正值国企改革,组织要逐步减少对母体的依赖,形成并完善自身的造血能力,但在彼时相对封闭的环境、较为传统的管理方式和复杂的内部流程下,即便是我也能感受到领导在推动新技术变革时的束缚和阻碍。年轻的我还是希望能快速在技术成长上有所突破,接受更多挑战,于是告别了温馨的团队和相处融洽的同事。初入互联网,我的热情有了安放之处重新找工作的过程并不像第一次那么顺利。虽然也有「大厂」向我招手,但可能是上一段工作的缘故,让我格外向往更有活力、有朝气、有更多机会和挑战的工作环境。最终,我选择了一家正在快速发展的互联网创业公司。收到 Offer 的兴奋感只持续不到一天的时间,巨大的危机意识便开始滋生。虽然我还是机缘巧合地成了公司很长一段时间内的唯一的 Windows 开发者,但对比我上一份工作输出的原始且粗糙的单文档/多文档应用,这款 ToC 产品面向的女性用户群体、舒服的粉红色主题,以及素级挑剔的 Boss,都是我之前没经历过的。入职后我就接到了新产品的开发任务。一个月内,我每天的工作时间几乎是之前的两倍,甚至周末都来不及喘息,逐个击破 IM、DirectUI、WebUI、WebSocket、Http、Wke、libCef 等这些之前从未接触过技术,和团队的十几位伙伴如期推出第一个内测版本,然后持续优化和改进。我们把这个项目当成自己的孩子,在生长的过程中难免有这样那样的问题(长链接保活、多端登录、消息的即时性、有序性和可靠性等),也会调皮和闯祸,但我和我的小团队从基础通信功能切入到初具规模,实现了从 0 到 1。这是技术长进最快的时光,我不知疲惫地持续探索、反复试错。但是后来的种种因素没能让它继续成长壮大,也许是资本,也许是机遇。虽然很惋惜,但至少让我感到充实。这一次,也点燃了我的热情,让我看到了自己创业的可能性。于是毅然切换赛道,开始一段新的未知旅程。创过业才知道,原来这么难受万众创新,大众创业的鼓舞,在某个机遇下,我受邀加入一个背景出色的初创团队,开始一段热血征程。创业项目是基于情绪模型开发网络情报监测与智能分析大数据平台,通过对国内外主流社交媒体海量数据的收集、清洗、处理、存储、分析,就当下发生的热点事件,及时生成可视化的图表及舆情分析报告,为政府和企事业单位提供决策参考依据。能近距离地与业界的营销高手、舆情专家、大律师等牛人共事,着实令我心血澎湃、干劲十足。对比成熟型创业公司,我们面临着机遇、团队和资源的所有匮乏,我个人也接受着身兼产品、技术、运维、市场等数职的挑战。在创业初期,我们学习并践行「先僵化,后优化,再固化」的企业管理三步曲,虚心学习国外同类优秀产品,诚心向成功的前辈取经探讨,细心地打磨产品每个细节,用心地解答种子用户提出的或需求或产品本身的各类问题,也会为每个肯定或进步而欢欣鼓舞,会为每次质疑或否定而知耻后勇。但屡次在小作坊式持续迭代与集团式快速布局的「无谓抗争」中妥协,也认清了自身无论心智、思维还是能力都与合格创业者的标准相距甚远的现实,且内心对技术变现的「执念」。而这一年,我的技术水平毫无进展,与我预设的成长速度极不匹配。我开始思考自己是不是偏离了轨道。最终,我还是决定带着祝愿和遗憾离场。回归初心 —— 精进技术这次出发,我的目标更加清晰,希望加入到一个技术导向型并且具有一定规模的团队。很幸运来到了马蜂窝。我清空之前所有的优越感和不良习性,以空杯心态去接受一个未知但精彩的新领域,重新激活了对四周任何事物充满无限好奇与试探的欲望,虽有涟漪,却也静好。在快速发展的过程中,组织架构和业务调整在所难免,我又面临着是坚持 PHP 还是拥抱 JAVA 的选择问题。这次我的选择是在较长的一段时间内做好辅助的角色,去支持各个业务线的顺利开展。不得不说,难免沮丧,但也有过顿悟。直到新的业务和交易系统迁移接近尾声,与领导的一次长时间谈话及往后的深思,我决定再次拥抱变化,以一种无知无畏的姿态面对挑战。在再次转型后的一段时间内,我投入到 JAVA 技术栈的学习,渗透服务化改造的思想,训练工程化和系统化思维,迷失渐少,多有裨益,更有勇气和信心地直面挑战。一个中年程序员的碎碎念在每一次转型过程中,也会有一种清零不被认可的情绪让我挫败。或许是跨度太大造成匹配度不高的错觉,但更多的原因应归咎于自身的内功不足。时至今日,一路磕磕绊绊地走来,经历资本的疯狂与寒冬,经历心智的稚嫩与初步成熟,经历从零到一的兴奋与从一到百的困惑,也分享几点感悟:第一份要工作慎重选择,它会直接或间接地影响后续的职业发展;危机可以拆分为危险和机遇,抓住机遇并化解危险方能成长;技术人同样需要培养成本意识、风险管控和团队管理能力;唯有变化是唯一确定的变量,保持开放的心态,积极拥抱变化,加强学习和强化自身,才有机会在持续的变化中立于不败之地。人到中年,我们无法避免焦虑感。尽管如此,我仍然非常反对「技术是吃青春饭」的观点。最后,我想和大家分享几点,我在这些不算成功的转型中的几点体会。1. 扎实的基本功非常重要很多面临职业转型期的技术人,都会纠结于是要先加强技术的深度还是广度。在我看来,程序员想要有好的发展,操作系统、网络协议、编程语言、算法等都非常重要。工程化思维通过项目实践来积累,新技术虽然层出不穷,但万变不离其宗。比如掌握了 C++这种学习路线陡峭的语言,在面对新语言时你会很快上手。2. 提前规划,重视积累和沉淀回头来看,我不后悔做出的每个选择。但如果重来一次,我一定会重视对职业路径的规划,让自己有更多积淀。以后该如何发展?继续精进技术?转型产品经理?还是技术负责人?提前规划,少走弯路,并且利用好你的技术优势,形成思维方法和知识体系。3. 不要只关注代码,也要经营身边的人关注你的家人、朋友、同事,学习经营每一份关系,因为只有稳定的家庭和更多的朋友,你才会踏实地在技术这条路上探索,并且得到更多的资源。而不是像我,在离开多年后,才知道原来身边的人有如此实力。4. 努力活成一个有趣的自己关于程序员的标签,我们都有所耳闻。其实技术只是手段或工具,比技术更重要、更有价值的东西比比皆是,比如独立之人格、自由之思想,健康之体魄等。建议大家可以多读书、多旅游,也许在某个不经意间,你会惊喜于发现自己刷新了世界观。以上这些也许并不足以为各位提供实质的指导,但感谢你的阅读。关注马蜂窝技术,找到更多你想要的内容

March 15, 2019 · 1 min · jiezi

程序员,别带着耳机工作了

本文首发于本博客 猫叔的博客,转载请申明出处绝大多数都是这样工作年底了,我相信大家都比较忙,不过大家放假前还是先整理一下接下来的工作计划还有学习目标吧,毕竟都是程序员,多多少少是要保持技术硬核能力的,而最近也在公司整理所有项目的进度与技术问题的对接,所以大致了解了公司的核心业务与项目的问题,我司大部分情况还是比较好的,项目型项目基本是完成80%,运营型的这里就不说了,不过还是有部分延迟是因为软件开发的问题,比如自己的研发因突然问题卡住、外协研发不了解业务做错等等。早上去研发部门找项目经理了解几个推迟项目的进度时,看到了以前几个同部门的同事都带着耳机,都比较专心的敲着代码,其实我敲代码的时候也是一个喜欢带着耳机的人。我原先也是研发部门的人,我以前也是听歌写BUG,哈哈哈。而且是真的放音乐,而不是隔音,当时觉得我需要一个编程空间而且习惯于带着耳机工作,这让我很放松,我可以一心实现所想要的功能。以前真的觉得所有程序员都应该带着耳机工作,但是这两天反而觉得千万不能有这样的习惯,这里可能是我自己的感觉,当然我与部门同事交流了,他们也有同样的感触,特别是你的岗位职能有所改变的情况下,还是不要带着耳机为好。不尚于交流大部分,程序员都是宅男(女),他们也不善于去交流或者表达自己,他们只需要每日、每周完成需求任务即可,他们要面对的难题可能是:换需求、改BUG、写BUG、职业压力(学习能力)等等。他们需要交流,但是都是比较针对性的,比如向产品需求的人了解这一块业务的核心,了解需求、了解业务的流程等,他们的脑子中在想着,我要怎么实现,我要怎么改,以及对提出者的无限痛恨。听歌,带着耳机,可以让他们从心里远离办公环境,远离项目压力等。当是,我反而想建议你不要这样做。为什么呢?1、试着去假提升自己的岗位职能没有程序员,想写一辈子的业务代码,你需要做一些假提升,如果你是你目前的直接领导(上一个层级),观察他是怎么工作的,如果是你,你会怎么做,毕竟你以后可能也要做这样的工作。明白彼此差距,他会怎么交流?2、你热爱公司与这个团队吗?很多年轻人容易离职换岗,请问你真的了解目前公司吗?你能介绍一下自己的公司业务、历史、环境、未来发展路线吗?你对团队的人都了解吗?职场也是小的社会圈,你一个人是转不起来的。如果你有幸代表研发出去向客户介绍自己的部门?3、你对每一个人的岗位职能都了解吗?你隔壁的隔壁的同事,他做什么?适合做什么?应该做什么?如果你是领导你要怎么分配任务,试着去了解每一个同事,说不定哪天你的领导会问你:“你觉得今年谁是优秀员工?为什么?”4、终期编码,你不是为了很高的职能与职权吗?一个不了解公司、不融入团队,自己自闭的工作的员工,真的会被任命一个重要职位吗?这里的耳机其实是一种隐喻,希望大家能在工作中,真心实意的去了解自己的业务、自己的主干!而且,设想一下你平时的行为,如果你是老板,你会喜欢这样的员工吗?知世俗而不世俗过年了,我的上司和我说了一句话,“知世俗而不世俗”。他说你我都是不屑于做此事的人,当时我们要去做,因为我们明白我们是为了达成某件项目或大事而采取的行为罢了。我们依旧不是世俗的份子。是的,我司或者说大部门部门的领队都要去送一些人情,起码我暂时还不用因此而头疼,其实大部分程序员应该都不用头疼,你们可能是在考虑年前如何把BUG给处理好,可是我们可能是要想着怎么让甲方同意验收项目,怎么在新的一年里续签项目等。迟早有一天,我们都要考虑到这些事情,不过是因为什么,不管我们的岗位职能是否相同,但是一旦到了一定的界限,我想我们都需要去为了某件事情而“世俗”一回。尽量别带着 “耳机” ,提前做好准备。为转入职场准备从程序员转型架构或者技术管理,我想你也需要去更多处理人际关系与项目业务,你会发现一开始就是无从下手,但是你依旧需要慢慢磨合,我希望你能提前准备,提升自己的综合能力,学会识人,我的上司不是一个技术厉害的人,他有经验,但是技术不厉害,当时他不用怎么管理我们,他对自己的要求就是,哪天他不在了,这个部门依旧日复日的运转下去,这是她的管理理念。我一直在向他学一些非技术的东西,也深化了我对于技术管理的理解。点到为止吧,没有很系统的写出来,希望大家能明白这一隐喻。2019,别带着“耳机”工作了好好的提升自己的综合能力,你是否能演讲自己项目、是否能为项目写一份技术报告、是否能做技术售前售后的咨询、是否能快速上手新的框架或语言、是否能与上司达到共识。公众号:Java猫说现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。

January 23, 2019 · 1 min · jiezi

破坏程序员生产力的 12 件事

原文转载自 John Lafleur : goo.gl/fqfN8h很多文章都提到如何当好一个技术组组长或者技术部经理。常见的话题一般都是如何提高团队的效率。但当你试图提高程序员的效率时,首先要搞清楚效率是怎么变慢的,清楚原因后再来提团队效率。虽然 Peopleware 在 30 年前就发表了,但很多团队依旧会出现精力浪费和效率低下的问题。没人会期待程序员不用电脑就能编好程序,但却有很多公司在不了解程序员的思维方式下就期待他们能把程序编好,这肯定是不现实的。我总结了拖慢程序员创造力和效率的 12 件事,从影响最大到影响最小进行排序。如果有疑问欢迎给我留言!如果你在想是否应该继续看下去的话,想想付给程序员的高工资,所以哪怕提高 10% 的效率也是值得的!1.打断&会议我认为「打断」可以排在破坏程序员创造力的第一位。程序员在被打断后一般不能做到立刻重新开始编程。被打断之后继续编程的话,通常程序员需要重新看一遍代码,再次逐渐进入到编程的思维环境中,才能想起来被打断之前的思维逻辑,再从被打断的点重新开始。这个过程大概要花 30 分钟以上。「打断」越多,烦心越多,工作质量也会降低,Bug 也会随之增加—成为恶性循环。「如果你在我准备开始编程的时候打断我,次数越多- 我重新进入状态耗费的时间就越长。如果你在早晨就安排了一堆会打断我工作的会议,就别怪我这一天什么程序也没编出来」出自 Reddit 上的一个程序员。那么「会议」呢?「会议」和「打断」的唯一区别在于会议是计划好的打断,这比非计划的打断还闹心。程序员无法在被打断的时候还能专心做其他任务。比如你跟程序员开 1-2 小时的会议,基本上不会有什么进展,因为一般技术性的任务 1-2 小时以内是无法完成的。保尔·格雷厄姆(Paul Graham)说过,「一个下午如果被分成两个小会议是最糟糕的情况,因为这两个会议都太短了,什么都做不了。」那么,如何避免这两种情况呢?以下请记笔记:工作会议可以安排在一天开始的时候或者午饭前,并尽量简短,避免不必要的「打断」。2.微管理在所有管理者类型里面,微管理经理对程序员的效率影响最大。这很容易理解,因为微管理经理的会议和临时打断会更多一些,而这些会议和打断会显示出来他们对程序员不信任,程序员也会觉得他们的能力被低估。导致程序员编程的动力在每次被打断的时候就跟浇了冷水一样。这样的影响不止效率,还会使程序员离职或者更换团队。3.编程要求模糊编程要求很模糊有很多种表现方式。比如,故障报告(Bug report)中像「这个不运行,重做!」并不能有效告诉开发人员如何解决问题。用统一的故障报告模版就能解决很多问题。如果某项功能要求很模糊,在这个情况下,开发人员只能靠自己的感觉来编程。最好是能够把某项功能的要求细节化,再递交给开发人员。再有,不清楚的优先级也算需求模糊。这些不必要的时间本来是可以避免的,程序员却要花时间搞清楚自己是否在完成正确的任务。想象一下如果经理来问程序员为什么在做这个任务(在任务优先级没有细节化之前)。你能想象之后的各种解释和误解…4.海鸥管理你听说过「海鸥管理」么?「海鸥管理」是指管理者完全不管工作,像海鸥一样在高空飞,但….他们时不时的会跳出来捣乱。「这个做的不对,这个,这个还有这个做的不行」等,然后再继续飞走。我必须得说,这个场景虽然听起来很可笑,但却很常见。这种情况对开发人员来说非常的烦心,他们可能在之后的几个小时,甚至几天都无法专心。5.被「占便宜」你有过上层或者其他的程序员把你工作成果拿去当成自己成果的情况吗?在程序员心中,能力被认可是摆在第一位的。别人把自己的成果拿去当成是他们的成果,等于剥夺了其他人对自己认可的机会。这一点非常非常重要,如果这种情况发生了,程序员在很长一段时间之内都不会有动力工作。6.环境-噪音,走动,工作环境等等这些对非程序员来说可能比较奇怪,但对程序员工作的效率影响却非常大。比如一些白噪音,像空调噪音,汽车卡车行驶的这些声音,反而可以帮助他们更好的集中注意力。这就是为什么我们总是戴着耳机的原因。顺便推荐最近刚发现的 RainyMood 。相似的,如果工作空间的设计会有很多人走来走去,这也会让程序员无法专心。或者他们坐的位置很容易被管理者看到等等,这些因素都会让程序员压力增大而无法专心。7. 范畴蠕动范畴蠕动(也称为焦点蠕动,需求蠕动,功能蠕动,有时候也称为厨房水槽现象)在项目管理中意思为无法控制的变数。这种情况在项目范畴没有被确定之前会发生。范畴蠕动会让简单的请求变成复杂,超级花费时间的怪兽。一般都在开发过程中发生。比如,一个简单的功能:版本 1(发布前):功能是在地图中显示一个定位。版本 2 (当版本 1 几乎开发完毕时):功能变为「在 3D 地图上展示一个坐标」。版本 3 (当版本 2 几乎开发完毕时):功能又变成「在 3D 地图上展示一个用户能在上空飞过的坐标」。8.产品定义过程这一点可能第一眼看上去有点怪,但是其实非常好理解。如果一个产品团队在没有仔细考察功能是否有需求就定义了产品优先级(通过客户反馈或者其他渠道),程序员很可能会开发出很多用不到的功能。这会让他们觉得自己做的东西没有利用价值,开发的热情也会大大降低。我们都想创造更多的影响力,开发人员更是如此。9.没有考虑技术负债技术负债是为了更快上线产品而使用非最佳解决方案或编写不是最好的代码。这些决定有时候是不可避免的,因为可以在短期内提高软件开发的速度。但是,长远来看,这会让系统复杂程度提高,并且会降低开发速度。非程序员总是想尽快推进项目而低估了生产力的浪费,这就成了一个问题。如果代码重构永远排不上优先级,这不仅会影响效率,还会影响产品质量。10. 工具多样性和硬件开发人员可能会用很多工具来编程,每天都要运行和合并代码很多次。自动化越多越好。这就好比用非常老的没有任何自动化工具来编程肯定会拖慢编程效率一样。大显示屏和笔记本等硬件的区别也是如此。因此,在开发人员的软件工具和硬件上投资是肯定不会错的!让你的开发团队选择他们喜欢的工具和硬件(为单人买硬件,为整个团队买软件工具)。11.如何注释当我们学习编程的时候,知道要尽早开始为代码写注释,越多注释越好。不幸的是,很多程序员把这概念理解错了,导致他们在每一行代码都有注释,如以下这种常见的代码(摘自杰夫安特乌茨(Jeff Atwood)的「不写注释的代码」):r = n / 2; // 赋值 r 给 n 除以 2// 迭代直到 r – (n/r) 大于 twhile ( abs( r – (n/r) ) > t ) { r = 0.5 * ( r + (n/r) ); // 赋值 r 给(r + (n/r))/2}你知道这段代码想干嘛么?我也不知道。这就是注释太多会带来的问题,虽然有注释,但这并没有解释为什么要这么写这段代码。如果你在程序调试的时候看到这段代码,对排除报错(debug)并没有帮助。12.不可能实现的项目截止日期管理者总是要求开发人员预估项目完成时间,然后再推动他们缩短预估时间,并以此为截止日期。很多管理者甚至认为,既然这是开发人员自己估计的时间,他们就应该在这个截止日期之前完成,所以这个截止日期是可以正式向上级汇报的。然而,开发人员会认为这个截止日是没有办法完成的,这就导致了开发人员与管理者之间紧张的关系。以上这些事情为什么只针对程序员?如果你看完这 12 件事,你会发现,这 12 件事其实在项目管理过程中经常发生。只是这些事情对程序员的影响更多一些,他们在工作中更需要全神贯注。如果你在公司里看到了以上所提的 12 件事,不妨和大家探讨一下。沟通后,搞清楚这些问题是否真实存在并且如何解决。不管他们怎么说,关键是在于信任他们的反馈和意见。现今的科技和 30 年前比已经很不一样了,但即使如此,人性并没有变。你在考虑公司生产效率的同时必须要考虑人的因素。反复推敲你团队的工作流程,工作环境和工作习惯,让你的团队来指引你达到你想要的最高效率。LeanCloud,领先的 BaaS 提供商,为移动开发提供强有力的后端支持。 了解更多: www.leancloud.cn ...

December 25, 2018 · 1 min · jiezi

为什么程序员应该学好英语?

前言这个话题可能就如“为什么男人应该多挣钱?”一样永远不会休止,但其实也是一个大家都对答案心知肚明的问题。大家都知道挣钱只有好处没有坏处,唯一可能称得上“坏处”的就是你需要付出很多时间和努力。学好英语也是一样,只有好处没有坏处。如果你觉得自己这辈子都用不上英语,那也应该为你的下一代想想…其实这里我并不想用什么出去旅游、和老外交流、看懂英文电影之类的老套理由来告诉大家应该去学好英语,而仅仅是想从一个程序员的角度来讨论为何需要去学好英语。虽然我只是一个还未毕业的大学生,六级也只是勉过,但有些事情不落到自己身上是永远体会不到英语这个东西的作用。废话不多说了,今天写这篇文章也正是因为最近身边发生的一些事而让我有了一些感悟。写得比较粗浅,如果觉得写得不好尽情踩我。朋友与我的遭遇我的一个朋友和我一样都是大四学生,刚出来实习。他是做java的,去了一家很不错的外企,据说是一个新加披的公司。他们一起进组的有四个人左右,清一色应届实习生。前几天都是熟悉公司之类的,没有安排正式工作内容,老大告诉他们过几天会有一个组内面试,也就是进一步考察能不能适应工作内容和环境之类的,要求全程英文。这可把我朋友给难倒了,因为他的英语真的不怎么行,基本上是无法聊上两三句那种。不过他当时也告诉我们自己不是太担心,第一是已经通过考核进入了这个公司,第二是他说一起进组的几个英语应该都不怎么样,毕竟接触的周围的程序员也没几个英语好的。然后也就没做过多的准备…很快面试时间到了,但令他万万没想到的是,和他一起进组的几个实习生英语都很不错,基本上能和面试官进行无障碍的交流,他当时就懵圈了。轮到他的时候,基本说不出一句话,后来面试官问他是不是不会说英语,他承认自己英语确实不好,能不能用中文……最尴尬的事情来了,面试官最后让他自己用电脑和手机去翻译成英文,用聊天软件进行交流…这个操作是真的骚,关键是还只有他一个人有这“待遇”。完了之后他告诉我,公司后面的项目内容,包括文档之类的基本都是英语,可能熬不到转正了…再来谈谈我在学校参加双选会面试的经历。我应聘的是前端实习,我的专业虽然与计算机关系还是很紧密,计科系学的大部分课程我们也有学,但是学校莫名奇妙的把它放在了“信息管理系”下面,也就是严格来说是属于管理的。而当时和我一起参加面试的基本上都是计科系的,软件工程、计算机科学之类的专业。由于去的人太多,我是最后几个才排到面试的人。轮到我的时候,我还记得面试官看到我简历后的第一句话就是,“你过了六级?”。一种疑惑中又带着惊喜的感觉,或许就是因为前面计科系的同学英语不怎么好,很多四级都没过。虽然四六级这个东西说明不了什么,但确实在求职时给了我帮助。英语的重要性其实通过我朋友的例子也能侧面反映出一个现状,一句话总结就是:英语不是万能的,但不会英语是万万不能的。那么英语对程序员到底有多重要呢?文档、代码、工具、google、github、命令等等所有与编程有关的东西,无一列外的都避不开英语。看到这里你还会说英语对于敲代码不重要吗?那么下面我将列举一些与编程有关的英语使用场景,这样就更能深刻体会到英语的重要性,也能针对性的去提升自己的英语水平。一、理解编程语言这是最重要的一点,敲代码就是在敲英语,我也找不出理由来反驳这句话。C、C++、java、python、js、php等等主流的编程语言都是老外编写的,哪怕你不知道英语是什么,我也可以肯定的告诉你,你代码中敲的东西就是英语。因为除了数字、符号以及特殊文字,你敲的代码都是由26个英文字母组成。而编程语言的魅力也正是在这里,英语赋予了它新的生命。从0和1到现在丰富的编程语言,英语可以说是最大的功臣之一。有了英语,编程语言就能被大多数人所理解,很多编程语言的语法也都是符合人类说话和思维逻辑的。所以如果你能明白英语代表的意思,你也就能明白大部分语法的作用了(对于结构和用法需要其他的逻辑思维能力和数学能力)。举个例子,if和else就是如果和否则的意思。就算你不是个程序员,也至少明白这个东西是与判断有关系的。而更多的例子是一些内置函数,如match、random、replace等等,这些单词翻译成中文就很直白地把这个函数是干什么的告诉了你,匹配、随机、替换就是它们的作用。当你对这些单词的意思都很清楚之后,哪怕你忘记了这个函数的用法,你也知道它的作用。这一点其实对面试是非常有用的,比如当别人问到“要替换这个文字应该怎么做啊”,哪怕你想不起具体方法了,你一想到替换的英语是replace,马上就能答出“用replace方法啊”,而不是告诉别人我知道这个方法,但就是记不起名字了,这可是很尴尬的。二、理解代码错误对于像我这种天天都在写Bug的人来说,报错当然是家常便饭。当我们的代码报红的时候,要做的第一件事不是马上复制粘贴去搜索解决办法,而是应该先把错误读一遍,看下这个错误是什么原因造成的。那么问题来了,错误肯定是全英文,并且复杂一点的错误会变成长难句,光会一两个单词可是不行的。比如下面这个错误:Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.乍一看当场就懵逼了,这啥东西啊。完成时、从句什么都来了,不过仔细一看,这些都是初中就学过的语法知识。所以如果这种情况下我能理解大部分关键语句的意思,那么我就可以针对性的去找错误,而不是一头雾水的先去百度或者谷歌。如果你基础还行,像下面这种错误,即使你不知道404状态码的含义,一看也知道是“加载资源失败”,服务器端的回应出了问题,找不到相应的东西。Failed to load resource: the server responded with a status of 404 (Not Found)三、理解命令程序员另一个天天打交道的东西就是命令,无论是操作Linux系统还是使用cmd、git、npm包管理等,都得用命令去执行,这些命令还偏偏全都是英文,你说气不气人。那么怎么更好地去掌握和理解这些命令呢?还得学英语,比如下面这个非常常见的命令写法:npm i webpack@3 -g这样的命令语言让人感觉没有什么逻辑可言,也不太好去记,似乎只能靠多次使用和死记硬背才能记住。但并非如此,i就是install的缩写,g就是general的缩写。一个是安装的意思,一个是全体的意思。连起来也就是耳熟能详的“全局安装”的意思了。其实命令写出来的东西很多都是碎片化的,它往往不让你写一个完整地英文句子,而是用关键性的单词或者缩写去书写,其实这样反而降低了对英语掌握水平的要求,因为单词就能解决大部分问题。四、理解官方文档这一点其实没什么说的,官方文档大多数都是英文的,如果你想深入了解某门语言的特性和使用方法,必须去看原汁原味的文档。五、使用IDE及各种工具这一点我相信大家都感受颇多,那就是下载一个IDE或工具后,第一件事就是去配置中文,不然大部分菜单栏的东西都看不懂。如果英语还行,完全可以省去这个步骤。甚至有些工具根本不能轻松地配置中文,比如MySQL的可视化工具Workbench,要想配置中文还得自己把菜单上的单词都给翻译一遍,再对应地写入配置。就算你配置了中文,要下载一些插件,插件的介绍还是英文…所以我觉得与其每次都去网上翻译,不如直接把英语给学到每次都能看懂七八十,八九十的程度。六、使用外网资源程序员常用的外网资源非常之多,比如搜索神器Google,找错天堂Stack Overflow,基佬聚集地Github,视频教学Youtube等等,英语不好还真不好操作这些东西…其实很多优质的资源外网都有,我曾经就因为光看文字不太理解callback这个东西,就去油管上搜索了一下“what is callback”,然后看了视频一下就明白了。这里真的强推去油管上看编程的视频,免费还好用。七、其他其实作为一个程序员,除了上述的一些内容,还有非常非常多的地方都需要把英语学好。我们常常挂在嘴边的I/O,HTTP,IP等等都是英语的缩写,要很好地理解这些东西,不是非要去搞懂他们的英文意思,但你得知道他们为什么这么叫,而这些东西都是老外叫出来的,为什么当然也只有英语说得最清楚。八、职业发展这一点我没有太多的发言权,作为一个还没毕业的学生,谈这个未免也太装逼了。但是我确实在网上浏览了许多与之相关的内容,英语好无论在哪个行业都是有优势的,当然也会对你的职业发展起到一定的帮助。这里又要拿我朋友开刀了,他公司是可以选择去新加坡工作的,工资也比快是国内的一倍了,但他明确地告诉我,就算让他去他也不回去,因为不会说英语…就算天天不出门,和别人交接项目的时候总要说话吧。总结写这篇文章其实也是鞭策自己要不断保持学习,同时把英语给捡起来。如果你也觉得英语很重要,网上有无数种方法去学习,世上无难事,只怕有心人。其实我心中还老是有一个极端的想法,鞭策程序员去学习英语,这就和追星一样。如果我有幸见到了java的创始人、有幸见到了比尔盖茨、扎克伯格等崇拜的外国友人,我可不能只会说一句hello world啊!

December 22, 2018 · 1 min · jiezi