第三部分,未来职业生涯规划、家庭环境分析、例如经济状况,家人期望等。感谢您阅读《对话周鸿袆(二):从程序员创业谈起》内容,职场资讯网小编向您推荐一些职业规划知识,欢迎参考,希望能帮到你。

本刊之前与周鸿袆就程序员创业话题谈起,提到了一些观点,并得到了很多程序员的反馈,为了能够将程序员创业的话题再深入的进行下去,我们再次约到了周鸿袆。

记者:在上次的对话中,您曾经提到一些基本的理念,根据你自己创业的经历,当时的情况怎样的呢?

周鸿袆:李彦宏曾经讲过一个故事,百度刚创建时他想挖一些人,但有人根本看不上这家新成立的公司,百度上市之后,反而有一些普通的程序员因为早期加入而获得了巨大回报。我也有感触,最初我创建3721的时候,也找很多程序员。有些人总是要求我给他讲我要做什么事情,虽然他听不懂,但天天来和我辩论,跟我说:周鸿袆,我觉得这个事情不太靠谱,但靠谱的事情我也不知道做什么。

因此,3721的主力反而是一些刚毕业的学生,他们抱着学习的态度,知道我这个人不坏,跟着我总能学到些东西。现在,这几个1998年毕业的学生今年都可以退休了,有一个程序员叫曹曙,现在是雅虎中国的首席工程师,掌管几千台服务器,这就是选择的力量,和他们同期的一些程序员,可能也换了几个公司,长了几千块钱的工资,但随着年龄的增加,可能感觉前途渺茫,这就是活生生的例子。

中国人习惯宁为鸡头,不为凤尾。但事实上鸡头不太可能都成功,大家应该合起来做一件更大的事情。尤其现在风险投资越来越成熟,成为企业的一分子,初期可以拿到股票,中期可以拿到股权。对程序员来说,最重要的是获得创业成功,而不一定要主导,加入创业团队也是创业,一方面你可以学习,即便创业不成功也可以提高,一旦这个公司获得成功,自己也可以获得更大的价值。

记者:不过,我感觉程序员都有自己的主意,有一套自己的评价标准,您如何看?

周鸿袆:程序员容易犯一个错误,由于其控制机器的自信心很强,于是会造成很多程序员只有自己经历过的才会相信,要能说服自己才会相信,这是很大的一个障碍。半个航海的例子,船长是看方向的,因为他有这个能力,但如果其他人都不相信他,每个人都要爬到桅杆上去看一下方向,那这个船就没有办法行使了。我找一个程序员,首先要他承认他在编程上是很优秀的,我不去和他争论代码的细节,同样的道理,程序员要找一个公司加入,也不要和对方争论公司方向性的问题。

程序员的技术好,但是在商务、商业、管理、经验上肯定是有缺陷的,如果在这些方面也很好,那我也不相信你是一个优秀的程序员,程序员一定要明白,虽然自己在公司中是很重要的一环,但肯定不是最重要的,你肯定需要别人帮你确定一些方向,找到合适的有商业感觉的人,程序员需要这种胸怀,这不是为谁打工的问题。

所以,程序员在江湖上混,一定要跟对人,我的建议是找与自己互补的人。

选择公司时,程序员不应该挑方向,挑项目,而应该是挑人,因为未来很多方向都会改变,我们赌的是人而不是项目,方向再好,人不行也成功不了。要知道,正确的方向到处都是,IPTV正确吧,手机也正确吧,但问题是这些和你有什么关系呢,关键还是看谁在做,我们的确也遇到过一些程序员,他们总是来挑剔你的项目,遇到这样的人我现在就不理睬了,因为好程序员多的很。

反过来看,我面试程序员,我也不看他今天擅长JAVA还是擅长C,我会看他做过一些什么事情,积累了什么经验,并不会认为他原来做过WINDOWS编程以后就不能够做UNIX的开发,原来做LINUX开发以后就不能做手机开发。

所以说,程序员可以将选择的价值观考虑的更简单一些,问问自己的内心,到底想要什么?我还是鼓励一些程序员加入一些创业团队和公司,和他们一起去创业,进一步去学习,有经验之后,再去独立创业。

记者:那程序员如何选择要加入的创业团队呢?

周鸿袆:举个例子,风险投资选择团队其实也并不复杂,我们就看一个团队的履历,这最能够说明问题。因为大家都会吹,程序员选择加入创业团队,也很简单,就是看对方做过什么,看这些人的背景和履历。

对于GOOGLE和百度,如果五年前就加入是非常好的,但现在因为公司已经足够大,机会肯定是有限了。坦率的说,公司大了之后,都会变的官僚,节奏会慢下来,会多元化,丧失掉创业公司的活力,这是必然的。就像小孩子长大之后就不会活蹦乱跳的了。而且这些公司已经上市,留给大家去赌的利益空间也非常有限,微软为什么现在走了很多人,就是因为他太老了,我建议如果真的要自己创业,或者赌一下更大的未来,不如加入明天的百度,明天的QQ,当然今天你所承担的风险和未来的收益是成正比的。当然,作为程序员,既然要进创业公司,就要有心理准备,公司不可能一夜成功的,百度也整整做了六年。

