一个优秀的程序员,代码永远都不会复杂化。当然,如果是作为才入门的或是还未入门的程序员,对熟手编写的程序也会感到十分吃力,所以造成理解上的"复杂"。编程风格四大规则:
文档化
节简化
简单化
模块化
❷ 普通程序员的工作生活是怎样的
读别人的代码
通常我们进入公司以后,不会是重头开始一个项目,而是在已有代码的基础上进行维护或新功能的开发,所以必须“读代码”。
读有“泛读”,了解系统架构、功能模块,对系统有一个大致的认识,各个功能能找到相应代码实现的位置。
还有“精读”,通常就是调试了,在fix bug的时候使用。此外还包括审核:一些规范一点的公司,都会有code review,也是精读,但不用debug。
对于一个成熟的项目来说,读代码——而不是写代码——可能是最耗时间的工作了。
写注释文档
为了减少“读代码”的时间,我们不得不花时间“写注释”“写文档”——这个程序员最深恶痛绝的工作。所以现在“烂代码才需要注释”的声音变得越来越强,但无论如何,文档还是要写的。(注意:要能区分注释和文档)
了解需求
好了,终于到了“写代码”的时间了。
然而,在动手开始写代码之前,你必须花时间“了解需求”。和自己写个小程序玩玩不同,在公司,你是为别人写代码,所以你一定要了解别人究竟想实现什么功能。通常,这并没有你想像的那么简单,需要反复的沟通。
当然,也有一些团队和个人,不愿意在这上面“浪费时间”,通常他们的下场就是不断的写代码,然后不断的改代码,加班加点的做大量的无用功,整个公司怨气冲天一地鸡毛。
开发中的其他各种沟通
大家都恨产品经理。
但其实产品经理只是我们最恨的人之一,我们还恨前端、后端、DBA、测试……承认吧!因为我们是团队开发,说好的团队精神有没有我不知道,但各种摩擦扯皮是必须的。
比如前端要后台给一个接口,后台给不出来或者嫌麻烦;比如后台跪求DBA的权限,DBA优化数据库时说Developer都一群傻逼;比如测试一次又一次的报bug我特么像杀人的时候……
这些都需要沟通,也就是需要时间和精力。
其他无聊的办公室活动
比如写日报周报,应付各种KPI,这是所有工种都干的活,就不多说了。
总之,程序员真正写代码的时间其实不多。个人觉得,一天能有30%的时间安安静静的写代码,就算是不错的工作环境了。
不论是我们的大学教育也好,培训机构也罢,都只知道知识的灌输,而忽略了程序员工作能力的培养。这些能力,即只能在工作中“自学”获得,所以你看这些公司的招聘,都要求“两年以上工作经验”,意思就是:一般的新人,起码要两年的时间,才能“习得”这些起码的工作技能。
❸ 知乎上那个程序员winter是谁
winter,本名程劭非,花名寒泉,前端工程师,JavaScript 专家。江湖人称“计算机之子”。先后在微软,盛大,阿里巴巴工作,目前是手机淘宝前端 leader。
winter 出生于 1985 年10月24日。母亲年轻时曾用机器码,打孔纸带写程序。因受家庭影响,winter 从小喜欢计算机,高中时在文曲星上编写小游戏。2004年进入哈尔滨工程大学。大学时代参加 ACM/ICPC 比赛,获得过黑龙江省赛一等奖,东北四省赛一等奖。从大二开始学习 Web 前端开发。winter 接触前端是因为当初混黑白棋社区,给黑白棋界面写插件,后来又混 51js 社区。他曾经看到周爱民老师的文章,觉得不服,于是与其讨论,很有收获。后来又被月影拉进一个群,认识不少人,学到不少东西。毕业时拿到网络和微软的 offer。那一年,腾讯给出的月薪是 7k,网络是 9k,而微软是 13k,winter 最终加入微软亚洲工程院。7 年后的 2015年,对于普通应届生,阿里给出的是 13k,网络给出的是 14k。由此可以看出,winter 本科毕业时已然实力超群。由于是校内第一个拿到微软 offer 的学生,哈尔滨工程大学还对其进行了专访。winter 在微软主要从事 Windows CE上的 IE 浏览器开发。2010年开始在盛大创新院做电子书和基于Web的操作系统,认识了老赵等人。当时霍炬(virushuo),郝培强(tinyfool),余晟也在盛大创新院。2011年时,大城小胖也来到盛大创新院,他说winter 虽然比他小5岁,但却教会了他很多。winter 老师毕业三年后,月工资达到了 25k。2012年12月加入阿里,在无线事业部前端团队工作。伴随着阿里的上市,winter 老师的身家想必水涨船高。
winter 老师虽然平时插科打诨,没个正经,但是一谈到技术问题,就变得认真严肃起来。
在技术方面,winter 老师非常注重基础。他想起当年他在 51js 认识的那些人,基础好的几年之后都立于行业顶点,而只知道“顺应潮流”的已经泯然众人。对编译原理,winter 老师开始觉得相对其它知识,编译原理不是那么重要,但是后来发现,除了微软系的语言,其它语言想要透彻的了解,都需要阅读给开发者用的语言标准。winter 老师自己也研习过龙书,但是觉得龙书过于学术。另外,winter 老师对算法,标准等也非常重视,他觉得当一个程序员对算法、语言标准、底层、原生、英文文档这些词汇产生恐惧感的时候他的技术生命已经走到尽头。winter 老师推荐过《程序设计实践》这本书,他认为这本书可以让一个掌握一门编程语言基础的人成为一个合格的程序员。另外,身为 JavaScript 专家,winter 老师当年学 JavaScript 的时候,每次从图书馆借五本书,然后根据实际经验选择靠谱的细读,winter 老师提到此事时说道,对于一个新手而言,不崇拜,不盲信,保持怀疑精神是很重要的。另外,对于框架和库,winter 老师也有自己的看法:库/框架都不应该致力于解决用户15分钟之内可以搞定的事情;库/框架的命名应该如同文档,见文知意,且与原生的类库风格统一;库/框架的API应该职责单一、与命名相匹配;库/框架应当可拆可合,粒度适中。
在工程方面,winter 老师认为工程当是布道、技术方案、落地业务三者一体,任何一环没做好,实施都会变成失败的工程实践。而工程师的核心竞争力是工程能力,工程是承认现实和追求可行性的,工程高手懂得在不同的环境下使用不同的工程手段来提高价值转化,逐步建立理想的组织结构和实施流程。然而,现实总是比理想骨感太多。网上到处吵着MVC、架构内聚耦合,而最需要解决的问题却是代码发布、版本管理、依赖关系和复用。开发工作量往往不在实现功能,而是每次上线的冗长流程和心理压力。从学会技术到工程实施,犹如万里长征迈出第一步。
在人才选拔方面,winter 老师认为,简历应该多看经历、作品,而面试则应多考察基础知识和实际编码,可以出一些覆盖知识点范围很大的题目,例如常用的HTML标签、CSS属性、CSS选择器,并简述它们的特性和使用场景。另外,面试过程中,重要的是面试官如何跟应聘者讨论题目,如何根据回答情况灵活决策后续问题和沟通方式,以及对面试者回答的评判方式。而工程师的能力,主要体现在三个方面,算法能力解决单点问题,架构能力应对代码规模,工程能力则负责人的协同和前两者能力的沉淀。根据 winter 老师的经验,面试挂掉的人,主要有三类:第一,是恐惧,不敢看标准,不敢学算法,不敢参与社区等等。第二,是封闭,在小圈子,自己觉得自己很强,没交流,闷头做不看别人。第三,是安逸,能实现就不管原理,做管理了就懒得碰技术,老技术够用就不学新技术。
2015年五月底,winter老师因不满知乎友善度判定,离开知乎,并在 GitHub 上建立 dog-fucked-hu 项目,用于备份自己的答案,取消所有点赞,批量替换所有答案。
工作以后,winter 老师还迷恋上了网络小说,后来去盛大工作,还给阅读网文的 bambook 写排版算法。winter 老师不但自己看,还将网络小说推荐给自己的父母,导致年轻时身为文艺女青年,看《莎士比亚全集》,《神曲》,《雪国》的母亲,开始看《凡人修仙传》,《斗破苍穹》等网络文学作品。而 winter 老师自己,最爱看的是《罗罗娜的异世之旅》。winter 老师还曾经面试过豌豆荚,结果被面试官评价为前端开发基础不过关,没有好好准备面试,不知道是否和 winter 老师看网文有关。不过看网文并不影响 winter 老师的薪资水平。知乎上有一个问题,“第一次将薪水告诉家人是什么体验”?winter 老师是这么回答的:“妈你来帮我看看这是几个零?”。
❹ 为什么中国的程序员总被称为码农
本人并不是一位程序员,但是从事互联网行业也少不了与程序员朋友打交道,他们经常自嘲为“码农”、“程序猿”、“代码工人”、“码字猴”等等,这些一定程度上是幽默的称谓,但是站在旁观者的角度,本人认为还有一些深层次的原因。
第一,中国的程序员是一个庞大的群体,只要是学过计算机,只要懂一门编程语言,都可以吃这碗饭。当你看到中午吃饭时那个浩浩荡荡的场面,你就会觉得程序员真的看起来和农民差不多。
第二,大部分程序员做的都是比较枯燥的工作,一点创新性都没有。很多新项目都是在很成熟的项目之上进行修改,都有现成的模板可以套用,基本上不用怎么动脑筋。这和农民种田是多么的类似。他们年复一年地做着同样的事情(播种、插秧、收割),也不知道这种日子什么时候是个头。IT行业本应该是一个创新性非常强的行业,但到了中国就成了比较死板的东西了,这是什么原因呢?
第三,大部分程序员的视野都比较的窄,对其他行业懂得很少,这也和农民是多么的相似啊!我们都说农民阶层是没有多少文化的,但这居然也适用于以高学历著称的程序员身上,是多么具有讽刺意味啊!你随便问一下身边的程序员,当今最流行的词语是什么,我想没有几个人回答得上来。他们成天盯着代码,想着那26个字母和10个数字,视野如何能变宽广?
第四,大部分程序员都是靠自己的努力挣钱,没有强的人际关系,基本上属于“弱势”群体。就像农民一样,他们没有关系,只能世世代代在自己的土地上耕耘,只求维持生计、终老一生。如果稍微有点关系,几乎没有人愿意当程序员。在行业发展较为顺利的时候,他们能够保住饭碗,能够养家糊口;当行业不景气的时候,他们随时都有被裁的危险,因为公司要不了那么多人。程序员的命运并没有真正地掌握在自己手上。
在一个大的IT公司,程序员都占了很高的比例,少则成百上千人,多则几万人,真的像农民一样,到处都是。我在和同事聚餐的时候,程序员都在抱怨自己的工作是如何的辛苦、如何的累,都说自己是“码农”。
❺ 写代码这样的工作,可以做一辈子吗
如果真的热爱这个职业,做不做一辈子有什么关系,不是职业还可以当作爱好。如果不喜欢,或者只是当作生存工具,干嘛要做一辈子,可以转行干别的。难道二十多岁刚开始工作就要决定一生的职业规划么?事在人为,这问题的答案,是取决于自己。
一、先说说干一辈子程序员可能遇到的瓶颈吧。
1、视力:老爸他年轻的时候就是近视眼,长期戴眼镜,现在又有老花眼,上了50岁以后看屏幕的吃力程度可能年轻力壮的小伙子是无法想象的。
2、体力:虽然他的身体在同龄人中还算硬朗,但是比起年轻的小伙子还是差多了。我现在经常看到他迷迷糊糊就睡在电脑面前了(心疼爸爸)。
3、工作安排:当你还是一个程序员的时候,你可能可以一心扑在技术上,沉浸在代码的海洋里,享受代码带来的成就感。但是一旦你成为一个领导了,你就不得不考虑更多。你要对你的下属负责,对你的部门负责,对你的公司负责,对你的股东负责。就没有以前那么多精力来学习和实践了。
二、但是,干一辈子程序员,你也会有很大的收获!!!
1、现在虽然爸爸已经很久不自己写代码了,但是很多公司里的问题还是会问到他,很多底层的原理,他懂的比其他人都透彻,公司也基本只有他知道这些。
2、他对技术的热情真的比同龄的人不太一样,很乐于接受新鲜事物。之前一直用的安卓机,现在给他换了一个iphone每天自己乐颠乐颠的研究手机里的新功能。还会自豪的跟我说,今天又发现了一个新东西。每次给他买了什么新玩意,根本不用我教,自己玩玩就会了,与时俱进的能力一点不输给小年轻。
3、心态很好,他老人家从不跟别人置气,包括我火爆脾气的母上大人。每天都乐呵呵的,跟没长大的小孩一样。
4、为人低调,其实一直都不知道爸爸会写代码。直到有一天,我们一家人一起聊天,妹妹正在跟我吐槽最近遇到的一个奇葩bug。老爸突然开口跟我妹说,“你是不是在xxx和xxx之间有个空格?”我和我妹当时都惊呆了。她看了下代码,居然还真是!!然后我妹按照我爸爸的指示,把这个空格去掉以后,bug居然奇迹的解了。这时候我们才知道他老人家原来会写程序。。。。。。
三、即使不能做一辈子程序员,代码却可以写一辈子!
人们总说程序员是吃青春饭的,万事不能绝对。天朝的环境,的确没有美国那样写代码能写到七老八十的环境。但即使不能做一辈子程序员,代码却可以写一辈子!
所以,年轻程序员不要有跨越年龄阶段的焦虑,大龄程序员也不要觉得年轻人抢了自己的饭碗。
每个年龄段都有自己要解决和面临的问题,认清自己内心真正的需求和渴望,再去寻找适合自己的栖身之地打怪升级,才是当务之急。
时代永远不排斥大龄程序员,时代排斥的是没有能力的大龄程序员,真正能解决难题的程序员,无论年龄多大,都会一直抢手。
希望即将奔三或者马上奔四的程序员伙伴们,永远保持一颗学习心,不以物喜不以己悲。