吉日噶拉(在外企、上市公司工作过,自己也创业失败过,遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员,还是工作了十年八年的程序员都有一些经验值得借鉴学习。这里我也把《程序员你伤不起》这本书中的部分精华分享给大家,希望对大家有帮助!
值得注意的是书中的作者本身是一个小牛,没毕业前已经在大企业工作过很长时间了(.Net开发为主,C、java都有猎取),03年前就可以自己接企业项目了,但是后来还是遇到过很多挫折,主要是创业方面的惨痛经历。
通过本书,你会看到,即使你并不天赋异禀,成不了乔布斯和马云,但你依然可以有所成就,成为幸福的人。
(一)三年前的一个项目经验
主要讲的是作者帮公司拉了一个政府的项目,但是由于经验较少,谈的价格很低,还有很多细节刚开始没有谈到,后面相当于收了很少的钱,給政府干了一个比较完善的项目,这节的经验就是:程序员一般不应该直接和客户谈项目,应该让专业的人去谈,他能把10万的项目谈到50万或更多。
(二)2005年我的第一次软件创业,烧掉30万,两年时间打水漂
教训1.手上有技术,但是没有客户,没有产品,就靠着一腔创业的热血和对软件行业的爱好!
教训2.团队不稳定,各种经费、杂费、水电给、租房费、设备费,制度不够完善,成本没有控制好。
教训3.自己辛苦培养出来的技术人才,被客户三两下就要走了!人员的思想工作要做好。
教训4.小公司创业不要把财务完全交给别人,熟人也不行。可能最后生意失败,自己一点钱都拿不到了!
教训5.做公司不是做技术,更多的是做人,我做人本就不到位,做公司必败!
教训6.创业注意的问题点:
(1)为什么要创业
(2)我是个有经营头脑的人吗
(3)如何判断一个项目是好项目
(4)财务预算和控制
(5)如何与人合伙
(6)把自己摆正位置
(7)创业其实改变不了一个失败的打工者
(8)对行业的认识,上游和下游的掌控
(9)害人之心不可有,防人之心不可无
(10)靠人的买卖是最不可靠的
(11)偶然和必然的概率。。。
(三)投递简历请换位思考及前台页面设计比后台实现更值钱
简历
一般要信息全面,排版工整。
前台设计
前台设计是艺术,这个是没那么容易学来的,越往后写程序的会越不值钱,设计的相对会值钱一点。程序是技术,设计是艺术。技术可以批量生产,但是艺术无法批量制造啊。
(四)团队工作氛围很重要,没有好的氛围难出好的产品和项目
一个开发团队、软件公司需要有一个 良好的氛围,大家人心稳定,每个人都在有条不紊地忙乎实际工作上的事情,每天都有一点点成果,大家平时工作开开心心,一步一个脚印的发展。项目做的有条理,客户也满意,收款也及时,这才是软件公司生存发展的硬道理。软件如果做不好,软件公司肯定是开不下去的!
(五)奔三的程序员,平时都忙啥?想些啥?以后有啥计划?
每个人总要给自己寻找个方向,每个人都需要有个信念,没有信念,活着就没意思,无聊,觉得没有奔头了。作者是比较喜欢做技术那种,可以做到五六十岁那种,并且看到过更老的程序员!
1.比较喜欢技术,会经常学习,人需要不断提高否则很容易落后 2.看一些技术方面的书,管理经营方面也看,毕竟以后很有可能走上这条路。 3.多关心人情世故,多联系朋友、同事、亲人,努力建设和谐社会!其实是因为人脉比技术更加重要! 4.沟通能力很重要,文笔也是需要一点的,写报告,各方面交流都是会有的,毕竟技术能力不低了。 5.参与公司部分销售工作,做技术销售也是很重要的,也要让客户知道我们公司的技术能力是很强的。 6.软件系统的核心部分、通用组件部分、关键部分、标准样式部分、标准框架部分,这些都是软件系统的核心,不能指望新手来完成。 7.编程不只是20来岁做的事情,。可以走管理路线,也可以一直坚持技术路线。 8.生活不止有眼前的苟且还有诗和远方!
(六)你要有大客户,要有经济效益好的客户,你赚穷人的钱是很难的。
离职了也别成敌人,开开心心的离职,将来还是会有合作机会的,说不定还很大的机会。
你要有过硬的技术,让客户相信你,觉得这个事情你是专家,让你来做没错,你要时刻让自己的技术超出常人的水平。
拉客户要有个过程,小事情干好了,人家才放心把大事交给你去做,不可能一步登天。
不要做过于廉价的劳动力,那是在破化市场,尊重自己尊重别人,免费給别人当然可以,但如果那样做,IT就更不值钱了。
赚钱的机会不是天天有年年有,要学会抓住机会,错过了这个村就没有这个店了。
大项目都是有比较的,不是随便给你的,价格也不是乱开的,别人赚的钱也不是天下漂下来的,你需要战胜对手,才能拿到机会。
(七)走火入魔闭门造车之.NET疯狂框架经验分享
好东西多得是,就看你如何看待它们。就像我下载的1G的C#文档一样,电子垃圾一大堆,天天跟在新技术屁股后面,也难提炼出个啥来。因为你永远跟不上时代的进步。你的积累也会变成你的包袱,除非你有惊人的毅力,不断完善你的积累,那最起码你要连续几年不打游戏,节省时间才能提炼出来,或公司出钱给你烧,也能烧出来。
不是新技术出来了,你以前的积累就推倒了,除非你以前的积累是经不起考验的,否则是不会被推倒的,新技术只是锦上添花而已。软件整体的开发不会轻易发生天大的变化,你需要的是不断吸收新技术,了解新技术的长处和定位,然后把需要的新技术消化好,用到自己的整体框架中。
(八)最近几年软件项目的心得体验
1.做软件外包的经验告诉我
做软件需要人海战术,做软件需要大量的体力劳动,而不是脑力劳动
2.我们技术副总的主导思想
客户的需求变来变去怎么办?客户的需求变了,并不是坏事,让客户填写好变更表,把工作量变化給客户确认,秋后算账。工作不就是干点活做点项目吗?哪里不一样,这个项目工作量越来越大,钱也是越来多,不是坏事。
3.我自己的主导思想
想多赚钱怎么办?直接找上级谈,你能干出啥来?想要多少钱?多长时间过好?对公司有啥好处?都谈明白了,老板也会答应的,大家都有好处,都在影响自己的心情,不能好好干活。
4.身边一直发生的事实告诉我
与领导沟通好,报告写好,比拼命干活效果好几十倍!别总埋头苦干,干得累死累活,没人知道你有多辛苦,及时向领导汇报情况交流。
5.我比较佩服的事业部经理告诉我
不能完成工作怎么办?最愚蠢的做法是通宵几天,突击几天,然后累死累活,最后还是没能按时完成,人也累趴下了。其实,不能按时完成工作多了去,这时要先分析清楚延时的原因,找上级说明原因,让他们认可你的理由。然后把接下来的工作合理的进行安排,有条理的一个个做好。
6.我的自身N年工作经验表明
做软件为什么那么累?因为软件是个细活,不是敷衍了事对付对付就可以的,需要一行行代码写出来,不能思路混乱,也不能偷工减料。不管是太理论也好,太理想化也好,总得有个理论指导实践的主导思想,否则这事就没法干了。
(九)不要給自己编织过多的理由,借口是永无止境的
工作要有力度,不能老是没完没了找借口,每个人都可以给自己编织出美丽的借口理由来,听起来事那么地有道理,其实理由都是給自己编的,自己给自己下的套。
(十)打工和创业不同的心态
这几年给人打工,感觉真是太幸福了,每个月不管业务好不好,不管客户给不给钱,老板都会按时给我发工资,卡里有钱了,不愁吃不愁喝,真幸福。
自己不开公司不知道赚钱有多难,自己不当老板不知道給员工的工资已经很高了。不要以为自己创业就比打工可以赚更多钱,我见过很多朋友,自己创业创得很辛苦,但是他们打工的活可以很轻松拿到10K以上的薪水,但是他们非要自己创业,非要往火坑里面跳。
(十一)IT创业光技术好,谋略定位不好,可能照样会死得很惨。
你可能有了一个很好的创业思路,就感觉用这个思路去创业,成本地,风险低,成功的概率高,你会跟你的好朋友探讨你的思路,会和你的好朋友讲解你的经营模式、经营理念,甚至带他到你的公司参观感受一下你的成功。这时候你很可能在做一个错误的决策,你的朋友也不是吃素的,他也会模仿你,抢你的生意,抢你的机会。
我觉得我的积累还可以,还做出了娱乐场的计费软件。我以前的合作伙伴偷了我的成果,销售了几十套。你的成果很容易被被人偷窃,你要学会保护你的劳动成果,你的劳动成果未必给你带来什么经济效益,确定给你的敌人带来更多的经济效益。
小结:
1.开公司首要的是要明白你做什么可以赚钱,而别人不知道,或者还没抓住。你程序写得好,项目写得好,算个屁啊!全国程序写得好的人多了去了。你努力啥的,更没用,天下努力的人多了去!
2.身边都是虎狼,都是人精,都想吸干你的血,都是指望着跟着你或者从你身上捞一把的人。
3.创业千万不要又出钱又技术。要么烧别人的钱,要么别人出技术。你全出了,风险大,压力也大,甚至都没有精力跑市场。
4.你要找比你强的人合作,你能从他身上学到东西,而不全是你给予别人。与比你强的人合作,你绝对不会损失啥。
5.创业了,玩人一定是比做项目、干活更重要的事
6.小公司把股份分掉,你就是不要股份又能怎么样?等你玩透了,自己再开间公司又能怎么样。你給员工1%的股份,他都会很开心。甚至你卖股份給员工,还可以融资一把。
(十二)为什么我们每做一个项目软件,总要被折腾得死去活来
1.软件是个庞大的工程,不像盖小民房,可以看得见摸得着,软件是一个看不见的庞大工程,所以一个像样的项目,一般没那么容易就能搞定的。
2.客户的需求变来变去,我们也要跟着被折腾来折腾去,没有一个很确定的功能需求。
3.我们的技术不过关,写的代码质量不过关,稀里糊涂,对付来对付去,我们的代码经不起客户的折腾,没折腾几下,就可能被客户的需求給弄死了!
4.客户的需求无边无际,没有一个明确的范围,其实客户的需求范围是需要限定再某个明确的范围内的,工作就在这个明确的范围内开展。
5.可能我们没有一个成熟的开发框架,每个人都在摸索,每个项目都在摸索,那是很浪费人力物力财力的。
6.我们没有严谨的分工分界思想,哪些功能应该是再哪些模块做,哪些功能是在哪个实现才对,哪些功能应该在前台做,哪些功能应该在后台做,可能都是混乱的。
7.我们一直追求“差的不多就可以”,导致我们做出来的程序不好用。漏洞百出,错误多多,无法将注意力都集中在客户的业务上。
8.公司没啥积累,一切都要重新来过,做一个项目走一批人,一年又一年,原地踏步。
9.项目组人员,同时负责好几个项目,东搞搞西搞搞,无法集中精力做好一个项目,哪个项目都是半成品,都是个噩梦!
10.拉一个项目,招聘一批人,各路神仙,思路不一样,做事风格不一样,写代码不一样,驴唇对不上马屁股,无法协调好!
11.老板不懂技术,以为有几个人就可以搞定,没有测试,没有质量管理,没有需求分析,瞎搞乱搞,折腾来折腾去。
12.软件不像其他行业,是需要每行代码仔细写的,仔细琢磨,不能靠吹就能吹出来的,需要精细的编写,最后才能出来结果,也不是买过来,卖过去那么简单!
13。公司大部分都是眼高手低的家伙,平时东扯淡西扯淡,不踏实干活,尽搞些虚无缥缈的东西,没人干实事。
14.公司里往往耕地的牛是不讨主人喜欢的,汪汪叫的小狗却会讨主人疼爱,主人更喜欢小狗。但是做项目需要的是牛,不是靠小狗叫叫就可以了。
15.公司氛围不好,心情也会不好,压力会增加,代码量也是会下降。
(十三)一个完整的软件项目,最起码要注意什么
1.项目是谁拉来的?如何拿到了这个项目?公司给了多少业务经费?如果自己是业务员,收入会如何?
2.客户谁说了算?谁是这个项目的关键人物?这个项目的关系人都有谁,他们在项目中起到了什么重用?
3.项目的工期是多久?都需要哪些功能?客户经理的理想工期是多久?客户的期望值是什么?
4.项目的成员是如何组织的?人员是如何管理的?项目里分工是如何划分的?
5.项目的预算是多少?预算谁说了算?计划工期是多少?
6.项目总开发中的错误是如何管理的?
7.项目中遇到的难题是怎么解决的?
8.项目里的都用了什么技术框架?
9.项目里的技术分层是如何实现的?
10.后期发生的问题,是怎么处理的
11.上线是如何进行的
12.后期有没有在挖掘这个客户,有没有在挖出个类似的啥项目来?
当然还有很多很多可以通过实际的项目过程学到的有价值的知识点。
(十四)学习提高要积极主动,诚信对待别人,别人也会诚信对待我们
在一定的瓶颈阶段,我们要学会想办法去提高自己
,不管是向同事、朋友、网友,都可以进行交流学习
,最好是找一段时间面对面的实际交流
。并且要诚心诚意
,要有交互的过程,不能只是别人教你知识,你也要有可以交换的知识,这样人家才愿意。
(十五)如何突破月薪大关
IT软件人生,人生的几次升华:
1.能独立完成任务,能做项目,升华一次。
2.技术过硬,思路严谨,升华一次
3.学会与别人工事,团队协作,升华一次。
4。当项目主管,升华一次。
5.经营一个公司,升华一次。
6.安稳下来,有自己的家,升华一次。
7.结婚,升华一次
8.当爸爸,养孩子升华一次!
如果能力不够还是要用力提升自己,能力够了可以向上级提出要求,或跳槽都会有薪资的提升。
(十六)辞职也要辞得帅,辞得大家开心
辞职要注意的事项:
1.辞职需要提前一个月说好,最好能有书面的的邮件方式給相关的领导。
2.辞职的时候,最好先跟部门的经理说一下,不要直接跟老板讲,管理上比较重视不要“越级”
3.辞职前,把手上的工作都整理好,把能结束的工作尽量结束。
4.如果是跳槽到到新单位上任,不要太急,最好等能最长的上岗时间,因为你跳槽了还需要办理很多事情,例如你的档案、养老金、公积金等等。而且规范的单位要初始上一个单位离职的证明,所以不要和上一个公司闹扳。
5.年底不要轻易辞职,一般很多单位都有年终奖,一般多少都会有一些。
6.不要和同事的关系闹僵,因为你的辞职,会导致有些事情要让别人擦屁股,还有些恩恩怨怨,积累多了,不太好,人总要有一些朋友的,如果你结婚或办什么喜事,想请一些朋友来乐一乐,也不会来几个。
7.需要有一颗感恩的,我们的技术、水平、机会,并不是靠自己的努力,很多是从同事那里学来的,是公司給的机会提高了我们的水平。
8.其实一个城市的IT圈子的不大的,很有可能你跳来跳去,还是跳到原来的公司,或者你以前的同事跳到了你公司当了部门主管。所以平时要注意不要得罪同事,不要以为好马不吃回头草,其实天下大也大,说小也很小。
9.有些机会是朋友、以前的同事、以前的客户提供的,所以要珍惜眼前的同事、朋友、客户。
10.不要说自己的公司的坏话,若你以前的公司很不好,那就代表着你也很一般。
11.就算辞职了,也要学会说人话,要感谢公司的培养,要感谢部门经理的栽培,要感谢同事的关系。你说点好话,公司领导也会另眼看你,说不定你在新单位混不好,混不开,还可以回到原来的单位工作!
12.其实这些软件公司的老板们相互之间也是一个朋友圈子,也经常有来往的,你跳槽到另一个公司,他们也会通过其他途径了解你在原工作单位的表现、为人、技术水平。
13.自己也曾经当过不成功的老板,也能感受到员工跳槽的痛,明明公司和客户有外包关系,一看对方的公司比自己的公司有实力,就跳槽到对方的公司。生意也受到损失,培养的员工也都跳槽到客户那里去了,还怎么赚客户的钱?所以要选择好及要的效果是损人利己还是损人损己?最好是哪个都不要损比较好。
14.跳槽从另一个层面考虑,也能变成好事情。
(1)从公司的角度考虑:这个公司不错,别人肯挖这个公司的员工,说明信任这个公司培养出来的员工。
(2)从员工同事的角度看:跟我们水平差不多的人可以进入更好的公司,能拿到更高的薪水,那以后有机会了,我们也能拿到更高的薪水,会有更好的前途。
15.总的来说,公司是你的跳板,是一个台阶,你需要有点感恩的。辞职时,跟部门里关系好的同事吃上一顿饭。
16.辞职从贬义理解就是“逃避责任,逃避现实”
,其实不管是在哪个公司混,都差不多,我们比拼的就是技术能力、人品、为人处世而已。你在这个公司混不还,到另一个公司也是很难混得开。
17.辞职了,虽然脱离了苦海,但是很有可能进入另一个苦海。人走了,也不要一刀两断,能维护的,最好继续给维护,能交接的尽量交接。以前的工作都是你的血与汗,别白流了,能让后人重复利用,尽量重复利用。说白了,那也是你的孩子,你真的忍心抛弃你的孩子不管吗?
18.从原公司辞职,公积金、养老金停止缴纳了,最后一个月工资有争议了,到新公司,又有三个月的试用期打八折。其实仔细算一下,这个一来一往,差距还是比较大的,所以多给个四五百就别跳槽了。我曾经的原则就是要多给个2000到3000才考虑。
(十七)一个老程序员的未来十年计划及目标
废话不多说,把自己的目标列出来,给大家参考参考:
1.现在本科学历有点混不开了,我一直没有时间读硕士,应该抓紧时间读个硕士来,再考虑是否读个博士。不管是读在职的,还是花钱深造都是可以选择。否则有可能将来很不好混了,扫地的都是本科的了。
2.年纪也不小了,也该考虑,婚姻和孩子的事情了。
3.现在是公司的中层干部,争取通过努力工作,拼搏到公司的高层,年收入有个稳定的三十到五十万左右,养家糊口不成问题。
4.将自己的注意力从技术上转移到人的方面。更多的不是玩技术,而是关注技术和管理,关注身边的同事和客户,同事再技术方面也希望跟上发展的脚步,不要落后太多,最起码什么都懂一点。
5.劳逸结合,身体是革命的本钱,不能为了赚钱不要命,身体垮了,谈什么事业,谈什么将来。平时注意休息,锻炼,争取不得大病,小病也尽量避免。
6.做个全国行业内有点知名度的产品来
7.年纪大了,对泡妞也没兴趣了,总得有个喜欢的东西做做,例如钓鱼、收藏、那我就来个以做软件为兴趣爱好。打发打发时间。
8.要成为某个领域的专家,精通此行的管理(当然不能说是软件开发领域的专家,这个太不值钱,竞争也太激烈的,更新得又快)
9.开拓几个有实力的合作伙伴,也没有必要太多,精一些就可以了。
10.关注纯软件以外的知识领域,例如工业制造、数据采集,指纹系统,人工智能。也不指望深入底层,只要掌握一些集成的经验及应用就就可以了,毕竟技术有专攻,跟行家是没法比的。
(十八)我是如何学习一门开发语言的
1.每个年代学习的的途径不同。我按当时的方式来讲吧,想到图书馆去找,哪个本子都会翻翻看,然后哪个图解多,我就会有买哪个的意向。而且图解多的,看起来不累,还可以有个参考,就算没电脑再旁边,也会大致看明白啥意思。还是比较喜欢台湾人写的书,几乎全是图,没几个文字,而且学习的效果往往很好。还有就是,我一般购买清华大学出版社
的书,相对质量会好点,其次是人民邮电出版社
的。
2.学习也会很容易造成原地踏步的情况,因为你学前几本书的时候,学到的东西很多,当时后面看的很多书,内容会类似,所以需要自己把握好。
3.书都自己购买就太浪费钱了,所以我一般是从图书馆中借书来看。
4.参加工作后,我的学习方式就有些改变了,经常看网上的技术文章,看技术文章的时候心里会想着我也要成为别人羡慕的高手,这样就很有兴趣看技术文章了。
5.其实也不要怕买书浪费,你能收获到的知识的价值肯定比你买书的价值是要高很多了,前提是你买了就要看,不然就不要买。其次,不要买过时很久的书,因为现在知识更新还是蛮快的。
(十九)曾经想学很多很多,最后发现自己只能专心学好很少的那么几个必杀技
1.软件行业最终出来的还是产品,在某个领域不断地优化,干多久就优化多久。当然要有敏锐的洞察力,能想先知一样知道客户将来需要什么,会需要什么,那你就离成功不远了。
2.一把宝剑与1000把粗制滥造的刀比拼,最后哪个会胜利?1000把烂刀都拼不过人家一把宝剑。
3.十年后发现,很多东西,丢弃的丢弃,落后的落后,淘汰的淘汰,唯独这么一个轻量级的开发工具库一直伴随着我的茁壮成长起来。
(二十)程序员12点,你睡觉了吗
谈谈我的心得体会:
1.晚上熬夜,早上起不来,那就是天大的痛苦。早上赶车、挤车,因为你精神不够很容易出事,或被小偷光顾。
2.你的领导、同事、客户看到你平时工作精神不集中,对你的评价会比较糟糕,以后有好事情也一般轮不到你,这会影响你的前程。
3.由于晚上没休息好,工作效率会很低,思路会很混乱,该做的事情没仔细做好,迷迷糊糊、稀里糊涂的一天就过去了。
4.一个作息不规律,邋遢、做事稀里糊涂的人,我就是有个漂亮的妹妹也不会介绍给他。
5.不按时休息,很可能会影响家人。
6.晚上加班了,没几个人看到你加班,但是早上迟到了,所有的同事都看到你迟到了。
7.年轻时身体像铁一样,等过了30岁,通宵一晚上要痛苦三四天才能缓过来。若年轻时,不珍惜,过了30岁,啥病都找上门来了,赚的钱可能没药费多。
8.早上起来太晚,一般来不及洗脸刷牙,头发也没注意,形象还是要主意好的,能给别人好的印象。
同学们,经常熬夜真的会影响你的前程,还是按时休息吧,除非时要命的事。
(二十一)春节后被面试和面试别人的经历
1.被人面试
书中的作者,投递的简历方向都是十年左右的工作经验的岗位,基本都是有面试通知,接着就是成果讲解,项目介绍是少不了的。基本也是能上岗位,但是还是选择了稳定的一点的那个。
2.面试别人
主要从下面几个方面跟大家分享,对面试官和面试者都是有一定的借鉴价值:
(1)简历环节
①曾经跳槽单位不要过多,总要有几个待了很长时间的公司,否则很难有高薪的机会。
②项目经历不要写那些幼稚的学习项目,写上一百个都是没有用,一看就是入门糊弄小孩的项目。
③项目经验不要太假,工作才两年,上十个项目,这么可能啊?走马观花?能长啥经验?
④工作年限、期望工资写清楚。
⑤其他方面,比如个人的详细资料,联系方式都是要有的,并且排版整齐
(2)笔试环节
①我们不是研究高新技术的,我们考的是你的基础功,虽然面试题目很简单,但是需要仔细认真的写,代码也要写工整些。
②简单的题目不会做,难的题目更不会做,无聊的时候还是要翻翻基础语法的书,SQL的书等等。
③不要藐视简单的题目,一般都是暗有玄机
④我没见过笔试很糟糕的,真正干活却很厉害的人。我记忆中的同事,平时工作厉害,笔试也不差。
(3)面试环节
①首先你不能有口臭吧,再穷也要买个口香糖,把口臭问题解决掉。
②带上纸和笔方面不时之需。有厉害源码或项目的可以带上电脑。
③头发梳理干净,穿得像模像样,第一印象是很重要的
④无法表现出对编程的热爱,会是好员工吗?
⑤笔试不好可以理解,但是几乎没有一个说得出口的自己擅长的东西,是不行的。
⑥沟通能力不好,或者自己的思路表达不清楚,一般是很难找到合适的工作的。所以平时工作要学会多交流,别跟你旁边的同事Q来Q去,学会直接张口对话不时坏事。
⑦我们更愿意录用那些看上去顺眼,性情稳定,目标明确,有一计之长,工作经验丰富、有实际工作业绩证明的人。
(4)老板环节
①虽然前面两关过了基本上不会有啥问题,但是也不要太随意,上层领导更看重精气神的表现。
②一些细节也要注意到:比如,敲门进入,坐着不要翘起二郎腿。
③老板也会很在乎你的沟通能力,职业规划,价值观,知识等方面
(二十二)想快速提高技术水平吗?你需要找高手,给你的代码来个深入点评
1.我们国内的程序员大多都不善于交流,即使善于学习,提高的还是不明显。不少工作了五年的人与工作了一年多的人的水平本质没啥区别。这种原地踏步的状态,会让人感到迷茫。
2.我们大多喜欢看技术文章,但是不喜欢把自己的代码拿出来交流,让高手看。说白了,其实高手也懒得看菜鸟的代码,所以你得求人家看才行!因为大师給你点评,你就知道,你与他们的能力差距体现在哪里,哪些没有注意到。
3.记得刚开始工作的时候,别人指出我,有些命名习惯不好,有些逻辑思维判断可以更简单写,刚开始我是有点抵触的,但是,后面想想,很多最基础的东西都没做好,怎么能算一个好的程序员呢?直到我现在认为,哪怕是一个字母的大小写没弄好,或包名没设计好,都是很不应该,很幼稚的错误!
4.那些难以提高的人的特点:
(1)目中无人,自以为是的程序员
(2)听不进别人的意见,总想抢着讲自己的观点的程序员
(3)不关心别人,天天闭门研究,而且着手与研究十年八年才能成功的项目的程序员—世界很大,你正在研究的很多问题,别人做就解决了!
(4)工作中,没遇到大师和高手,想交流和切磋没办法,只能考网络学东学西,再买几本书看,难以掌握系统知识的程序员。
通常来说,拿来主义往往是见效最快的。有效的沟通交流,比自己努力强上至少5倍。很多时候,研究别人的成果比自己从头研究要节省很多的时间。程序员总不是靠吹出来的,还需要静心写一写,但别忽略了沟通交流的重要性。
(二十三)接近60岁的日本IT软件小老头在干什么?我们能从他身上学到什么?
很多软件开发人员,好像过了30岁就迷茫了,30岁没当上管理职位就面子过不去了。还记得在上海遇到一个60岁的IT小老头,看看人家在干什么:
1.整个系统构架,都是由他选型的。例如整个系统分几层,用什么开发语言大多,当然包括数据库的选型。
2.到底用哪些三方组件,例如报表、三方协议处理软件、展示控件,而且对他们了解非常深入。
3.整个系统的例子程序基本都是他写的。并不只是选择系统构架,他把构架选好,还能让它跑起来,并且把范例程序写好(大家都是安装他的写法写程序)
4.编码规范、注意事项,都是由他起草,并且写得很规范。
5.几乎所有的设计文档,包括页面的初步设计,都是他做的。他知道整个系统需要多少个页面,每个页面需要什么功能,有很明确的说明,很详细。
6.数据库的详细设计都是他负责的,包括每个表、每个字段的名称、类型、默认值等。
7.项目中难题的攻克,特别是控件上的特殊处理,都是这个老头在负责维护更新。
8.项目的验收、与客户的沟通问题,项目的进度的安排和跟进、费用的计算都是由这个老头来负责。
跟这样的人一比,那些十年八年的老程序员,简直是小菜。没有个二三十年工作经验,哪里来的那么强的技术能力。但是坚持学习二三十年的技术也不是一件容易坚持的事!
大家就当一个参考吧!
(二十四)技术人员需要先学会做人,在学会做事,之后才能成事。以成名得利。
1.其实两个人做项目,既能体验工作的乐趣,又能相互学东西,多了很多安全感,少了不少孤独感。
2.经历N多失败也不是什么坏事,只要你不被失败彻底打败就好。没有惨痛的教训,就没有深刻的体会。
3.以前总想用实力来证明自己是最强的。认为把实实在在的实力拿出来了,别人应该不得不承认你的能力。其实,好胜性格的人在刚开始工作往往会碰壁,身边的同事也大都反感。
4.不管做什么事情,我们要记住一点。首先要得到领导的认可,从上而下执行的事情,往往会跟顺利一些。
5.一些建议:
(1)压住好强心理。
(2)先不要急于做事,低调低调再低调。
(3)遇到事情不要马上就和同事沟通,想把思路捋好,试一试可行的办法先。不要浪费人家大把时间。
(二十五)程序员找老婆—相亲节目引发的一点思绪
简单的说吧,在大城市里面的程序员找老婆不容易!年纪大了,程序员很多都是会去相亲。
相亲方面的劣势:
一个方面性情不够开朗,兴趣不够广泛,物质条件优势不大。而且陪老婆的时间不会太多。
还记得看非诚勿扰,一个片段,一个相亲的男的说我是个PHP程序员,然后场上的灯,马上灭了一大片,像打机关枪一样,主持人都一脸懵逼。这个引人发笑,但是却是值得我们程序员深思的!
(二十六)技术水平很高,但是正规公司为什么还是不录用这些人?
其实公司都是希望来的都是大牛,但是也要合适的。
※ 不容易被录用的情况:
1.越是规范的大公司多来的人,越不容易被录用。因为大公司出来的人一般都只懂局限的一部分工作,综合实力相对很弱。 2.越是规范的的大公司过来的人,往往不喜欢啥都自己做,已经习惯了做单种工作。 3.越是大公司来的人,薪资要求越高。 4.越是大公司过来的人,资历高,眼界广,管理难,你怎么指挥人家未必会听。 5.一个人的力量毕竟往往是有限的,就是招聘了这么一个大牛,他也未必能在短时间内干出重大业绩来。 6.很多所谓的牛人,都是两手空空的牛人。
容易被录用的情况:
7.至少有两年的工作经验。实习生是很折磨人的,学得不好,公司又不想要,学的好的,又很有可能不久就跳槽! 8.做过几个像样的项目,手上有实际工作成果演示。很多时候公司不是要你的代码,而是看你的工作能力。 9.笔试成绩好,思路严谨,程序也写得不错,数据库SQL语句也写的条理性很强。 10.行业开发经验越接近越好。 11.正规的大学本科毕业。 12.薪资要求合理。 13.长相虽然不要求很英俊,但是不能影响公司的形象,看上去干净整齐。 14.经历过一个完整的项目周期,从项目开始到项目结束为止,不仅会写代码,还能写一些相关的文档,有一定的设计能力,有一定的沟通表达能力。 15.肯努力工作,不时思路紊乱型的。水平差点,多教下,努力学习也是可以提高的。
其实程序员也就那么点工资,开始也不指望你做出什么惊天地的高深技术来。当然后期发展看个人情况。
(二十七)对普通员工而言,有效的沟通能力比技术能力更加重要
体现在下面几点:
1.有些有难度的东西搞不定,也不跟领导讲。不找同事问,不找技术领导问,只是自己闷头研究,好几天也弄不好。其实张张嘴,你身边闲着没事的 寂寞高手也是会愿意为你露一手的。这些人可都是过来人,都是有很多经验的。2.程序模块写好了,也不跟领导讲一下。写好后接着闷头学习研究新技术,或看新闻等等。其实你的程序可能还有很多未知的问题,或要修改的逻辑。3.修改了程序也不跟组员讲一下。想怎么改就怎么改。这回让程序代码后期维护很难。4.修改了Bug也不跟领导讲一下。测试人员不知道,修改后量注解也不加上去。。。5.工作任务无法完成也不跟领导说一下。不知道是处于面子问题,还是拍别人说自己能力不行,总之一大堆工作没办法按时完成,也不跟领导讲一下。 其实吧,任务完不成也是偶尔会有的情况,要提前说一下,好让领导有个充分的考虑,重新分配把一些任务,让别人来完成一些,以免耽误了项目的进度。 不能按时完成任务并不是天大的错误,没有及时汇报无法完成任务才是天大的错误。6.技术不行,你可以学,可以模仿,可以copy过来修改。但是沟通能力不行,不时一天两天就可以改得来的。这就要求你平时要多注意有效的沟通技巧。
(二十八)从代码质量检查中感受生活的乐趣
由于没有代码检查这个步骤,很有可能导致最后的错误被放大很多倍。没有代码检查,既要耗费测试人员的时间,也耗费领导的时间,最后你还得改,可能有些功能自己都不太记得了!需要花一些时间理顺思路!
所以及时检查代码是很有必要的,要把自己的代码当成自己的孩子来看待,你会愿意自己的孩子,天生畸形吗?
代码检查的几个参考点:
1.要有比较可行的编码规范,这样可以统一规范大家,否则不知道谁说了算。 2.大家要有共识,有一个良好的代码质量互查氛围,每个人都有意识的相互检查。 3.程序如人。程序有无Bug与做人好坏是一样的道理,我写出来的代码程序就是我人的质量。不能容忍代码程序有瑕疵。 4.要有强烈的责任意识。我的软件有问题,哪里还能按时下班,安心的过生活? 5.检查代码也需要有高水平与高境界,不只是需要有这个意识。检查代码的能力也是可以提升的! 6.一个人努力做事情很重要,大家一起努力做事情更重要。
(二十九)谈某些程序顽固的思维方式
下面是一些程序员的顽固思想例子:
1.没有设计文档
误区:很多人会认为设计文档瞎耽误功夫。
其实吧,有设计文档还是好一点的。就像向有设计图纸,再有模型。。。设计的程序总要逻辑页面吧,还有必要的备注呢。若一个软件,连像样的设计文档都没有,以后怎么上层次,怎么有提高?
设计文档也是对自己思路的一种锻炼,不管是工具的使用,还是实际设计。。。
2.拒绝重构
程序里面有一大堆命名紊乱,功能重叠的代码和写错位置的代码,这些很多都是只有当事人才清楚的。
很多人认为程序稳定,不出问题就可以了,但是后期维护的?有时候辛苦的还是自己啊。
3.拒绝使用现在新的方法和框架
其实就是害怕学习,一般的来说,新的东西大都有它的价值,旧的东西会被慢慢取代。比如说现在相应式编程就很流行哦。要多听听比你经验丰富、能力更强的人的建议。
(三十)典型的国内小项目经验分享
国内项目的几个典型特点:
1.项目临时性比较严重,突然要开发。 2.项目工期短,总共也就两三个月时间。 3.项目人员变得大,开发人员不稳定。 4.项目成员少,有时是两个,有时是一个人开发。
(三十一)创业前,你要思考的问题
有些人头脑不冷静,盲目走上创业之路,创业后自己辛苦不说,生意难做,还会遇到很多生存问题,资金问题,人力资源问题,可持续发展等等诸多问题。
下面是创业需要谨慎问题:
1.同一个时间过一个项目时,人的精力会很集中,这样效率也会高。但是同时做好几个项目,人的精力就会分散,往往处于应付表面的状态,无法对项目进行有力的推动。
2.干自己的事情和干别人的事情境界完全不一样,往往给你干活的人或者与你合作干活的人,不会那么拼命,不要期望太高。
3.项目人员变动的可能性很大,开发的周期相对比较长。而且就算自己不出变故,很有可能客户会发生变故,整个项目的风险系数比较大。
4.刚创业时往往很难走产品路线,大多走的时项目路线。每一个项目的个性化需求,业务需求差异大,无法充分利用上一个项目的劳动成果。
5.为了可持续发展,就得一边做现有的项目,一边接洽下一个项目,这样会耗费很多时间,而且分散精力。
6.若项目不是自己带,往往很难控制它的规范性,严谨性,很容易进入一个一团糟的局面,后期收拾这个糟乱的局面,也要耗费N多精力和时间。
7.一个公司的房租成本、办公成本、日常经营成本、招待费、差旅费等等开支也不少。
8.接下来很可能在不同的城市和行业,要同时打赢好几场战争很不容易。
9.接一个项目容易,但是天天有项目不是那么容易的。开拓一个信任你的客户比抢别人的客户更难。
创业过程中一下子要花费几万块是很正常的事情,和可能折腾几下就亏空了。特别人没有明确产品方向的软件开发人员,创业还要谨慎。
(三十二)感受 结对编程 的威力
其实就是两个人编程。
一个人编程遇到一定的阶段难免会有松懈,并且思路相对狭窄一些。两个人编程可以一起交流,一起探讨并认自己的劳动成果时就不会那么无趣了。并且两个人一起编程,谁也不好意思偷懒,代码的检查率也高了不少,出错的概率会低很多。
亲自体验了一下结对编程的威力,不错,值得推广。
(三十三)用什么心态对待糟糕的程序员
这些年遇到不少糟糕的程序员。其实正在写程序的人,普通IT公司大概只有1/3,有2/3不适合当程序员。还有部分时比较糟糕的。
为了减少这些程序员的出现,可以注意下面几个方面:
1.招聘时一定要仔细看简历,核实简历的真实性,尽量防止把糟糕的程序员招聘到公司中。
2.招聘时一定要有笔试。笔试可以不难,就看基本功如何、表达能力是否可以,编程能力合格就行。
3.招聘时尽量别一个做主,尽量多做几轮面试。
4.招聘时一定要有试用期,如果时糟糕的程序员可以把试用期延长。
5.若一个程序员比较糟糕,赶紧向领导汇报情况。长痛不如短痛。
6.糟糕的程序员写出来的代码是很糟糕的,后期维护改进是永无止境的痛苦。
7.糟糕的程序员一般思路紊乱。而能把一个不靠谱的人培养成一个靠谱的人,需要遇到高手,如果没有这个能力还是让别人去培养吧。
8.遇到不靠谱的程序员,就委婉的建议它干其他行业。
9.一般来说,不靠谱的程序员与学历、工作年限是无关的。
(三十四)国内 IT生意难做,想生存发展大家还得多思考一下,出路在哪里?
国内项目的价格已经压得很低了,还有些公司不计成本,亏本的买卖也干,导致现在国内的项目生意是非常难做的。贱买贱卖的实在太多了。
希望中国IT行业的残酷的竞争环境能给那些想创业的开发人员泼个冷水,若是积累不过还是安心地好好打工吧,生活质量会更好。
(三十五)管理重要还是干活重要?
以前习惯了个人英雄主义,现在更多的是注重团队合作。当然,从心底重视团队合作与嘴上讲团队合作是两码事。
1.我们国家很可能做开发的人比美国多,但是由于管理水平没人家好,我们再辛苦,还是干不过别人,因为缺少正在核心的管理。
2.虽然我们国家缺少非常优秀的大牛,但是相对优秀的开发人员还是不难找的。
3.能把一个庞大的队伍带领好,指挥好,是非常有挑战性的,我们又有几个人能管理微软、Oracle、Google这样的公司呢?
作为一个又十几年检验的程序员,我也发现了,我们缺少的不是普通开发人员,缺的是有管理经营能力的人。
中国IT行业差的不是程序员,不是钱,而是精英管理人才。
(三十六)建议一个人做项目,也建议使用版本管理
项目管理的好处:
1.有时候由于操作失误,程序覆盖了,找不到原来正确的代码,那会很辛苦的。
2.若同行看到你自己一个人写代码都在用版本管理管理软件,他们都会觉得你很专业,将来指挥大家也会更容易一些。
3.如果需要别人帮你修改代码,而你很早就在用版本管理器,在加上几个人一起开发会很方便,效率也会很高。
所以代码要保存好是很重要的。你最好随时上传到自己的服务器中,或公司指定的服务器中,并且不定时的把自己的代码放到移动硬盘等设备中保存。
(三十七)为什么曾经的公司不做外包项目
理解:
1.现在很多商家不够诚信,不遵守合约,在做外包的过程中往往会采取挖墙脚的战略。
2.若碰到不要脸的、实力强大的客户,他会主动索要你的员工。
3.做外包的过程中往往会有员工离职的情况,这时又要补充新人,重新理顺项目。
4.做外包的过程中,很多技术、很多做法,都会被客户学到,客户自己学到了后,很少再有持续的合作,或者下次合作把价格压得很低廉。
5.虽然做外包项目能有小的盈利,但是无法长期盈利。因为做成功的东西的版权都是客户的,不是开发公司的。
(三十八)在北京做银行项目的亲身感受
总结:
1.银行项目对软件的安全要求比较高,信息的发送接收都需要有安全保障。
2.需要多重密码来保证系统的安全性。例如登录时需要密码,进行数字签字时需要密码,交易时也需要密码等。
3.所有的数据都需要进行数字签名,采用公钥、私钥的方式进行不对称的签名验证,以确保数据安全。
4.所有的窗体、数据、按钮等都需要有严格的权限管理控制。
5.其他。。。
(三十九)这几年养成的几个比较好的工作习惯
1.做事情要有计划,不蛮干,不瞎折腾。
例如,把需要做的事情都列好,哪个做好了,就打个勾,一个个把事情搞定。
2.没有事情做了,向领导说一声,领导安排下来的事情做好了,及时汇报领导,能做到这一点是很不容易的。
3.每天做了什么记录下来,每周回顾下,偶尔有空翻看下,以前都折腾啥,以前的折腾是不是可笑,是不是做了正确的事情。
4.平时主张“站立式开会”,大家把需要解决的问题说出来,已经做好了什么,接下来做什么,别扯个没完没了。站着开会很节省时间。
5.尽量用电话+电子邮箱的沟通沟通方式,电话沟通及时有效,电子邮件有个依据,能留下痕迹,证据。
6.至少看《程序员》杂志,溜达CSDN,博客园,51CTO,了解一下行业的动态,别一不小心成了井底之蛙了。
7.平时多注意积累,不重复劳动,不盲目劳动,把自己的劳动成果尽量重复利用。
8.只为赚钱折腾,不赚钱的事情,就不折腾,人的精力是有限的,折腾来折腾去都会浪费不少时间和金钱。
若你有这些有点,那很容易变成管理型人才。
(四十)能亲自构架万人并发大数据量的软件应该是职业生涯的荣幸
一般的企业信息管理系统,20几个人用的就可以卖出20万的价格,当然如果商务谈的好可以卖出更高的价格。
做一个大项目,最难的是让别人相信你能把这个高并发高压力的系统搞定,这不是能靠关系或钱决定的,必须要有多年的积累,用事实证明你有这个实力,而且就算出了问题也能马上解决好。
那么大项目中需要注意什么呢?
1.首先需要有非常好的宽带,若要支持上万人同时录入数据,至少要10M以上。
2.需要有一台牛X的Web服务器+一台牛X的数据库服务器。需要录入1000万条以上的数据,最好采用Oracle数据库,经得起考验一些。
3.需要进行适当的缓存优化策略。不是所有的数据都依靠数据库访问,而要尽量多的使用缓存策略。
4.需要一个牛X、经得起考验的数据库访问层。如果是不好的数据库访问组件,或者不稳定的数据访问组件,很容易导致系统崩溃。如果占用非常大的内存,也会导致系统崩溃。
5.需要优化分页存取数据的功能,因为有可能有1000万条甚至更多的数据。如果分页没做好,也会导致系统崩溃。如果上万人同一个时间,或者在接近的时间点了查询某页的数据,那系统就真崩溃了。分页存取需要做到极致才可以。
6.需要进行数据库索引优化。有索引和没有索引的性能差异有时候是100倍,有时候是1000倍或更多。
7.严谨的高效的数据库事务处理。由于高并发,而且有些数据是需要同时写入多个表,需要保证数据库的一致性。
8.所有的系统操作日记、异常信息都需要完整记录下来。当系统发生故障时,可以快速排查问题。
9.需要经常检查系统的各项指标。例如各服务的内存使用情况、CPU使用情况,网络宽带使用情况。若服务器快受不了压力了,就得马上进行负载均衡,网络宽带不够了就需要马上增加宽带,不要等到系统崩溃看再去做这些事情。
10.HTML、JS等都可以考虑用压缩模式传输,那样网络传输效率会更高一些。
11.其他。。。
最后送给大家一张图共勉。
共勉:每每看到残疾人的场景,都会有一些感触。今天在车上看到两个残疾人在相互交流,当时感触也是很深,不禁想起:自己有手有脚,为啥不去绽放更多的色彩,不能等到很珍贵的东西失去了再去后悔,其实之前可以做得更好。总之,不要让自己以后后悔。
转自:https://www.imooc.com/article/254796