IDG投资了很多创业团队,这些公司团队很强,很多人在互联网时候有过成功的经历,也很有创业的活力,我今年也可能去创业,因为我证明过自己,成功过,我有把五个人团队做到五百人的经历,而且我会吸收很多经验教训,因此如果大家愿意,也可以考虑加入我的创业团队,我也会把大家看成合作伙伴,一起创建强大的团队,一起创业成功,大家都可以得到分享。

记者:说服程序员加入一个创业团队并不是一件轻松的事情,因为他会受各种周围条件的干扰。

周鸿袆:很多程序员对创业的看法属于叶公好龙,说起来很热闹,但今天让他们创业或者加入一个创业团队,他又会担心了,可能会畏手畏脚,考虑收入不够多啊,可能不如大公司稳定等因素,我认为他们没有一个恒定的价值观,如果你要的是稳定,那就去外企,吃资本主义大锅饭,如果连加入别人的创业团队都不愿意,都不敢,何谈自己创业呢?毕竟很多压力不需要你去背负。

记者:我听说上次来采访之后,您收到很多程序员寄来的商业计划书?

周鸿袆:的确我收到了很多程序员寄来的商业计划书,但这些项目显然很难投,一方面很多人只是一个想法,当然也有一些程序员做出了产品,但仅仅有一个产品,而缺乏商业运作的经验和团队,也是很难说服风险投资的,中国做互联网,很难说有不可逾越的技术壁垒,只有你能做而别人做不了的产品。很多程序员在屋子里面做事情,做出来就当作一个宝贝,这类例子并不少见。

记者:那现在互联网发展非常迅速,是否是最好的创业时机呢?

周鸿袆:事实上,只要你想创业,机会总是有的,不会是过了这个村就没有这店。现在很多人说WEB 2.0很火,但也不会这次机会你抓不住就没戏了,就像十年前人们没有预见到今天的互联网一样,五年前人们也没有预见到今天搜索引擎的发展,我们怎么能预料到以后的世界呢。随着互联网的发展,未来的市场越来越大,机会应该是越来越多呢。而不是越来越少。

能不能创业和把握时间并没有太大关系,不大可能出现今年就会成功,五年后就没有机会的情况。事实上,能不能创业成功恰恰在于你目前所能把握的机会的能。如果在能力和经验方面不足,加入创业公司不失为一种弥补的手段。五年之后,你也可以得到一些回报,除了这些,你还可以了解一个创业公司如何做的,下一个创业或许你就可以主导了,人总是要一个台阶一个台阶的走,但很多年轻人总以为是两点之间是一步就可以跳上去的。

记者:您认为打工是创业必须要经历的阶段吗?

周鸿袆:是的,我认为打工是必然的要经历的过程,没有打工就不知道如何当老板。

原来我还标榜我是程序员,但有一天我发现我其实已经不是了,所以我就告诉自己我来适应这个商业社会,给程序员创建一个更好的环境。但这的确非常痛苦,因为作为一个程序员,有很多方法可以寻找快乐,比如不和人打交道,在论坛中我可以是版主,可以在网络虚拟空间中获得虚幻的控制感。但做商业是另外的一套方法,做商业就是要克己复礼,性格上的缺点不能太个性。

记者:如果程序员为了以后创业而加入一个公司,他应该树立怎样的信念?

周鸿袆:我发现很多程序员在公司经常问的一个问题就是做什么事情成功最快?其潜意识里是要学习一种一招制敌的功夫。我要讲,我这种投机的心理是非常有害的,企业中没有什么一招制敌的功夫。

因为每个领域在外面看起来都很小,有的项目听起来酷一些,但本质是一样的,真的要做进去,无论是网络安全,或者一个驱动程序,里面都有无数的问题值得深入,扎的越深,积累的就越多,在公司做的任何事情对程序员来说培养的都是一种发现问题、分析问题、解决问题的能力,是项目管理、人员管理、团队协作的能力和感觉,这是抽象于具体项目和应用的。项目中穴道的东西和项目本身没有关系,它只和你的投入程度和态度紧密相关。

所以,一个程序员刚到企业中,不要挑三拣四。我当年在方正程序员的时候,也遇到过很多我不喜欢的工作。但我想:我不喜欢做的事情,想方法尽快做完就可以了。但在这个过程中,我可以做的更有创造力,抱着这种想法做事,回头看时发现每件事情都被我做的很有意义,而且得到非常大的收获。

