人生能有几个十年,何况在宝贵的青春年华里,创业者冯耀明在毕业十年后重新回顾自己的一路走来,总结自己的技术之路、创业之路,以及仍然在不断探索的路上——对现代编程语言Rust也有研究。
冯耀明(博客),广州人,2005年本科毕业于浙江大学自动化控制专业,先后在华为、汇丰软件、爱立信等跨国企业从事开发工作,最近一年在创业公司为客户提供企业Web和App解决方案的设计者和开发者,目前关注服务器分布式架构领域。 以下为采访正文:十年的技术之路,遗憾的是没有更早加入互联网公司
CSDN:请和大家介绍下你和目前所从事的工作。 冯耀明:我是一名Java程序员,做过几年服务器方面的开发,也以技术合伙人参与过创业。兴趣比较广,除了写程序的工作,平时还喜欢篮球、游泳、书法、钢琴、小说、dota。目前刚刚离职,所以也在寻找下一个机会,希望能够从事分布式技术开发,技术上我永远觉得自己还在学习路上。 CSDN:2005年本科毕业于浙江大学自动化控制专业,已然过去十年,能够总结下自己的十年? 冯耀明:这十年参与过各种不同类型不同规模的行业和项目,有70年代的大型机系统,也有当今最火热的Web和移动开发,还有曾经红极一时的电信,中间还夹杂着一些小项目。就像一名穿着一对草鞋的流浪者,走过世界上的几个不同地方,却依然没有找到一个可以安居的地方。 这十年,遗憾的是没有更早加入互联网公司,庆幸的是能够进入一些传统的跨国大企业,接触到风格各异的企业文化和软件开发流程。 CSDN:你如何定义如今自己的身份,是技术人员、程序员、软件开发者,还是创业者?或者说不通的阶段有着不同的感悟。 冯耀明:技术人员、程序员、软件开发者有什么不一样吗?从过往的经验来看,我应该是一个技术人员,解决问题理应是我擅长的,这些问题包括写程序,调试bug,学习并应用新技术新架构等等。另外,我在做喜欢的事情时会非常专注和有激情,这种特质也比较适合创业。 CSDN:你是如何成为一名开发者的?有什么故事可分享? 冯耀明:这也是阴差阳错,高中时有自己的第一台电脑,当时还是98年的时候,我跟当时一位好友请教,如果我要学电脑的话应该怎么选, 他告诉我有三个,一个是搞懂Windows注册表,一个是学习VB,另外一个好像是Photoshop。然后我就去买了一本厚厚的VB教程,就开始折腾窗 口按钮那些东西,弄了一个月觉得有点无聊就没继续了。到了大学就选了一个偏工科的自动化专业。我想如果当时买的是《算法导论》,可能我大学选的专业就是计 算机软件了,很多东西都不一样了。 如果说我第一个开发的项目,那应该是我大学时用魔兽编辑器修改3c地图,把我们寝室和隔壁的好哥们以及联谊寝室几个MM加入到地图的NPC里,配上各种我自认为很搞笑的对白给大家娱乐,后来还和其中一个MM走到了一起。这算是我最成功的一个项目了。 CSDN:你的日常生活中必不可少的软件是什么? 冯耀明:现在电脑除了做开发的工具,都很少装软件,很多都有毒有捆绑,想试什么都装在虚拟机上了。有几个是重装系统后会第一时间装上 的,像搜狗浏览器,打开最近被关闭的网页功能比较好用。Evernote,用来记录点点滴滴的技术心得。App的话有noisli,模拟自然声音,有助睡 眠。网易云音乐,对于听歌是很好的体验。 创业的每一天都令人兴奋CSDN:你最近一年作为联合创始人参与创立了广州兰泽信息科技有限公司,期间负责需求分析、原型设计、架构设计、开发维护、项目和团队管理工作。公司项目为Web和App移动端整套解决方案,均按时高质量交付。当初,你为什么选择创业这条路?又为何选择这个项目? 冯耀明:我们几个创始人都是在工作时已认识的同事,在公司部门重组之后,大家都希望能出来做些什么,把自己一直以来想实现又没有机会做的想法做出来。这些想法都是可以通过移动App做出来的,所以我们就决定出来试一下。 CSDN:第一次创业的结果如何?过程中遇到过什么困难? 冯耀明:最大的困难是如何培养一支优秀的团队。现在还没有到讨论结果的时候。不过公司从初创到我离开时,的确经历了一些困难,从初期 的产品失利,到中期通过几个创始人的忘我付出,完成项目的订单,持续获得客户的良好反馈,原始积累又帮助扩大了团队,目前公司有稳定的客户,逐渐成熟的团 队,在金融方面也有一定的积累,我相信现在公司正朝着正确的方向在前进。 CSDN:通过此次创业,有什么心得和体会可分享? 冯耀明:太多了。创业过程中会遇到各种各样的问题,你必须要去解决它而不能回避它,无论是技术上的还是关于人的,而这些问题你之前是 没想到过的。譬如之前我对Java,J2ee和Android等所知不多,但只要需要,就要短时间内去快速掌握它并且能够做一个像样的东西出来。可以说创 业的每一天都在学习和达成成就感,这是最令人感到兴奋的点。而一直以来广泛的技术积累又能帮助我对新事物能够快速地吸纳。 CSDN:你是一名技术人创业者,你认为技术人创业有哪些利弊?以及在面临创业机会时,技术人该如何考量? 冯耀明:我觉得创业就是赌博,是否愿意放弃稳定的收入和未来的几年时间投资团队领导人和团队方向。很难说需要考量什么,因为每个人想 要的可能都不一样,有的要投资回报,有的是要共同实现梦想,考量的因素自然不一样。在加入创业前,需要和各位创始人互相了解价值观和做事风格,需要有契约 精神,明确职责,股权构成和退出机制。对于技术人,特别需要了解团队对自己职责的期望和自己的期望是否一致。 编程语言CSDN:你是从什么时候开始编程的? 冯耀明:高中用VB写过一些很简单的UI程序。 CSDN:现在,你掌握着那些编程语言?对这些语言有着怎样的评价? 冯耀明:我用过的语言大概是这样:
CSDN:你用什么编辑器或者 IDE? 冯耀明:写Java时用Eclipse,目前也在尝试IntelliJ IDEA。Ultra edit来查看编辑数据文件,beyond compare来作对比。 CSDN:你对很多新的语言和技术都很关注,比如Rust,请问你个人都是通过什么方式学习和考察新技术的? 冯耀明:平时会关注一些CSDN的博客,也会在微信里关注一些公众号,多看看不同的人对同一样东西的评价就有个大概了。我喜欢在阅读技术文章时应用一种类似深度优先搜素算法的习惯,譬 如在一篇技术文章中我看到了一个不懂的名词A,我就会去查,然后又会在这个A里面又看到了另外一个不懂的名词B,然后又去查B。直到我觉得没必要下去了。 所以一篇文章下来会了解到很多不同的东西,同时如果在不同的地方你都遇到过曾经了解过的东西时,会加深印象。但当需要对一项技术作深入了解时,就需要专门 阅读相关的经典书籍和官方资料了。 CSDN:你是如何接触到Rust的? 冯耀明:具体我也忘了,应该是在某篇技术文章里提到了Rust,然后我就有意的查了一下,发现居然还有语言能够有C的速度又不会担心内存泄露,就非常好奇要了解一下到底是怎么做到的。 CSDN:你认为Rust是一种怎样的编程语言? 冯耀明:
我感受较深的是下面几点:
它跟现在动态语言是两个截然不同的方向,它适合一些资深的程序员,我倒是觉得有必要有这么一本书,叫《从C++到Rust,你需要改善的20个编程 习惯》,能从实践上告诉开发者Rust里我们应该遵从什么样的编程习惯。Rust未来是否像C那样流行开来成为新一代的主流语言没有人能够知道,但它绝对 是值得你去了解和关注的语言。 "优秀的软件开发者不但需要有自己擅长的技术,而且要具备快速学习和解决问题的能力。"CSDN:你曾表示,「优秀的软件开发者不但需要有自己擅长的技术,而且要具备快速学习和解决问题的能力。」这或许就是和普通软件开发者的区别,那还有其它方面的能力吗?又如何培养这些能力? 冯耀明:还有会判断,会权衡取舍,一个东西我有很多种做法,不同做法有不同的利弊,没有什么通用的法则。就像数据库设计三范式,有时 候为了速度就要加冗余数据,而不会去严格遵从它。但是我必须知道有这个三范式,因为它是我考虑问题的依据。譬如代码重用,是否重复出现的代码一定要抽出来 做一个统一的接口,也未必,因为有可能将来逻辑更改的话,我就需要考虑到谁调用过这个接口,修改的话有影响了多少其他代码,所以就需要考虑将来这种可能性 有多大。又譬如上级坚持要我改变一个我深信很合理的做法,这时候有可能的话我就会多写一部分代码,为将来对方反悔留有余地的同时也不影响当前实现,而很多 时候实践过后对方的确会反悔。这种经验除了平时多了解别人的做法,也需要对自己工作不断地反思。 CSDN:当开发者成为技术主管,如何领导团队? 冯耀明:在大公司,充足的资源和成熟的体制能够保证合理的分工职责。而在初创公司里,技术主管需要编写核心代码,通常兼职项目经理保证整个项目的质量,在人手短缺的时候,还需要亲自带新人,责任不可谓不重。 我做团队领导的时间并不长,我的体会是:
在《人月神话》里,Brooks把首席程序员比喻为外科医生, 需要天分、经验、数学、业务以及大量的系统和应用知识。我们未必都能全做到,但至少它为我们提供了一个努力的方向。 CSDN:对于如今身在大学的学习者,你有什么建议? 冯耀明:我不好给什么建议,毕竟不同的年代有不同的背景,现在时代发展太快速。如果我现在还在念大学,我会利用现在丰富的互联网资源,多接触学校不会提供给我们的知识,开拓自己的视野,多动手尝试,最终会证明付出是有回报的。 |