• 作为程序员的个人发展


    作为程序员的个人发展

     

    作为一名软件工程师,说实话,写文章要比写代码难多了。 

    要说发展,知乎,CSDN,博客园里很多专业的建议。这里只是写出自己细微的经验,希望能给同样境遇的人一些对照。

    相信很多软(Ma)件(Nong)从业者和我一样,大学时学了一堆理论基础: 计算机原理,OOSAD,网络基础,软件工程,各种语言(之前特别喜欢和外院妹纸吹牛X,说自己会六七门语言),还有貌似一些不搭边的高等数学,离散数学,线性代数,概率论...... 到毕业时候发现,自己写的最熟练的项目居然是Hello World。同时自己好像什么都懂一些,但又很难找到一个方向,深入研究。那些大学里学的理论也很少用到,甚至自己的竞争力已经比不上"蓝·鸟"特训三个月的孩子们,因为多数企业里,已有的项目框架、技术选型都比较完备,缺少的是一些有经验的搬运工而已。这时,一部分人意识到,学习框架才能就业,要努力成为大牛;另一部分人意识到,编程工作也没什么高深,无非是搬运、黏贴代码。而我由于大四一直在实习,继而直接工作了,应该属于更可怜的一种: 什么都没意识到。

    说到框架,那逼格就上来了。因为框架中蕴含着许多高深"武学"--各种设计模式(工厂,桥接,访问者),设计原则(依赖倒置,里氏替换)和很多思想理念,听起来就觉得,高级~。但很痛苦的事情是,框架这东西没事儿就升级,甚至今年还风声水起的框架,明年就被淘汰了。技术升级变化就是这么快,程序员真是个终生学习的过程。这里,暂且叫这些人研发型程序员吧。

    还有一些人,不愿总是学用别人的框架,自己琢磨起来,姑且叫架构程序员。这里的水分其实就多了些,叫架构师,真的有损这名头。不过这年头貌似什么职业都得叫***师,说出去才响亮。什么程序员鼓励师,催奶师,监黄师。我倒是很替快递小哥不平,为什么不叫快递师...话说回来,框架这东西没有严格定义,我写的五百行程序可以叫框架,他的五万行也可以叫框架。而程序架构写出来也是很难评价好坏的,多数情况都是接手后续开发的程序员在默默吐槽。从我个人经历的项目来看,好的架构师都是一个个项目喂出来的,架构也是慢慢演变出来的。哪怕是微软 IBM高级设计师的架构,也不见得又多高级。只是在一次次的迭代中,完善了之前的失败的设计。哪怕是Windows系统,也是经过多少次推翻和迭代才推出XP这样极致的版本,且不说它有多少Bug。现在互联网创业都是求快,拿出原型比什么都重要,很多时候都是拿到商业机会才去重新考虑系统设计。无论哪个阶段,真正留给设计师的设计系统的时间真是少之又少,平时的理论模型在复杂的业务逻辑面前,很难应用得上。所以励志成为设计师的程序员,真的需要从每一件小事上开始做设计。像《人人都是产品经理》形容的,吃喝拉撒,衣食住行,时刻都想以程序架构设计来思考,养成做设计的习惯。

    除了上述程序员,还有一波人,对技术并不狂热。年纪长一点的,哪里好意思和90后们一起愉快的写代码,纷纷走上了管理岗位,怎么说叫经理比较程序员好听些吧。对的,这里说的就是项目经理路线(不过最近经常有被年轻产品经理翘行的感觉)。

    仔细想想, 程序员的发展路线还是很多,很复杂的。相信很多人都和boss有过"交心"、"聊天"的经历。一个经常举出的方向便是,业务型程序员。即对一个领域的业务逻辑深入研究,最后达到到,业务上我的程序写的最好,程序界我业务最熟来提高竞争力。根据领域驱动设计的思路,这样的程序员也是最有可能设计出领域中最好的框架程序的。而且能抓住业务的人,一般更容易发展到项目管理,或是产品经理的岗位。

    然而让一个程序员学习业务,有点像让厨师给客人点餐上菜。作为厨师,我负责炒菜就好了,一般不用管客人点啥菜(只要菜单有),怎么点。作为程序员,我负责写程序就好了,只需要有人告诉我客户要什么东西。大多数程序员对深入学习业务保持反感(虽然这么做真的有助软件质量的提升)。

    ======================华丽的分割线===========================

    说完发展,说说领域。像金融,教育,医疗,互联网都是当前热门。但接下来要聊的,确是更新一些 -- 人工智能。没错,对于程序员来说,人工智能也是一个业务领域。只不过这个业务的门槛有点高。那么人工智能究竟对程序员来说意味着什么,为什么它不同于大数据,云计算这些热门行业呢。切看下篇。

    记得2009年,安卓系统突然就火了起来。同时,一批安卓视频开发教程也在电驴等网站传播出来(记得当时也有个叫老锣的教程)。既然是这么新颖、有钱途的技术,当然得学了。当时看着开发视频,信心满满的写了几个hello world扔到手机上。没过几个月发现,全都忘了,因为项目用不上啊。

    没过多久,云计算、大数据的概念也是铺天盖地的袭来。摆在眼前的问题,要不要学了? 特别是发现,当时的云计算真是把人说的云里雾里,很多都是商业概念和炒作,落地的商业模式和技术没多少。大数据当时也只是分布式计算的框架,和存储框架,并不像今天的技术生态圈,框架群。即便今天,能玩儿转大数据、云计算的,也是少数大公司而已。虽然很多公司都宣称运用这些技术,但也都是跟形式,赶潮流。说白了,提高逼格嘛。用几T的数据来搞大数据,只能说是个实验学习的过程。1039也天天说大数据采集路况,分析调查问卷呢(有一万份嘛?),只不过是用了这个关键词而已,我辈程序员还真爱较真。这里绝不是说大数据,云计算没含金量,任何技术都要在商业的推动下来发展。不过看到成堆的框架,学习的动力真是打个折扣,谁知道明年还要学哪些,用不用得着呢。对我个人而言,即便学这技术,也很少有机会去做有意义的事儿。换句话说,还是自己不感兴趣。

    前阵子在雅虎Burbank出差,身边的环境还是挺震撼的。那些敲Pig脚本的开发者,没一个比我年龄小的(另外插一句,Pig本身就是雅虎开发的)。连数据组的PM,也是一位开发出身的女士。现在也是经常回想这一幕来坚定自己做开发的决心。那时恰巧一位华人朋友分享了一篇文章,其中分析了美国人工智能的发展,即便作为程序员看后也是震撼。想起来五六年前的《起点临近》《失控》两本书,虽然是科幻理论的书籍,但其中描述的依据和发展现状,如今看来确是很有概念了。最近又有阿法狗与李世石的大战,让人不得不重新认识人工智能以及带来的各种变革。说到美国,也是个神奇的国度。各种大胆的计划,还都是非政府支持的项目。做完电动汽车,回收了火箭,下一步马斯克(据说是钢铁侠的原型)又启动了人工智能项目OpenAI。

    回过头来想,既然是学技术,何不选个门槛高的。机器学习是门多领域交叉学科,更重视知识的积累,没有速成法,有多少努力就有多少回报(@芈月?),更适合我这种比较笨的人。当年学校里的线性代数、离散数学、统计分析等课程,现在想来还是有作用了。无论是复习算法,还是研究机器学习,有些数学基础和编程基础,令人信心大增。

    最对于学习资料,大多是需要英语基础的。以下列出几个经典的资料: 

    首推Andrew Ng Coursera的课程。吴恩达斯坦福大学机器学习副教授,参与谷歌大脑的设计,百度首席科学家。这个入门教程,但讲的东西真的能做到深入浅出,让人听的明白。相信入门后,找资料就不成问题了(算是启蒙老师了)。

    书籍: Machine Learning - A Probabilistic Perspective , Pattern recognition and machine learning , Elements of statistical learning 

    论文期刊: http://jmlr.org/papers/

    新闻资料: http://forum.memect.com/blog/thread-category/ml/

    最最后引用一句自己在Courera的发言, I cann't help imagining a future world full of AIs and I'm part of the creators.

  • 相关阅读:
    BZOJ1862: [Zjoi2006]GameZ游戏排名系统
    BZOJXXXX: [IOI2000]邮局——四边形不等式优化初探
    BZOJ1801: [Ahoi2009]chess 中国象棋
    BZOJ1505: [NOI2004]小H的小屋
    BZOJ1899: [Zjoi2004]Lunch 午餐
    BZOJ1057: [ZJOI2007]棋盘制作
    BZOJ1100: [POI2007]对称轴osi
    BZOJ1123: [POI2008]BLO
    线性规划之单纯形讲解
    BZOJ 3265 志愿者招募加强版(单纯形)
  • 原文地址:https://www.cnblogs.com/timssd/p/6107740.html
Copyright © 2020-2023  润新知