我可以讲两个例子,刚进方正的时候,老板不喜欢我,把我分配到新疆去干活,当时是做银行的项目,我确实对银行系统不感兴趣,但去了之后,过了一段时间,我发现大家的工作效率都很低,因为大家在UNIX的傻终端上编写程序。我是比较擅长做软件界面,而且当时对VC很熟悉,于是考虑能不能把VC的所见即所得、代码和联动开发的效果在UNIX下实现一套,这样就可以提高整个项目的生产率,后来我做了之后,不仅提高了生产率,而且还帮助方正积累了一个在系统集成领域的产品。

另一个例子就是我做飞扬电子邮件软件,当时做这个软件的时候,绝对不是大家所吹捧的我怎样高瞻远瞩。其实原因很简单,公司有个活没有人干,又派到我头上了,这个工作就是给国家机关秘书培训局域网上如何用LO-TUS电子邮件。这种工作很多程序员肯定不会干,他会想我是一个高级程序员,我应该编软件,让我给别人培训,这是对我侮辱啊。

因为我以前也没有用过电子邮件,于是去海淀图书城买了很多相关书籍,随着研究的深入,我发现电子邮件是个好东西,琢磨着是个趋势,培训过程中,那些国家机关的秘书学习软件操作很痛苦,于是我考虑能不能把软件界面做的很好用,于是我带团队做了一个邮件的外壳,这就是最早飞扬软件的雏形。后来,我又考虑把这套系统做到互联网上,让老百姓感觉更好用,这就是飞扬邮件的诞生过程。

飞扬虽然因为各种原因在商业上没有成功,但我收益菲浅。首先我积累了团队,让我真正了解了互联网上的商业模式,当时我就意识到要把客户端和服务结合起来做;而且我还通过这个产品认识了很多业内人士,这对我带来了很多帮助;同时因为这个产品,给了我一个很好的履历,这些都是我当初做培训的时候不可能预料到的收获。

很多程序员在公司挑项目,这会害了自己。只有你在干了五年之后再看方向可能会比较准。一个刚参加工作不久的程序员看不清楚一件事情,于是就不做,然后因为不做,所以没有经验,就更加看不准,我认为新的程序员在公司中不要试图判断一些事情的价值,你只要把眼前交给的每件事情做到最好。

所以我的结论是:一个产品可能会过时,一个项目可能会取消。亘古不变的是程序员在做事过程中的收获。

zc530.com推荐

程序员你真的只是程序员吗[1]


你是不是感觉标题有点矛盾啊,是啊,程序员当然就只是程序员而已嘛,还会有其他什么吗?

No,No,No,如果你以前是如此认为的,那看完这篇文章后,请从此打消这个念头,因为你要改变成一个不一样的程序员(怎么还是程序员?)

虽然我工作经验也就6年左右,但经历了很多,也自己创业过,也是从一个初级程序员走起,因为看的比较多了,某些东西也普遍存在着很多程序员身上,希望自己的经验能帮助你们。

当刚踏入程序员这条路的时候,有幸为一家公司开发一个大型的电子商务网站,因为这篇领域当时还算刚刚起步,自己的编程能力还不太好,所以做起来就比较吃力,每天重复着做完PM给的工作,但是做了大概几个星期,我发觉某些地方真的不合理,但自己又仅仅是一个程序员而已,怎么办呢?我还是按照PM的任务一步一步来做,私下里我用了大量的时间去尝试着我的做法,在接下来的几个星期,我试着跟我的PM进行沟通,他也发觉不错,所以一并写了方案提交给上级领导,很好的是,我们的领导发觉建议还不错,所以改变了原先的策略,对我们的网站原先的设计进行了彻底的推翻,一套新的理念就此诞生了。

这只是一个小例子,并不是炫耀自己的能力,我只是想说,程序员,你其实不仅仅是worker,更应该是Ideaer。当你选择程序员这条路时,如果你仅仅为了工作而选择的,我想你的人生真的很灰暗,为什么这么说呢?我面试过很多人,大多都是从培训中心出来的,虽然我也是从那里走出来的,不过我当时是为了学习编程而去培训,但现在更多的人会为了工作而去培训。其实如果你是真正的选择程序员这条路,我想你的思维能力一定不错,因为一般程序员大多是理科出生,理科靠的就是你的思维能力,在某些时候或许你的思维还不够敏捷,但我知道,每个人在接受了一段时间的工作后,就会产生各类的想法,或许某个想法你会改变你公司的命运,可为什么提出观点的人就寥寥无几呢?

我想可能是因为性格吧,因为很多程序员都是内向型,因为我们需要花一定的时间,去沉醉在代码中,因为这是一个奇妙的世界,无法自拔,所以很多时候就忽略了沟通,因为我们打交道最多的是abcd。如果你正是如此,希望你快点走出来吧,分清楚何时沉醉,何时交流才是最好的。我的偶像-唐骏,我看过他的访谈,他在大学时还是一个不会沟通的人,只是偏执于技术,而且和大多人一样,都会觉得自己什么都会,什么都行,是个天才,但在他大三的时候,他意识到了错误,花了几年的时间去学习交流、沟通,在宁愿委屈自己进入微软做程序员,再到无数次发意见给Bill,一步一步成就了这位打工皇帝。

