zoukankan      html  css  js  c++  java
  • 作为程序员的个人发展

    作为程序员的个人发展

     

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

    要说发展,知乎,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.

  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/timssd/p/6107740.html
Copyright © 2011-2022 走看看