曾在大公司写了好些年程序,不过下面这些经验跟写程序可能没啥关系。
新人最需要快速掌握的,是职场规则。
流量预警:本文长度超过8页,新手9大技能树天梯系统,无图。
开卷有益,欢迎各位拉同学来看。
永远先想清楚,再去动手。
>>(我是不会说自己每周只敲一天代码的)
不懂要问!问之前先尽可能去查!
>>(萌萌地跑来问我的下属,是把我当作GOOGLE机器人助手还是书橱?)
求助之前要先自己尽力去解决,搞不定及时求助!
>>(上司和同事不是给你打杂的;事情搞砸了再求助毫无意义)
你脑子的想法,不通过口头特别是文档表达出来,它事实上不存在。
>>(写文档,写注释,写日程表,写计划表,写会议纪要……不说了)
公司的各种设计指南、编程规范、XXX规范要仔细学习
>>(否则去参加外面的培训公司接受培训需要花钱还不靠谱)
新技术是好东西,但自作主张用了,多半是作死,特别是自作主张用开源软件的家伙
>>(我手下要是自作主张用开源软件,最起码一个大过处分,不预警,直接通报)
各种接口不要随便乱改;花半天先把接口吵清楚再动手,有益无害。
>>(当年专职负责吵接口吵了大半年呢,每个人都眼巴巴看着你的感觉好奇妙)
公共配置项不要乱动,特别是配置库和编译器的
>>(出问题了找BUG找死人啊)
下面是9大技能树:如何XXX系列
★★★如何对待上司★★★
上面吩咐了做啥事,脑子好就记住,脑子不好就拿本子写下来,然后去做。
>>(反正最多说三遍,再不好好学习就打入冷宫)
安排的工作一般都要接;接不了的要清楚说明客观原因,而且要客气。不要在其他人面前拒绝。
>>(随便拒绝工作安排,基本都是作死;当着外人不给上司面子,这不是作死而是作大死)
如果工作安排不清晰,请主动与上司沟通,明确关键的时间点和交付物。沟通前自己要有预案。
>>(没有上司喜欢不带着脑子跑来问问问的下属的)
如果完成工作需要其他资源,先尽力协调,再向上司求助,并明确说明理由和已协调结果。
>>(他出面跟人撕逼需要子弹,不要让他自己到处找子弹)
上司的技能树和技能点分布,可能跟你完全不同
>>(自己那坨技能点不全是金子,别人的技能也不全是屎,世界主体仍是分工合作)
自己的工作可以求助,但工作主体仍然是你;每次求助都是偷师的机会。
>>(谁给谁打工?这很重要)
遇到例外情况,及时反馈给上司;确信自己有能力且得到授权的,可以同步开始解决,否则等指示
>>(不反馈那叫知情不报;不解决那叫消极怠工;自己乱搞叫越权行事)
事情进展顺利也要定期反馈进展;每日三省吾身,不要让别人逼着你写总结。
>>(老旧的Unix程序默认没有return,但你不是它。他跑来问的时候,心里是充满疑惑的)
是男人都会犯错(from DuangLong),但相同的错误不要一而再、再而三地犯
>>(上司不是你爹,他口水干了就会变得异常烦躁)
不要随便发脾气,更不要对着上司发脾气
>>(否则的话,很快就会通过惨痛教训明白:平等、自由都是相对的)
在绝大部分情况下,不要跟上司谈情说爱玩暧昧,搞基也不行
>>(除非你打算辞职)
不要当上司是傻逼;如果觉得他不是很懂,委婉地教会他。
>>(绝大部分情况下,后果是下属傻逼了)
我不排除有很恶心的上司,但你的上司是一种非常珍稀、宝贵的业务资源。
好好对待他,不要有意无意地滥用他、损耗他,尽量让他开心。
否则等到闯祸了,让爹妈来公司保佑你么?
比上司更能保佑你的是你的客户。
★★★如何对待同僚★★★
我知道一定会有人大叫着说:如今是平权时代,哪里有什么狗屁上司。
好吧。
一般情况下,把你的同僚当作上司对待——可以套用上面的大部分建议
>>(你敬人一尺,人敬你一丈。鬼知道什么时候同僚变上司)
工作要通过定期碰头协商分工和通报进展
>>(要不你单干吧)
答应了别人的事情要做到,要不就不要答应;
>>(做不到比拒绝的后果更严重)
有啥事情可能起纷争时,事先讲好道理,商议好规矩
>>(这一条是金科玉律!)
不要吝啬于分享经验,但不要随便发表看法
>>(大家都喜欢对自己有帮助的人。但看法么……说者无心听者有意)
一定要有几个死党,关键时刻可以帮你扛扛工作、通风报信;
>>(谁没有难处呢?但没人欠你的)
今天求助了别人,记得日后要还,晚还不如早还。反之同理。
>>(纸牌屋)
条数是不是很少?混过几年职场后,大部分人就挂在这几条上。
★★★如何对待业务★★★
业务不是编程,业务是钞票。
搞清楚自己的岗位职责;搞清楚跟你工作直接相关的周边岗位职责
>>(基本入门要求)
搞清楚业务流程,自己在其中的位置;
搞清楚公司靠神马赚钱,自己在其中的作用;
>>(最好的公司都是流程化运作的,没有也要理出来)
编程之余,多看看公司对应的商业和工程专业书籍
但请务必记住:业务不是学来的,是干出来的
>>(业务不是编程和0/1,业务是非常复杂的,它很难掌握但比程序的变化要少得多)
搞清楚你对老大,同僚,周边部门的价值;
搞清楚老大,同僚,周边部门对你的价值;
>>(不清楚这些,工作中怎么互帮互助 or 谈条件 or 撕逼)
经常跳出自己的岗位看问题,有极大好处
>>(否则很容易固执己见讨人厌呢)
要区分有价值的功劳和没有价值的苦劳
>>(否则白忙一场空)
干得好就可以多要钱,但要有理有据,最好的办法是拿好的考评
>>(连考评周期和规则都没有的公司,还是算了吧)
★★★如何对待编程★★★
脱离业务的编程毫无价值,除了毕业生
精通一门语言,最好是C和JAVA,脚本随意;其他的都可以类推。
软件程序质量的底线,是你知道你的程序和编译器到底都干了啥。
因此:程序语言中的高级技巧都是巨坑,如果没有十足的必要和把握,不要用。
编码注释是最好的文档?不全是,学会Office和MindManager,否则试下用编程表达流体力学。
熟记常用的调用接口(系统,数据库,函数库,中间件),其他的备好手册,不要费太多脑。
有括号,不要浪费脑子去记忆运算优先级。
更不要随便相信高级运算符。
让别人能看懂代码,否则自己也会看不懂。
时刻谨记性能和存储约束,它们可以交换;更可以跟钞票交换。
如果这两者严重受限,高级程序语言都是渣。
任何复杂的系统都可以分解,函数和有限状态机是最重要的概念。
类、对象不一定重要(想不到吧),模版、继承、派生很容易坑了你。
绝大部分的“跨平台”、“可扩展性”设计目的,大部分还是要依赖重构去解决。
更悲剧的是,很大比例的重构是由于这两类设计而导致的。
谨慎对待重构,一般来说初次重构的失败率高达50%以上,大多数情况下是质量问题导致失败。
所以,要做好3个版本的成本预算。
新人玩重构?百分之百失败。
函数、API、消息、通讯报文没有区别,都是接口
常用算法并不多,复杂算法要学好数学和库
开源软件不要乱用,其授权文件和律师团可能让公司破产,一定要问老板和律师!
商用软件收费并不仅仅是因为功能,还有性能和质量。开源软件的质量良莠不齐。
好好读编程规范!好好读编程规范!好好读编程规范!
不要依赖于DEBUG!事先想好软件逻辑可以节约大量的DEBUG时间。
硬件是会坏和异常的!服务器、配置库不说了,传感器和执行器同理。
人是会犯错的,而且很经常!做好代码和数据备份;检查输入,尽量控制输出。
★★★如何对待工具★★★
不能提高工作效率的工具毫无意义
工具是拿来用的,不是拿来炫技的
优先考虑测试工具,其次考虑编码工具,最后考虑代码检查工具
>>(理应如此,但实际上哪个好到手就先整哪个,呵呵)
工具本身是带缺陷的,要考虑潜在缺陷的风险和代价,否则会死得很难看。
开发系统集成的IDE最“好”用;纯编辑器请随心,注意保存配置数据。
一个需要大量配置才能实现功能的工具,要慎用。
优先选择收费的商业工具,除非实在没钱。
带有“云”系统的工具,呃,去与老大对话,观察他是否变成了大菠萝第一章的BOSS。
很多奇奇怪怪的小工具会做很多奇奇怪怪的事情,特别是安全类工具。留个心眼。
如果找不到合适的工具,自己写一个,注意性价比(哦,我们有个小小的工具团队)
开发环境几乎永远比客户的运行环境奢华,时刻记住这一点。
买一套你用得顺手的硬件外设,包括键盘、鼠标、显示器,这个投入相当划算。
(听说新浪的开发环境是众所周知的负面案例)
奇怪的键盘布局会降低效率,慎用此类逼格高的键盘。
有午休的开放办公室,慎用噼噼啪啪的键盘鼠标,否则可能导致你的脸噼噼啪啪作响。
Office是最应当掌握的非编程类工具,没有之一。
抛弃各种IM工具,回归到电话、短信和Email。还需要说理由?
努力变成你的老大最好用的工具,否则他会寻思着换工具,就像你寻思着换键盘一样。
★★★如何学习提升★★★
最好的学习,是工作中学习,学以致用。
因为这样目的最为明确,效率最高,正向负向刺激最强烈。
找个好师傅,默认情况下抱紧上司的大腿。
一天最多问他一次,逼着自己先想清楚再去问。
编码不是目标,实现功能不叫大牛。
一般对代码的优化集中在性能,可维护性,可扩展性,安全性和质量健壮性上。
大牛们就牛在这里。
不要把工作带回家!学习同理。
家里有太多分散注意力的事情,而且非常容易模糊各种边界和deadline。
某些公司有严格的信息安全管理制度,不可以在公司做自己的事情。
那在家里好好布置一个书桌书架,并尽量减少干扰。
出于集中精力的考虑,书桌上应当尽量简单,比如不要有妹纸和电视,嘿嘿。
每天2个小时的时间,把所有干扰都排除;要么就不学,要学就沉浸进去。
在家里做东西学东西,同样要坚持有特定目标,否则都是胡乱学,成不了体系出不了东西。
社区是好东西,但很零散,不能依赖。
官方手册和文档是最系统的,开源可看代码。
不要沉浸在具体编码中,理清目标,逻辑,流程,模块和状态迁移。更重要的是理清业务。
逻辑思维清晰、表达简明扼要、英文起码阅读无压力。
>>(沟通都成问题就不要谈提高了,真的)
写博客、上论坛撕逼、写教材、做培训讲师,对理清逻辑、提升表达和建立个人品牌很有帮助。
>>(好为人师不是错,知错就改好同志)
★★★如何对待租房★★★
首先请搜索此文章:
怎么花最少的钱提升出租屋的格调? - Charles Stone 的回答其他:
房租不要超过工资的1/3(日后供楼也是同理)
跟谁一起租很重要,最好跟死党一起租房子,否则宁愿单住
作为程序员,房子要能摆下一张大书桌!
★★★如何对待妹子★★★
一般来说,公司里的妹纸更可靠
>>(只是相对论而已)
尽量找到共同的兴趣爱好
>>(找不到?迟早出事)
通过宠物勾搭,又快又多
>>(狗男女就是这么回事)
有花堪折直须折
>>(最好的兄弟会对你说:承让)
要学会怎么识别绿茶婊
>>(这是猛追三个月以后的else处理分支)
没有我的火眼金睛?带她去游泳
>>(咳咳,咳咳)
无论娶或不娶,0.03就在那里
>>(咳咳咳咳,不要淘)
把妹比搞革命更困难,革命尚未成功,同志就仍需努力
>>(身体是革命的本钱,把妹还要事业)
三观一致挺重要的
>>(这就是祖训的门当户对)
在打算跟妹纸共度余生之前,最好离开双方家庭同居一段时间
>>(独立生存能力挺要命的)
后代的家教质量主要取决于女方,妹子的学历越高越好
>>(要打我的妹纸们,有本事放开BB!)
有BB之后,要祈祷不要被丈母娘坑
>>(各种祖传秘方神马鬼,哈哈哈哈)
你是妹纸程序员?生娃要做好计划!
>>(这件事非常非常重要,特别是如果还想在事业上有进一步发展的话。毕竟最少有6个月事业和生仔不能两全,生完了还要奶几个月娃,挺辛苦的。所以,选择高强度工作的间隙,跟上司和同事打好招呼,自己的工作写好委托清单。就算是意外得子,也要趁着孕期早做准备。否则生仔去了工作一丢,周围这个怨念啊~)
★★★如何保持安康★★★
吃喝和减肥?
看这个吧:
什么样的食物满足好吃、顶饿、低脂低热这几项要求? - Charles Stone 的回答饮食要规律,早中晚三餐都尽量都吃,多喝水
>>(胃病、胆囊炎、胆囊结石啥的,30多岁的人很多的)
保护好你的颈椎,关键是显示器要够高,用书垫高它或者买个升降支架
>>(颈椎病严重的话,手会废掉,不开玩笑)
保护好你的手指和手腕,椅子高度要调节好,键盘鼠标不要用太烂的。
>>(请自行搜索“脉管炎”)
保护好你的腰椎,可以考虑站立办公、站立会议、经常起来走一走。车上的座椅要调好。
>>(神马椎间盘突出啊之类的……)
保护好你的眼睛,夜晚的屏幕四周一定要有背景光,手机比PC屏幕更伤眼睛。
>>(长时间玩手机对颈椎也是大杀器)
晚上不要经常熬夜,基本睡眠要保证,否则白天精神会不好,同事间的印象会很差
>>(我是坏榜样)
找个女朋友有助于养生
>>(生活会变得规律很多,食材会丰富很多,体育活动更有动力,夜晚不会焦躁不安……)
锻炼这玩意是因人而异的,不要疯狂锻炼,关节受损极难恢复
>>(特别是登山、羽毛球、瑜伽,搞过头了非常容易受伤)
--------------------------
熬了10多年,能写的不太少。
欢迎准毕业生们提出各种脑洞大开的问题,呵呵。