所以,我们每个程序员要做的是,技术和沟通并行提高。在唐骏的话中,我会学到很多东西,他能从容应对每一次挑战,当时有幸成为唐骏的下属,见证过他的能力,虽然他当时只是个技术总监,但他的想法、创意给盛大带来了无比的利益,我不得不佩服他的胆大,不得不佩服他的能力。从他身上还学到了专一,其实很多程序员会在编程的道路上三心二意,这是很正常的,不过我相信一段时间以后你会学会专一的,因为程序真的很美,带来的不仅仅是工作和薪资。

我这里又不得不批判一些年轻程序员了,他们仅仅看中的是工资、福利等,没错,这是考虑工作的一点,但你要知道,有些时候,你第一点的工资,或许你会学到更多的东西呢?我经历过很多,经历过1年工资翻几番,又经历过折一倍,又经历过小公司,又经历过大公司,各种各样看的实在是很多,但我不会说我自己半途而废,因为每次我会把事情做的觉得自己可以了,我才会选择更好的发展前景。我面试过一些人,工作也就2,3年,做过的东西也很多偏向于OA、ERM等项目,就觉得自己很了不起了,工资也是漫天要价,可真正面谈的时候,我才得知,你仅仅是其中的一个小模块,但当我问其项目的整个运维的时候,就会楞个半天,最后来一句,这个模块不是我负责的,敷衍了事。那好,我问你自己负责的模块,如何具体写的,用了何种方式等,基本都会回答,三层架构,什么什么,My god 三层架构是你一个模块就能体现的吗?那好,既然你说三层,何为三层,三层的优点,缺点在哪里?诶~~~~~前几天首页那篇批判大学生的文章,我觉得写的太好了,你们这是在沉醉吗?如果你不喜欢,你为什么非要选择程序员这条路呢?

程序员你真的只是程序员吗[2]


或许上面写的比较偏激,但真的是很普遍,我想告诉你们,你们虽然只是负责一个模块,但无论如何,请要知道你的项目到底是什么,如何运转,哪些地方好,哪些地方不好,因为这是对你自己的一个提升,也是对公司的一个负责。说到负责,我不得不说责任感,很多人就是缺少了责任感,以为完成了任务就可以了,但你要知道,你的公司或许等的不是你的完成呢?

请您拿到项目需求的时候,分析一下您要做的东西,用你敏捷的思维想一下,该如何去做,还请您多想想下一步,如果扩展了,我要改哪些地方,最重要的是,请您想想,这个任务对公司是否有利,或许你会说你只是个程序员,我没有权利去改变任务,没有错,你是个程序员,首先请你完成你的任务,在完成任务的同时,想想任务的完成对公司的运营是否起到反作用,因为有时你会比你的老板更了解项目对公司的利弊。如果你真的觉得不太好,不要怕,提出你的观点,但一定要想好你观点的描述,尽可能的表达清楚,让你的老板知道你的意思,因为老板他不一定懂技术,所以一定要白话一点。如果你的观点是正确的,你们老板也听明白你的意思了,那样你们老板会更加的器重你,而不会不可理喻的让你完成他所要的东西了。毕竟这是对他好的建议,也是对公司发展好的建议,如果你的观点不好,那样老板也会给你一定的提点,何乐而不为呢?

下班后,请你抽空想想公司的发展吧,因为你是公司中的一员,公司发展前景好也代表着你的发展前景好,如果你的想法给公司带来了好的前景,那也是对你能力的一种肯定。

最后说说面试,我也经历过很多面试,同样也面试过很多人,刚开始也会为工作着急,到处找面经,但最好的面经是无法从其他地方找来的,因为面试是一个展示自己的机会,而不是一再的ctrl+v 。刚开始我也会紧张,但马上,我调整了自己,每次面试就当自己一种磨练,一种交流、沟通、展示的机会,随后的几次面试都比较成功,再随后的几年,我回到了老公司进行面试,显然他们对我的能力已经是一个肯定了,最后我还是没有选择他们,因为我回去面试只是为了看看公司的发展进行的如何了,因为这一切也有着自己的一份努力。最好玩的是一次邮件面试,对方给了很多题目,大多是网上都有的,我也没有baidu,用自己的想法回答了所有的问题,并提出了很多意见,没想到对方回错了邮件,把他给人事的邮件发给了我,貌似是说面试还可以,就是工资高了点之类的话,我也懒得继续往下看,回信给对方,发错邮件了。过后不久收到对方的面试通知,更确切的说是offer,不过在他电话中我直接给回绝了,因为我已经在一家自己喜欢的地方就职了。

