写
blog
已经快两年了,起初仅仅是为了自己“备个案”,结果慢慢演变成为了“分享成瘾”。前几天一个朋友给我的
blog
留言,谈到希望在新年里能够看到的不仅仅是我对技术的分享,更希望能够看到对于技术学习、职业发展的规划。因此想到了写一点什么分享一下自己这些年的一点点“收获”,周星驰的喜剧之王里面说到他是一个演员(虽然被叫做跑龙套的),我想我,就一个写代码的。
爱这行
从事任何行业都一样,只有真正的爱上了这份工作,才会投入热情,才会在顺境中自我警醒,在逆境中寻找突破。这个行业的竞争很激烈,你停下来走,别人就立刻会跑步超过你,没有对这一行业的一种热情,就很难在困境中保持一种执着的态度坚持到底。
踏踏实实“扎马步”
今天无意中看了“校长”的“程序员
&
司机”,其中谈到了关于程序员速成的问题。其实速成班毕业的
“系统杀手”早已在遍布大江南北,只是在互联网时代,互联网的应用型软件生命周期越来越短,业务驱动主导的情况下,这种速成方式看起来反而提高了企业生产效率。但这样的人才也就只能写几个
Facebook
上的插件应用或者
iGoogle
上的
Gadget
,真的要出
Google
,
Amazon
,
Yahoo
改变互联网世界的企业,还是需要踏踏实实先学“扎马步”的人。
很多在学校的同学或者刚刚毕业的朋友都看什么热门学什么,
Spring
,
AJAX
,
Hibernate
等等,又有多少人在看
Spring
之前把
J2SE
的
NIO
,
XML
,
Collection
等先好好学习一下,在看
AJAX
之前把
Http
协议、
DTD
、
XML Schema
好好看一下,在学习
Hibernate
以前先把
J2EE
事务规范搞清楚。
Java
最大的好处就是开源,能够让人们站在更高的起点来作出更多的创新,但是对于学习者来说,不了解自己站在什么上面的时候,可能摔下来会很痛。在用的时候多问一些为什么,在遇到问题的时候多找找原因,在了解以后多提出一些优化的方案,这样才会进步的更快,走的更远。
记
得我前一阵子回家的时候和妈妈聊起最近的工作,虽然妈妈不太明白,但是也知道我现在做的东西技术含量比较高,嘱咐我“千万不要什么都教给自己的同事,徒弟
带出就不要师傅了”(这当然是老一辈的观念了)。我和她说:“不要担心,这种学的会的不教迟早也会,学不会的教了也学不会”。其实这里说的学的会的就是技
术,而学不会的就是经验和能力。这个行业的人在日积月累过程中并不会去比较掌握的知识面有多广多深,毕竟这行业更新很快,其实能力强的人在多年的学习中就
积累了很多的找问题,分析问题,总结问题,提出建议,发掘创新的能力,这些才是这行业人在发展中最宝贵的财富,也是一个人成长的标志。开始的过程中,踏踏
实实地“扎马步”,了解一些最基本的知识,那么上层技术的发展对于他来说仅仅只是一个短暂的学习过程,甚至可以触类旁通。因此还是要奉劝每一个新入行的同
学,踏踏实实,静下心来做技术,就算工作安排得都是一些浮躁和重复的工作,用高效的方式来结束那些重复劳动,多留一些时间给自己打基础。
逆境养兵、顺境攻城掠地
普
通人的工作经历通常都是起伏不定的,一个人的能力是否能够得到体现,不仅仅靠自己的努力,有时候也需要“天时”、“地利”。马云比较有名的一句话:“今天
很残酷,明天更残酷,后天很美好,但是大多数人死在明天晚上,看不到后天的太阳!!!”,其实也在说明一件事,就是很多时候需要一种坚持的精神才能得到宝
贵的机会。
今天是我进入阿里巴巴满
3
年,这
3
年让我感触很深的是:
1.
逆境不要气馁,厚积薄发。
2.
顺境不要懈怠,一股作气,把握机会展现自己最大的能力。
3.
在
逆境和顺境的转换过程中,创造机会,不要坐等机会,要学会不在其位,也谋其职。最后一点就拿我自己的亲身经历来说,我原来就职于一家通信公司,因此对于互
联网应用的开发和架构设计要比很多人弱,进入阿里巴巴以后工作了半年(主要作业务开发),正好阿里软件创立,当时被分配到了阿里软件第一个产品负责客户模
块,当时的应用是通过
MDA
框
架配置搭建的,开发人员很大程度上不需要自己做太多的编码,但是这个平台并没有搭建过如此复杂的大型应用,因此存在着不少问题,当然这些问题都是通过业务
产品线的人反馈给平台部的人,当时平台部门人员很少,但是却要修复和完善诺大一个平台,因此常常搁置开发人员的反馈。当时在自己工作之余就琢磨和研究平
台,同时跟踪调试平台,最后直接给出解决方案,逐渐的就融入到了平台开发中,最后被吸收到了平台部门,进入平台部门以后遇到了两位很好的老大,根据我的特
质给我安排了研究和学习的工作。接下去就是不断地参与阿里软件各个基础平台的构建,核心技术的研究和探索,找到了兴趣和工作的最佳结合点。因此,当你困惑
的时候首先不是去抱怨,而是审视一下自己是否还有作的不够的,是否还有可以提升的空间,多给自己制造一些机会,也许我们不用等到后天,也不会死在明天夜
里,明天早晨我们就看到了太阳。
海纳百川、冰冻三尺
很多朋友可能听老师或者前辈也说过类似的话,就是作为一个技术人员要广也要钻。就好比现在很多人都要
DB Scale out
,同时也要
Scale up
。我从自己的角度来说一下广和钻的看法。广:
1.
要有容人之量。(很多时候程序员最大的毛病就是喜欢在技术上比较,未尝不是好事,但是一个人的能力总归有限,多看看别人的,多听听别人的,也许能够让自己少用时间获得更多的收获,特别是自己战友的声音)
2.
触类旁通,多问个为什么,多跨过界去学习。在阿里巴巴,
PD
、
SA
、
DBA
、
UI
等等职位各司其职,作为开发的我们其实也应该去了解如何去画
Use Case
,如何假设服务器和应用环境,如何写一些略微复杂的
SQL
,了解一些
DB
的特性,如何能够简单的作出一些基础的页面,使用简单的
css
来美化一下门面。这些就是需要多跨过界,多虚心的去学习。钻:
1.
本职工作技术一定要扎实,每作一个技术点就要把技术吃透,同时延伸开来,发掘更多的技术亮点。
2.
多接触新鲜事物,但是有选择的去了解,有目的的去学习和实践(目的的源泉就是工作的需求)。
3.
学
会分享,一个人自己搞懂一个技术很容易,一个人要把他熟悉的技术写下来就会发觉原来自己还有那么多没有搞清楚,一个人如果要把写下来的东西宣讲给别人听,
他就会发现,原来写下来的仅仅是那么一小块,因此学会分享,从自己了解,到记录分享,到演讲传播就是一个不断深化和广化的过程。个人觉得小公司锻炼人(啥
都自己干),大公司培养人(该干的要干好),因此自己常回头看看自己在广和钻上的不足,可以让自己进步的更快,学的更全面。
学中医积累经验,学西医寻找突破
中医以对人体经络血脉了解为基础,通过望闻问切来寻找病理根源,行医年限越久,找问题解决问题的经验越强。西医以科学技术为手段,通过试验化的方式不断寻
找突破,并且将成果积累并且传递给更多的人,但是否年限越久越有能力,或者是使用得器材越广越资深,这点全要看个人对于医术的理解,如果仅仅停留在对器械
的使用和对成果的依赖,那么只会成为一个庸医。当然这里绝对没有对中西医的差别化或者评价,仅仅要说明的是,在手段丰富的情况下,容易忽视了本质,只看到
了皮毛,积累的时候多一些追根溯源,站在别人的成果上才更踏实,因此在对经验积累上向中医多学一些,在寻找突破,传播技术上多学一点西医的风格。不过说到
低,还是要看学习的人,静的下心,沉得住气,才会有积累,才会有突破。
不做一个纯粹的“技术人员”
不做一个纯粹的“技术人员”,其实也就是说要培养自己多方面的能力,我仅仅把自己想到的一些点列出来说说:
1.
项
目产品化的思想。现在就算在学校里面给导师作项目都讲究一个商业价值,更不要说在企业里工作。作为一个开发或者架构师最重要的就是要有产品化的概念,这也
是项目是否成功的关键。软件的目的是为人服务,如何服务的好,那就要以一个产品的思路去做项目,而不是作为实验室的实验品,为客户提供好服务就会给公司带
来商业价值,对自己的工作也会有很好的肯定。这是一个良性循环,反之则是恶性循环(多赢变成多输)。如何做到产品化,首先就是需要去了解需求,而不是布置
需求,其次就是设计时多听取一些不同角色的意见,最后就是在客户的反馈过程中反省。
2.
多
一些设计,少砌两块砖。代码写的再好,其实也只是用砖块砌墙砌的比较好罢了,这年代已经不会为了节省两块砖而给一个优秀工作者了,同时技术的日新月异,总
是摆弄技巧,学习花拳绣腿已经跟不上时代了。多了解一些行业背景,多参与一些架构设计,将业务设计用良好的架构体系来实现,那才是一个称得上有能力的技术
人员。
3.
学
会前瞻,学会自己找事。记得我刚进平台组,最不适应的就是我的老大基本不太给我布置太详细的任务,这就好比进入大学,老师不给作业,自己反而心里没底了,
其实自己找事的过程就是一个自己学习的过程,当我一天下来感觉没干什么,没学到什么,心里就开始发虚。如何能够前瞻性的去选择一些目标,如何对现有情况提
出一些创新和建议,都是一种更高能力的要求。现在
SIP
组也是一样,在我们这个组里虽然现在每周还是布置一定工作,但是我对其他两个同学的要求也是希望能够有前瞻性,学会发现问题,预防问题,更甚者就是提出创新。当你具备了这种环境的时候,你就需要锻炼自己的能力了。
4.
做
个让老大放心的人。这点也许很多人和我一样在业务上很早就让老大觉得可以安心睡觉了,但是其实另一方面,如何在商业角度看问题,如何培养新人,如何协调部
门合作等等,都会让你的老大更加安心。另一方面来看,其实在这些能力的培养过程中,你不再局限于业务水平的提升,让自己在更多方面更加成熟。
六脉神剑
今天是我进入阿里巴巴
3
年整。在阿里巴巴有个说法,只有在阿里巴巴工作了
3
年,才能算是一个真正的阿里人,因为理解阿里巴巴的文化,需要三年时间的沉淀。这里就从一个写代码的角度分享一下阿里巴巴的六脉神剑文化。
客户第一
:
如果你是做架构的,作平台的,作开发工具的,那么客户就是和自己一样的开发者,多学习一下开源项目的精神,多从使用者角度去考虑问题,那么你的东西才会被
更多的人认可和使用,永远不要去做一个“玩具”的开发者。如果你是做产品的,那么就多听,多想,多问,永远不要急着去写代码。
拥抱变化
:敏捷开发的基本原则。互联网应用尤其如此,不要害怕变化,在需求和架构之间找到平衡点(说起来比较容易
^_^
)。
团队合作
:一个人的力量始终有限,分享,交流,合作能够让自己事半功倍,学的更多,看得更远。
诚信
:说到就要做到,做了就要做好,做软件开发一样也需要有责任感,贴满狗皮膏药的代码上如果注释是你的名字未来也会给你蒙羞。踏踏实实地用心去写代码,去设计架构,不经意间得到的要远远比那么一点工资来的多。
激情
:还是那句话,你如果不爱这行,乘着年轻赶快转行。
敬业
:专业执着,精益求精
很
感谢各位能看完这篇感受分享,以上都仅仅是个人的一点感受,能够引起共鸣那么证明我们的经历很相似,如果能够给到你一点帮助,那写这些就真的有意义了。不
论你在别人眼里是一个资深架构师还是开发人员,其实如果你爱这个行业的话,你应该就是一个写代码的,但是每个人的经历都是一本“写代码的自我修养”,珍惜
自己的选择,让自己在兴趣和工作中找到最佳结合点。
分享到:
相关推荐
在我们介绍三层的时候,大家是不是发现我们写每一个功能的时候是不是非常的麻烦呢? 像其中的一个model,如果属性特别多的时候,写起来非常的慢。 像其中一些基本的功能我们可以使用代码生成器,然后在此基础上改...
竖屏写代码就是爽!一个Java程序员的双屏生产力桌面
生成的代码包括 1.POJO类,类的hibernate映射文件,DAO类,Manager类,spring的对hibernate封装的配置文件,如果你不使用webwork,只需要这些就行了 2.webwork的Action类,Action的资源文件,Action的校验文件,xwork.xml, ...
写代码写代码.exe
读者与写者问题是一个经典的多线程同步问题,它源于并发编程中的资源共享问题。在计算机系统中,多个进程或线程可能同时访问共享资源,如一个数据文件。在这种情况下,需要确保读者(只读操作)和写者(读写操作)...
java代码-使用java制作一个在线考试系统的源代码 ——学习参考资料:仅用于个人学习使用!
dynamodb-oop, 用时尚写fluent写代码,我保证( ) 当前版本 npm install @awspilot/dynamodb 这里是文档。旧版本 npm install aws-dynamodb 你可以安全地
研究人员给ChatGPT提了包括C++、C、Java和Python在内的21个写代码需求,这是评估的结果: 统计表明,ChatGPT生成的21个程序中,有17个能直接运行,但其中只有5个程序能勉强通过程序安全评估,不安全代码率达到76%...
java代码写程序
8. **文件管理**:ECU升级可能涉及到传输一个或多个文件,如软件映像或配置数据。UDS提供了文件管理服务,允许上位机上传、下载或删除ECU上的文件。 9. **编程算法**:在ECU固件更新过程中,可能需要使用特定的编程...
一个简单的html代码,可以用txt或者DW打开,就是很基础的一些含表格,主题可替换
计网课程设计Java写的五子棋源代码计网课程设计Java写的五子棋源代码计网课程设计Java写的五子棋源代码计网课程设计Java写的五子棋源代码计网课程设计Java写的五子棋源代码计网课程设计Java写的五子棋源代码计网课程...
1. **文件读取**:程序首先通过`OpenDialog1.Execute`函数打开一个文件选择对话框,允许用户选择一个G代码文件。选定文件后,使用`assignfile`函数将文件指针指向该文件。 2. **逐行读取**:利用`while not eof`循环...
区块链难理解?200行代码教你写一个自己的区块链! 非常有价值
自己写的一个基于DX9的一个3D游戏DEMO,完成了地形,天空,主角和敌人,基本UI,是自己在大学的时候学习游戏编程写的,也是靠它找到我第一份工作,对于初学者还可以下我的其他的学习资料,我将我从零开始学习游戏...
使用画布写的一个烟花代码
GPT:好的,以下是一个简单版的心形代码,代码行数不超过30行,并且带有注释。 代码如下,编译运行过了,效果不太理想。 上述实现简单的心形图案,使用了一个二元二次方程表示心形曲线。通过循环逐一判断每个点是否...
我自己写的code create 不知道好不好啊, 放到这里只是做一个参考啊, 大家不要拍砖
我用 qt designer画了两个界面,一个是MAINWINDOW.ui,一个是DIALOG.UI,我想实现的功能是,在主窗口MAINWINDOW中点一个pushButton弹出那个DIALOG.UI,而且设置主窗口的背景图片这个代码我也不会写。如果可能的话,...