我爱我的公司,我爱我的程序,我也爱我的老婆和家人,因为他们给了我快乐,也给了我支持,让我能更全身心的去投入到代码之美中,我更相信公司能异军突起,成为IT界的领军人物,因为我看到了一群为公司孜孜不倦,辛苦能力的同事,我很爱这种氛围,我相信我们的努力一定会给自己带来收获,就算没有收获,我也没有任何怨言,因为我沉醉了,因为我快乐,因为我是个快乐的程序员。

周鸿祎的创业心态:考虑失败比考虑成功多


未思进、先思退,对困难怎么估计都不保守

创业的基本前提是什么?不是投资,不是有一个好的产品。这个前提存在于创业者的内心。

创业是一件残酷的事情,1%的成功者是从99%的失败者身上跨过去的。而不成功的原因可能也并不是因为创业者不够聪明、不够优秀,而只是运气不好,时机不对。

古人说未思进,先思退,创业过程尤其是这样,所以,创业之初首先要对失败有思想准备,对困难有提前认知,怎么估计都不保守,这样在遇到苦难和挫折的时候就不会觉得那么难以接受。一个企业家经过十年获得了成功,你有没有决心把这十年的苦自己也吃一遍,甚至比他更苦,甚至还是不成功?

从战略上讲,做企业是一个伟大的事业,但是这个伟大的事业都是由琐碎的事情、困难和问题组成,只要做企业就要日复一日、年复一年地解决这些问题。在创业的过程中,可能会有很多人嘲笑你,或者是别人做的比你好,或者是产品没有按时开发出来你遇到N多个问题都让你感觉到创业就是自我折磨。如果创业冲动仅仅来自于看到别人的企业上市了,卖掉变现了,成功的风光就千万不要创业。这些动机都不足以支撑一个人坚持到底。

创业者是理想主义者

某种程度上来说,创业者应该是一个理想主义者,不能被物化的东西迷惑住。如果一个人的创业动机是为一些外在的、物化的东西所左右,就会今天这个因素起作用,明天那个因素起作用,十年过去之后却一无所获。

我也曾经到校园里演讲过,与很多大学生有过交流,我发现一个现象,很多毕业生找工作时总是在考虑:我要去北方发展,因为我女朋友在北方;我要去这个公司而不去那个公司,因为据说这个公司比那个公司工资高五百块钱,或者因为我们班有人去了那家公司,他都去了,我不能去吗?

这些想法,从一开始就错了。让自己的职业发展、人生轨迹取决于一些外在的东西这些东西重要吗?你内心想要什么呢?你内心最想追求的,毕业之前你就应该认真的思考清楚,毕业之后就应该去追求。这样你就可以按照一个目标坚定不移地走,虽然走得不一定是直线,但总是向那个目标在走。

当年我离开方正,离开当时看起来已经不错的职位和收入,很多人都认为这种放弃、这种勇气很难得,实际上我自己并不觉得,因为我很清楚自己内心想要的是什么,我要解的是一个一元一次方程,只有一个因素在决定我的选择,就是我要去做一个让很多人都可以使用的软件,当方正已经不能让我实现这个理想的时候,我就选择了离开,如果你把这些事情想清楚了,那么位置、既得利益,有形的无形的那些东西就都不重要了。

因此,重要的还是价值观,天生我才必有用,千金散尽还复来,创业者应该有这样的胸怀。

从程序员到软件工程师[1]


看了程序员系列文章,颇多同感。做为一个从业13年,一直做软件开发的人,我想给那些已经、将要和有志于走上这条路的朋友一点点忠告。

首先,说说程序员和软件工程师。虽说都是编程的干活,但是还是有一点高下区别。

主要说来区别是程序员programmer是将程序(已经有流程,伪代码或设计模板)写成代码;需要熟练掌握至少一门编程语言。而软件工程师则要将目的描述成程序语言并实现的能力。例如将数学算法、自然语言、思维模式描述成程序算法,程序流程/类或/和人工智能,并写成代码的能力。

对初入行的人,当然重在语言,要做一个合格的程序员,首先要熟练掌握语言。包括语言特性和实现的能力。例如使用尽量中文说的面试题,就要求面试对象掌握C++中的类的封装;构造函数的重载和运算符重载。

做过一两年后,要想继续吃这碗饭就必须提高自己,首先当然是深入了解语言,特别是语言的思维方式,编译器的工作方式和常用设计模板。就拿C++的多态性来说,很多公司面试就会问什么是虚函数/纯虚函数(思维方式)?用C如何实现函数重载(函数指针和了解编译过程)?接口类/工具类/工厂类和 Sigleton类的实现(常用设计模板)。另外还有一大块就是内存管理了。

如果能做到深入了解语言本身,那么恭喜你,你现在Title至少是高级程序员了。

在对自己的语言有信心后,下一步就想一想自己要想哪方面发展。是管理方面(项目经理)还是技术方面(软件工程师)。既然这里讨论编程,我们就先不考虑项目经理。想发展为一个软件工程师其实也有两条路。一条是走系统软件工程师或者叫架构工程师的路;另一条就是算法工程师。

在国内的朋友我建议走架构工程师的路。要求就是知识面广,对整个系统熟悉,能很快了解和分析客户/设计需求,很快估计工作量、风险和所需要的资源(承担相当部分项目经理的任务),能根据现有技术人员储备提供一个解决方案。当然还需要一定的表达能力和文档写作能力。例如我当年走访某省农行,和对方聊了银行卡和医院医疗卡的联网,当天晚上就和市场部的人合作,搞了一个通宵,写出了60页的技术方案和外加40页的基于此方案的标书。

一般来讲,要做到对整体系统的深入了解,没有两三年的时间是做不到的。所以给国内程序员的建议是不要频繁跳槽,尤其是不要频繁跨行业跳槽。踏踏实实地将本行业的软件吃透,最好每个部门或模块都工作过。如果有这个想法,一般情况下你可以和项目经理沟通,通常他们会鼓励你这样到各个部门/模块工作。

我出国后,发现情况有点变化,由于语言和文化的区别,对自己走系统工程师的路没有很大的信心。只好转向走算法工程师的路了。

确定了这条路后,突然发现自己的数学能力太差了。不得不重新恶补线性代数,概率和数理统计等高等数学。同时将《数据结构与算法:C++版》好好从头到尾读了一遍。然后终于蒙混到了一个职位。

当时第一个任务就是在一个嵌入系统中写一段程序将bmp压缩为jpg。各位可能会问了,这个在网上满大街都是源代码,为啥还要自己写呢?其实这就是我不太建议国内工程师走算法这条路的原因。除非你是数学大牛,有自己原创的算法。否则在国内实在没有算法工程师很大的生存空间。但是在国外有很大的不同,稍正式的公司基本上都禁止使用open source。因为open source也是有版权的,有的是不能商用,更有的copy left是那些公司碰都不敢碰的。因为copy left要求你使用了他的代码,你也必须公开你的代码。

当然,我们可以看那些open source,然后自己重写。不过相信我,通常情况下如果你不是想简单做些变量替换就交差的话,看原代码不如看这个算法文档本身。

程序员,如何从多个工作机会中做出选择?


在职业论坛中,应聘者经常会问到如何从多个工作机会中做出选择?。这还真不是一个容易作出的决定,而且由于在面试过程中无法正确回答关于职位或是所扮角色的问题,会导致面试变得越发糟糕。

面试是一个双向选择的过程,面试官在评估应聘人员适合适合这个职位或角色时,应聘人员也会根据自己的兴趣和职业志向来揣摩这个职位或是角色是否合适他们。提出正确的问题和做出圆满的答案,不仅可以帮助您做出选择符合梦想的工作的明智决定,而且还可以帮助您商谈报酬,并更加有效地向面试官们展示你的技能和优势。

下面列出一些你能够问得问题:如果我很成功,我将会参与什么类型的项目,又会到接触什么类型的技术和框架?我的工作是否有涉及到接触客户或是晋升的机会?在贵公司中,什么样的应聘者会成功获得offer?这是一个关键人物项目吗?团队有多大?项目的预算又是多少?

我所属职位的关键人物和职责是什么?这是否涉及新的开发、优化以及支持工作呢?在面对多个工作机会时,你该怎么选择呢?这个决定并不容易,但是,下面的一些内容可以帮助你:

1.报酬福利:这是一项重要的考虑标准,但不是唯一的,所以,你需要要发展眼光来看待。(考虑比重30%)

2.学习或是从事最新的流行技术的工作的机会:例如(Spring, Hibernate, JSF, Ajax4jsf),或是有学习类似集成技术的新技术(如:JMS的,Web服务,SOA),新框架,商业技巧,团队领导能力,顾问技术的机会(如:你可以从专业顾问哪里学到很多)。认识并寻求新技术,这能是你在新的一次求职竞争中脱颖而出,由此获得更多的面试机会。(考虑比重25%)

3.项目类型(新项目,优化已有项目,后期支持):如果是从事新项目,你将学到更多(考虑比重15%)

4.品牌,公司文化,商业才能:品牌其实很重要,它能在你下次寻找工作时帮你得到更多的面试机会,当然还要重申一下,最重要的还是的技能和经验。否则,及时得到了面试机会,你会觉得求职很困难。(考虑比重10%)

职位类型和机会:(顾问角色,商务交流,出差等):这个职位是否能与商业用户有联系呢?你的简历会因为有与资深顾问同台合作的经历而大大加分。(考虑比重5%)

5.公司类型(保险,金融,软件公司,跨国公司等):其中,像金融、保险一类的行业,能让你获得更高的低收入。在软件公司或是顾问行业,你将得到更多的技术。(考虑比重5%)

6.面试的全面性:全面的面试意味着你有更多机会与高素质人才一同合作。(考虑比重5%)

7.地理位置和生活方式的选择(考虑比重5%)

这些综合到一起就是100%。

注:这些考虑比重并非标准,而是因人而异的。

你可以按如下方法进行分析:首先,为每个考虑方面设定考虑比重,总比重相加为100%。然后,将你获得的不同工作(公司a,公司b,公司c)会分项打分,将分数与比重相称。最后将每个公司的得分项相加,你就能得知,谁是你最好的归宿了,此外你也可以更有目的性的进行报酬谈判了。

如何从优秀的程序员成为伟大的程序员[2]


4、对代码的信任

作为项目管理者,你怎么相信他们的代码。有些程序员,你可以对他们说:我星期五就要结果.--星期五到了,你收到了这样的Email:代码我都已经检查过了,现在就等着测试了。你很放心,只会有很少的瑕疵在质量确保的团队被查到。当然,还有些轻率的例子,一些程序员在邮件里是这样说的:我还没弄完,星期一上午我会最先完成它.你不太确信这东西,发现很多Bug,很长时间基本上不能用。又得花上几个星期清理代码中的Bug.

关键:你对一个开发人员越有信心,他离成为一个伟大的程序员的距离就越近。想象你是你的管理者,如果他并不担心你的代码,会给你多少信心和勇气!

5、对方案的信任

和对代码的信任是一回事--如果你手上有伟大的程序员,你就会对解决方案有信心。这些程序员同时也是伟大的建筑师。他们剖析整个问题,指出问题需要怎样去解决。这就不只是用伟大的代码编程的问题了,很大程度取决于你怎样构筑解决方案。这是关键,而且会让你在软件世界里出类拔萃。

6、满足客户需求

一天下来,你写出了最棒的代码、用了最好的框架和最好的解决方案,但这真的能迎合用户的需求吗?恐怕根本不是那么回事儿。你搞砸了。尽管现在多次失手,一个伟大的程序员还是会正中靶心,找出客户需要的,给用户逐步展示他们所需要的无bug的最终版本。需求正中靶心的同时,用户满意了。

7、不断升级

伟大的程序员会积极主动地把自己的技术升级。他们对知识的态度就像饿猫见着了牛奶,他们从不用上级催促给自己设定目标、不用经理要求他们完成任务,因为他们自己就已经安排OK了。

他们发现自己想要参加的大会就会给公司写Email本人非常想参加今年的Tech-Ed大会。我将用心研习,并对作出贡献。我预计这可节省金钱/其他原因.如果可行,不知公司是否帮我支付此行?如果我收到这样的邮件,我不仅会帮他支付参会费用,他的路费我也会全程买单。

伟大的程序员们永远会关注例如。net用户组或Java用户组的所有用户群体。他们参加本地的技术会议,并从中汲取知识。你会看所有最新博客和最新的杂志吗?现在列出你最喜欢的前5个开发博客。你能做到吗?你应该像参加基督教青年会那样轻松做到。做到这些,可以很好的帮助你延伸你的思路!你将会不断获得更好的点子!你会得到更好的回报!

如何从优秀的程序员成为伟大的程序员[5]


15、组织技巧

把所有事情整合在一起的最关键要素是组织。你可能是世界上最好的程序员,但如果你不善于组织你所做的事儿,你的工作将陷入瘫痪,最终丧失优势。伟大的程序员保持自己工作平台的整洁有序,保留所有的笔记并调理清晰。他们标出自己的会议日程表。他们有专门的收件箱给日程邮件、会议和新任务分类。他们保留文档并能在需要时迅速找到所需。

额外要提到的:激情

伟大的程序员如果没有热情,那么他的工作也并不伟大。好的程序员有了热情来对待他的工作、方案和团队,那么他比伟大的程序员还要伟大。

在回顾的时候,我用这些标准来评判我的开发团队。我给我的团队尽可能最好的环境,作为回报,我想要他们都成为最伟大的程序员。你可以用这些标准来评判你的团队,或者你本身就是一名程序员,请用这张列表来尽可能地改造自己来超越同侪。

备注:Generics是程序设计语言的一种技术,指将程序中数据类型进行参数化,它本质上是对程序的数据类型进行一次抽象,扩展语言的表达能力,同时支持更大粒度的代码复用。对于一些数据类型参数化的类和方法来说,它们往往具有更好的可读性、可复用性和可靠性。在设计集合类和它们的抽象操作时,往往需要将它们定义为与具体数据类型无关,在这种情况下,使用Generics就是非常适合的。

从程序员到软件工程师[2]


当时看算法本身的文档,然后又回头看线性代数,终于理解了算法,并用程序表达了出来。由于是嵌入式用的,又花了大量时间进行算法优化。

后来跳槽时终于尝到甜头:

1。薪水高,基本上一应聘就是Senior的职位

2。稳定,这个一般大街上招一个程序员是做不来的

3。机会多,这个怎么说呢,反正只要是大公司招人,象微软、Google等,除了问一些语言本身的问题外,基本上就是算法和数据结构的问题。

通常面试那些时间你写源代码是来不及的,基本上就是写伪代码。或说明你的算法基础和思路。答的好一两句话就解决了。

想走这条路的朋友,我首先建议好好读读《数据结构与算法:C++版》,里面所有常用算法和经典算法及数据结构必须烂熟。其次,建议将大学课本找回来,几本高数好好复习复习。《线性代数》《概率和数理统计》《微积分》《常微分》等等。

我们不是大牛,基本上创造不出新算法,但是我们能够将别人的算法实现或者能把一个具体问题分解成已知的算法,那么你就是一个很不错的算法工程师了。

说实在话,语言只是工具,是很容易掌握的。99年2000年泡沫时期,不是很多人突击那么三个月就可以上路做programmer么。就象刀法是很容易学会的。要应用精熟,也不过是长时间的积累而已。

对语言的理解实际上就是对刀法的领悟,有人是顿悟。但是多用总是会渐悟的。

最重要的是基础,就是数学能力,那可是内功。可以这样说,你要想真正和其他程序员拉来差距就在这里。

我朋友的孩子想走计算机编程这条路,考大学我就推荐考数学系!

再有就是多做那些大公司的面试题,一是锻炼自己的大脑,二是熟悉这些算法的应用。

好了,现在能想到的就这几点,这里给几个面试的例子,看看能不能用最简单的描述解答

1.如何生成一组正态分布的随机数?

2.有一个二维迷宫,如何找到出口路径?

3.有数据库存储一股票每五分钟的实时报价,如何生成每小时,每天,每周的股票价格变动曲线?

====我的建议答案

1。生成二维随机数,只取落在正态分布包络线内的数

2。二维连通图深度优先遍历

3。傅利叶变换

如何从优秀的程序员成为伟大的程序员[3]


8、团队奉献

你可以是团队中最棒的那个人,可是如果你不是最好的程序员、不是建筑师、不是团队里最有活力的人,那么对我来说,如果你不能分享或对你的团队有帮助,你的价值就会大打折扣。一个好的程序员会使自己周围的人同样强大起来。试想一下,好程序员会不断完善自己的知识和能力,如果他们不和周围的人分享他们的知识,他们从哪儿能获得更多呢?

他们不断学习新东西,发掘新技术,但是不会让其他人知道他们这么做了。一个好的程序员会准时完成方案,但是那是在催促和团队得不到休息的前提下。然而一个伟大的程序员则会与团队中所有的项目保持联系,在需要的时候还可以出手帮忙。他们会如是说:我注意到A团队的项目进行到xx进度了,如果不介意的话,我想我可以帮忙?

9、做好会议记录

做好会议记录绝对至关重要!开会期间,大家花大量时间来说明了新观点、新主张、集体讨论还有提出了新设计方案,可是会议结束后却没有人可以拿得出会议记录,简直没什么比这更糟糕的事情了。即使你有会议大纲,我还是期望见到参会的每一个人员都可以带着纸和笔(当然对于程序员来说笔记本则堪称完美).一个伟大的程序员会注意到这点。他们会记下所有的会议记录,并且在会议结束的的时候说:就刚才的会议,我着重记录了几点:XX 我是否记录全了呢?

接下来,伟大的程序员就会把他做好的会议记录分发给项目管理者,列出会议时间、会议主题和参会者。接下来,是会议项目的标题和重要条目。在这之后,就是这些议题的详细记录。一个好的程序员没有做会议记录,并在会议上对提出的每项事宜都点头称是,那只能寄希望于他的记忆力足够好了。随后,他会给你发邮件让你看看他的改动,你得回头提醒他忘记的不多,百分之九十的都没错。--这不是浪费时间嘛!根本不是这么回事!所以,做好你的会议记录。

10、孺子可教和接受批评

如果你读到这儿了,就表明你有希望接受这些建议,并在以后的开发行动中尝试执行。对,程序员的另一项重要能力就是向他人学习并且能够接受批评。通过把自己变为一个虚心受教的人,像海绵一样快速吸收大量知识,毕竟在编程的路上你还有很多前辈。当然,也许他们在写代码的岁月里慢慢生了锈,甚至伤痕累累,但是他们毕竟曾披荆斩棘跨过无数的坎儿。对于做出正确决定,他们又着瞬间的本能,让你不得不服。处于他们这个位置,很乐于见到你的成长和成功。

所以,只要你是个伟大的程序员,就会理所当然的拥有理想的工作环境。如果你不断改善技能、虚心好学、在别人给出的意见和批评中总结错误并得以改善,我向你保证你将会成为一个伟大的程序员而不只是想象自己变得伟大而已。如果你总把自己想象成为精英而不进步,那你只是自欺欺人。如果你不成长,你甚至不能停留到原地,等待你的只有灭亡!

以上《对话周鸿袆(二):从程序员创业谈起》一文,由编辑精心撰写而成,希望对您的职业规划有所帮助,更多精彩请访问“程序员个人简历模板”专题!

相关文章

最新更新