【 文/黄别】
记得某某人曾经说过,一个不经意的选择会改变你的窘境,进而改变你的命运,精彩你的人生!这句话我信,然而我只能信前三分之一,因为那1/3就发生在我身上......
3年前的今天,也就是2005年12月15日,在沈阳分公司闲置了2个月的我被技术经理选上,派到上海出差,做一个周期很长的项目。同行的还有一个跟我同是应届生的沈阳哥们YDB,对于出差,我是很高兴的,高兴的不是能学到多少东西,而是手头紧迫的我终于可以不用付房租了,到了上海有公司解决住房吃饭问题,而且还有补贴拿,尽管补贴在现在看来跟打发叫花子没有啥两样!我当时就拿公司借给我出差临时用的1千块钱去大超市买了双119块的皮鞋,因为刚毕业时候没有钱,花了39块钱买的地摊货已经让我的双脚染上了脚气(脚到现在还没有好,还在折磨着我)。
到了上海,跟网上说的一个样,车水马龙-->夜上海!坐在出租车上,望着旁边一闪而过的霓虹灯,心情澎湃!
到了第二天才知道,我跟那个哥们负责测试先到的同事做的一个短信发送接受小项目,没有办法,整个项目还没有下来,我们需要先把小项目做好了,然后才可能拿到整个大项目。到了年后,整个项目终于下来了,YDB被分到了跟一个同事做web管理平台的开发,而我被分到一个模块做保险卡插件激活这个部分,这当中一个同事WZZ跳槽去了电信,又从沈阳来了一个同事ZDZ,他和我负责这个模块的设计开发工作,本来项经理让我做这个模块的设计工作,可是当时我水平有限,没有搞好,后来这个模块的设计工作就交给沈阳来的那个同事ZDZ做了,我参与了一些开发工作,只是很少很少的一部分,我同来的那个YDB虽然开发了几个模块,写的代码也比我多,但是后来合并的时候,他写的代码被ZGQ全部废掉了,ZGQ重新写了一遍,不过YDB比我好些,至少写了那么多web开发代码,而我一直在打杂,当时想想挺失败的,如果换了别人,估计早跳槽了或者辞职不干了吧。我当时水平有点菜,而且我在上海住的是公司租的房子,而且又在还大学的贷款,同时还要支持我二弟学厨师(他从06年2月份一直学到6月份),所以一直没有辞职,一边给这些前辈打杂,一边自学,提高自己,我想到6月份项目结束的时候自己就去找工作跳槽吧!
很快到了6月份,开发结束了,项目处于运行阶段,我二弟也自己找到工作了,我负担轻松了,就去找工作,面试了2次,都被刷下来了,具体原因是问一点点项目深层次的开发东西,我就答不上来,因为我没有负责个大模块的开发,我一直在打杂,这个时候开发人员全部回沈阳了,这边需要一个人维护,而且我又不愿意回沈阳,所以经理决定留我在上海,当时他告诉我要增强沟通能力,技术支持对这个非常看重的,可是我当时只顾着看书,补充自己java以及web开发方面的知识,对这个没有研究,也没有在意,直接导致的是遭到客户的怀疑,而这个时候北京总部的短信平台又出了故障,导致客户发怒了,北京老总亲自来上海请客户吃饭并且解释承诺尽快解决问题,而且又从北京总部又派了一个专门搞技术支持的过来(本来合同规定开发结束上海要留2个维护人员,公司为了省资源就留了我一个),他过来之后,我就负责技术,他就负责对外协调,我们分工合作,慢慢维护工作就走入正常轨道了,在这里我特别感谢我的同事阿里,我叫他里哥,他在工作上帮组了我很多,甚至在我找工作的时候,也给我了许多指导性意见,还有计哥,YXM,对我工作上的帮组都挺大的。
在06年8月份的时候,我java以及web开发水平已经上升了一个层次,就去面试了,有一家公司给了我office,但是工资太低,只有2K,而且不管住,大家知道,上海不管住的情况下,2k是刚刚够用,剩不下钱的,而且这个时候我三弟在苏州因为老板跑了,失业了,而且一直找不到合适的工作,在一次体检中发现肺出了点故障,就回家了养病去了,幸好也没有啥大事情。但是却不敢再让他去工厂打工了,他身体太单薄了,小时候就经常生病,而且挑食。可是一个农民工,不去工厂打工,哪里有合适的地方呢,去饭店当普通的服务员吧,学不到东西而且浪费青春,去学别的吧,他的书又读的太少了!
我当时就想我自己是学技术的,现在也能照顾自己了,而且大学的贷款也还了一半了,不如也让他去学习一门手艺吧,跟我二弟一样吧,以后到哪里了都可以自己找口饭吃,我想了想,觉得理发师比较适合他,这个工作对学历没有啥要求,只要努力学习,做了理发师,也能自己照顾自己了吧,这个时候我就把我手里剩下的4/5的钱拿了出来,叫我三弟从家里过来,我在上海给他找了一个培训学校,学点基础,这样起点高些,他以后学东西就轻松些。只是这样的话,我就不能跳槽了,我必须继续做这个自己不感兴趣的技术支持工作了,拿这份钱来支持我弟弟学理发,而且还要还贷款,这样就一直等到我弟弟在2007年1月从上海羽茜美容美发学校毕业为止,我就开始去找工作了,这次比较幸运,有个公司A要我了,薪水是3K,我决定去了,但是辞职的时候发生问题了,因为我那时候还是沈阳编制,属于外派,而且公司必须找到人来接替我,再加上工作交接,可能需要2个多月吧,一两周的时候根本去不了A公司上班,我就跟A公司说明了情况,A公司说可以等到年后我再去上班,到了年后,有家公司B给我打电话,约我去面试,被录取了,而且薪水也到了4K吧,我就决定去B公司了,事实证明我的决定是对的,转正的时候公司还给我加了500薪水。
就这样我去B公司上班了,去之前,我把大学贷款全部还清了,付了房租外,手里还剩下3000多吧。B公司是对美国做外包的,做完项目直接发到美国,客户全在美国。在B公司我知道我跟面试的经理说我是1年半的java开发经验(实际上就4个月左右,剩下的全是打下手干杂活而已),可是实际上我的水平有限,我就决定周末都用来学习研究技术,我要把这一年多的经验给补回来,否则就会露馅了,之后我过着苦行僧似的生活,还把公司的钥匙要过来了,周末基本都呆在公司学习了吧。
实际上我的学习速度很慢,在B公司呆了8个月之后,我才赶上去,这样差不多就老07年年底了,我是07年3月中旬进B公司的。年底发了一个月工资的奖金,可是过完年的时候,到了2008年,我的噩梦就来了,公司私下里面瞒着美国那边接了一个私活,这样我们就是同时做2边的事情,美国的项目要正常做,国内的项目也要正常做,坚持了2个月我就顶不下来,进度控制不了,因为国内和美国的项目都用到了一些新的东西,而这些新东西的资料网上很少,尤其是美国那个要用到dojo的dnd技术,但是开源网上的实例太简单了,需要改源码,我不得不要花更多的时间去学习。而且我的学习速度比较慢,这样一下来,国内的我正常做完了,但是bug不少,客户也抱怨着,美国那边的项目我加班加点做了,bug也不少,打回来继续改,在这种时候人的潜力就体现出来了,我的项目小组长WJ以及另外一个同事ZZB,他们顶住了,坚持下来了,而且2边都做的不错。我不得不相信:有时候人的悟性跟潜力还是有差距的,这个跟你的勤奋以及努力无关,这一次我承认我是败下阵来了。等我把美国的那些项目做好了,bug改了几次之后,到了5月份吧,我已经出现信任危机了,后来在6月份的时候我就辞职了。而且这个时候我一直在考虑一个问题,我还要不是继续搞java web开发(j2ee),我已经感觉到我的悟性和潜力跟不上java系列技术的飞速快步发展了,一开始我在考虑转向嵌入式,那个行业变化不是太快,而且经验积累比较久些,但是我身边没有认识的人,我对那个行业一无所知,转过去难度太大了;就在这个时候我一个大学朋友HES已经搞oracle管理DBA 2年多了,从他那里我得知数据库发展没有java系列那么快,这个行业需要耐心以及毅力,而且经验积累的越多,价值越高,我觉得我比较适合这个行业,于是决定转行业方向,实际上我大学毕业的时候就想找数据库方面的工作,但是水平太低,找不到工作,不得已做了java开发。现在有机会了,而且自己也有一定的积蓄了,我决定转到数据库行业上去。
这样我在08年6月下旬,正式辞职,其实我在B公司学到的东西很多,那里面的团队氛围也非常好,技术上也有了飞速的进步,但是我不得不离开了。在5月份的时候,我已经花了5000买了一台新台式机电脑(这是我有生以来买的第一台电脑),准备来自学oracle数据库,在在HES的协助下,我搭建了环境,正式闭门修炼一个月,到了7月末的时候,开始找数据库方向上的工作,一开始定位DBD,可是却是次次碰壁,没有工作经验的不要,HES给我解释说是这样的,数据库多重要的东西啊,人家不敢轻易让新手来弄的,如果要培养,人家也会从公司里自己人慢慢培养,这样代价小些,外面的DBA薪资太高了!而且小公司不需要DBA,都是开发人员兼任数据库管理工作,HES建议我先去做数据库开发人员,做了数据库开发人员,慢慢找机会转向数据库管理人员,这样比较实际;后来我就这样面试了,数据库开发或者管理,但是一直没有得到office,知道8月初的时候,有了一份office开了3.5K,说我在数据库方向的经验为0,所以给我开的是入门工资,我想了想,太少了,就没有去。这个时候奥运来了,我也歇了半个多月吧,到了9月初,我就接到了上海电信的office,不过是外派性质的,外派公司在文思创新,进去做的是数据库开发。
其实在找工作的时候,很多公司打着数据库的幌子,叫我去面试,完了问我java高级工程师,你来不来,开的薪水也挺好的,但是我这个时候已经确定了我的职业方向了,数据库管理DBA,所以都婉言拒绝了!可是我现在的状况我得先做数据库开发人员,才能慢慢转向数据库管理。在找工作的时候我在想一个问题,为什么数据库管理有DBA这个专用术语,我就想数据库开发也应该有一个专业术语,我想了想DBD(database developer)比较合适,所以从那以后我就以DBD标榜自己,HES还经常拿这个开玩笑,只有你这个DBD才有这个想法之类的话语......
在msn上面或者qq上面跟数据库方向上的网友聊天的时候,我就极力将DBD这个概念拓展开去,跟别人解释DBD,现在他们都比较接受这个简称了,我不知道是否已经有了这个DBD称谓了,反正在我现在接触的圈子里面,我是第一个提出并大力推广DBD(database developer)数据库开发人员的专业称谓的。
子在川上曰:逝者如斯夫,不知不觉我已经上漂了3年了,就写下了上面的这些个杂言碎语,算是在工作上给自己一个小小的交待吧,其实在上漂的3年还有许多许多其他的事情,只是最近没有心情也没有时间写了,我想如果春节有空,自己会把它记录下来的!
明年要准备OCA、OCP专业认证考试了,希望自己一次性通过吧!
49 个解决方案
#1
弄了个专家提问的意思是:专家解答下我这3年的工作经历,有那些可以改正的,或者可以改进的,大家指点下,谢谢了!
#2
新年快乐~
#3
新年快乐
#4
呵呵,问自己一个问题:你要的是什么?工作能否带给你?
#5
喜欢前面那几句话.
#6
子在川上曰:逝者如斯夫
#7
不舍昼夜
#8
╭┘└┘└╮
└┐..┌┘────╮
╭┴──┤ ├╮
│o o│ │ ●
╰─┬─╯ │
HAPPY 牛 YEAR
└┐..┌┘────╮
╭┴──┤ ├╮
│o o│ │ ●
╰─┬─╯ │
HAPPY 牛 YEAR
#9
关注
#10
子曰 Happy 牛 year
祝大家工作顺利
祝大家工作顺利
#11
恩,写得不错,找好方向,余下的就是坚持。
道就是专一和坚持。
道就是专一和坚持。
#12
写的不错。
#13
恩
#14
呵呵,问自己一个问题:你要的是什么?工作能否带给你?
#15
恩 ..
#16
30岁之前,我的要求很简单:
1,是一份稳定的工作,能养活自己以及每个月给老爸老妈点钱花。
2,准备在老家小镇上买一个房子(需要20万左右)给老爸老妈安度余年。
#17
加油
#18
加油你会做到的..
#19
mark
#20
come on
#21
谢谢,我会坚持到底的,往DBA的道路上走到底!
#22
弄了个专家提问的意思是:专家解答下我这3年的工作经历,有那些可以改正的,或者可以改进的,大家指点下,谢谢了!
#23
up
#24
等了这么久,专家还没有来啊!
#25
新年快乐
#26
牛逼啊
#27
MARK
#28
祝lz考试顺利!
#29
快30了。还没飘过,很怕自己就这么到老了,想去飘一下,成功不成功就看2009了,努力
#30
顶一下
#31
加油
#32
很长,有空再看.
#33
来看专家怎么说。
#34
好长啊~~我只看了前面1/3
#35
哦
#36
是东软出来的吗?我也刚出来
#37
一个不经意的选择会改变你的窘境,进而改变你的命运,精彩你的人生!
#38
加油,生活会越来越好滴
#39
记住,程序很多地方是共通的,无论你是DB Developer还是Web Developer,DB方面更多的是需要实践和经验,你现在两个都不具备,想直接做DBA很难,人要踏实了才能进步。
当初同意招你进来,还是因为你会java,人看上去比较踏实,也许我看错了-_-!!!
当初同意招你进来,还是因为你会java,人看上去比较踏实,也许我看错了-_-!!!
#40
牛年好运
#41
to i8dea
即使楼主不具备DB方面更多的是需要实践和经验,也一样能做DBA
即使楼主不具备DB方面更多的是需要实践和经验,也一样能做DBA
#42
很少发贴,精神不错,支持你一下!
#43
关注一下
#44
LZ很有毅力,向你学习。我即将大学毕业,现在正在找工作中,在51上投了很多简历,没有人回复过我,我现在的要求很低,能先找一家公司笔试或面试下!
#45
#46
嗯,努力吧,好好找,会找到的!
#47
你说的很对,无论是DB Developer还是Web Developer很多地方是通用的,这句话我们技术经理曾经对我说过,可是我现在还没有领悟到它们哪里是通用的,以及它们通用的切入点在哪里?
或许很多我的同龄人已经理解了这个切入点,才能在程序开发上做的得心应手吧,可是我没有这个悟性,写了近2年的java web代码,也没有领悟,这就是我这个普通老百姓的悲哀啊!
不过 DBA是我的目标,我是不会 放弃的!
#48
lz其实不必悲哀。在我看来,lz身上有两种很可贵的品质:勤奋和真诚。这就足够了。我就不相信,勤奋诚实的人,不能达成目标,赢得尊敬。
我觉得,你遇到的问题和困惑,其实我们都遇到过。这个问题,概括地说,那就是很多程序员在职业生涯的初级阶段,未能抓住编程的本质,
以为某一种语言,框架或技术就是自己的整个世界,整天折腾于其中的细节。在换一种语言,框架,技术之后,又需要重新折腾,才能具备一定的
生产效率。
编程活动(软件开发),本质上讲,就是将现实生活中的问题,映射成计算机能够执行的机器码。程序员干的就是这“映射”的工作,代码就是程序员
向计算机发出的指令。为了让程序员更容易地进行“映射”,才会有种种编程语言(C/C++, java等)和开发框架(spring,j2ee等)。这些语言和框架,其实
就是为程序员提供了一个“虚拟计算机”。告诉程序员说,ok,你只需要按照我这种语言的规范,或者我这个框架的流程,写代码,写配置文件,编译即可。
剩下的事,由我这个语言或框架来与计算机进行交互,将你的代码翻译给那个只知道0和1的计算机。
刚开始学习编程的时候,我们直接面对的是某一种具体的语言或框架,我们只有按照它的规定,才可以编写出想要的程序。久而久之,我们就会错
误地以为,这种语言和框架就是编程世界的全部。我们花费n多精力去搞清它的语法,它的流程,和一些数不胜数的细节,搞得越清,我们才能更
高效地根据这个“虚拟计算机”的规定写出代码。
但是,悲剧就在于,今年你用这种语言,框架做开发,明年可能又会换一种。语言框架无穷溃也,而我们的精力有限。
面对这种情形,彪悍者挑灯夜读,去搞清楚新语言,新框架的种种细节;退缩者就像lz一样,考虑转行或者做一些变化较小的编程工作。
有没有第三种人,他可以不用转行,不用去搞清新语言,新框架太多的细节(必要的细节还是要搞清的),就可以具有一流的效率?
我觉得是有的,本人也的确见到过。我认为,每个诚实勤奋的程序员都可以修炼成这第三种人。
个人认为,修炼的过程可以分为以下几步。
1. 抓住编程活动唯一不变的因素:那个只能理解0和1的计算机。
编程领域,程序员要解决的问题会变,使用的语言和框架会变,但是计算机的工作原理不会变,cpu指令还是那几条,计算机工作方式还是“存储程序并执行”。
只有我们程序员彻底地了解计算机的工作机制,并且培养了编程所需要的逻辑思维能力,(1)我们才能真正地看穿,任何一种语言,框架,背后的工作原理是什么,
它会将我们的代码,如何翻译给计算机?(2)我们怎样才能高效率地编写出优质的代码?
下面介绍一些具体的做法。
(1)掌握(精通)某种对计算机有较小抽象的语言。如汇编,C语言等。这些语言和java不同,它们没有屏蔽太多计算机的执行细节。因此用他们编程,就好像直接跟
计算机本身打交道。拿C语言来说,C语言有指针,内存需要自己分配和自己释放,这样程序员在编写代码的时候,就会把自己大脑当作计算机,在自己大脑里面,
建立一个计算机的模型。而这个模型,是不会变的。
(2)用汇编或C语言,实现一遍清华版严蔚敏编写的数据结构一书中的所有例子。这个建议看上去似乎搞笑。但是,请lz相信,完成这一步之后,你的大脑将具有
较强的逻辑思维能力,你的大脑已经锻炼得,能够以计算机的工作方式一样去思考。 这样,你的大脑里面就有了两个世界:一个是现实生活的,一个是计算机的。
两个世界的逻辑你都非常清楚,而编程就是在两个世界之间进行映射,这样的话,这种映射工作,就非常easy了。
我相信,完成这两步之后,你的逻辑思维能力,编码能力,将有本质的提升。
2. 了解计算机领域各分支的一些基础知识,理解并掌握人们在计算机领域积累的一些好方法。
通过第一步,我们具备了较强的逻辑思维能力,对两个世界的固有逻辑,运作方式都比较清晰。那么,接下来我们需要了解计算机领域各个分支
(编程语言,操作系统,计算机网络,数据库等)的一些基础知识,使我们学习和看问题的视野,具备一定的宽度和广度。同时,也需要理解和掌握人类在计算机领域所取得
的一些经验和方法。比如,常用算法和数据结构,比如界面开发领域的mvc模式,比如计算机网络的七层模型等。这些东西,都是前辈程序员或科学家,面对困难问题时的天才创造,
需要我们牢记在心,同时在编程时复用它们。
lz可能会问,这第二步,和如何高效地学习语言/框架有什么关系呢?其实关系非常大。首先,如果了解计算机领域的各分支的一些知识,那么我们对任何一门语言或框架,
都可以放到计算机整个行业来衡量,明白它要解决什么样的问题,针对哪种情况有特别的优势;第二,因为语言和框架,都是人打造出来的,那就必定复用了现有的一些好的
方法,如果我们对这些方法了解的话,那么对于一种新的技术,就能够知道它根源,知道它复用了那些解决方法。
3. 从语言和框架设计者的角度来学习某种语言和框架。
通过第一步,我们具备的学习和思考的深度;通过第二步,我们具备的学习和思考的广度。完成这两步之后,我们便有了快速学习和掌握某种语言和框架的基础。
那么才能够如何快速地学习和掌握某种语言和框架呢?个人认为可以通过以下步骤。
(1)在学习某种语言和框架的时候,我们要分析,这种语言和框架是为了解决什么样一个问题而产生的?该语言/框架的设计者为什么要搞出这一套来?
它和现成的东西有什么不同?有什么优势?
(2)搞清楚设计者的目的之后,我们就知道该语言/框架存在的意义和目的了。接下来我们再考察设计者设计时所采用的原则和使用方法。因为设计者在设计这一套语言或框架的
时候,肯定是有几条设计原则的,这几条设计原则,就像指南针或灯塔,指示了该语言或框架的基本属性。我们根据这几条原则去学习某语言/框架,就像逛街拿着地图一样,
在学习的过程中,才会有正确的方向,才能真正地去领会设计者的意图,去和设计者交流,而不是认为他高高在上,我们只能顶礼膜拜,将他的每一句话奉为圣经——这样的做法,
只能让我们学了一门又一门语言,拜过一座又一座山头后,还没有自己的见解和东西。
比如说,sql语句的设计原则就是,屏蔽底层操作细节,让用户容易使用。structs的设计原则就是,提供一个框架,这个框架将界面展示和业务逻辑分开,让程序员分工更明确,
代码更好维护和复用;Java的设计原则是,当时java之父用C++写程序写电烤炉的程序,被语言风格复杂,没有垃圾回收机制C++搞烦了,于是开发出一种语法简洁,有垃圾回收
机制,能够在背后为程序员做很多事的语言来,并命名为java,意思是这种语言,谁用谁happy,编码之余,你还有空喝喝咖啡,聊聊天。(可惜现在java又被搞复杂了)
(3)明确了设计者的目的和设计的原则,我们再来考察这种语言的框架的知识结构,找出哪些东西是本质的,需要像掌握穿衣服系鞋带方法那样透彻地掌握?哪些东西是非本质
的,可以不去熟记它,理解它,姑且让它放在参考手册里面,待用时再去查它?拿java语言的学习来说,java的基本语法,类库结构,输入输出机制,异常处理机制,多线程编程
机制和类库结构,path/classpath的原理等是本质的,需要透彻掌握;但是那些字符串操作类和方法,输入输出具体的类和方法等,却并非本质的,需要的时候再去查手册即可。
确定好本质和非本质的东西后,接下来在大脑里面形成关于这种语言和框架的知识结构,知识结构一般是树形的,每个节点表示某一项本质的东西,同时还有指向非本质东西的
索引,要用的时候,根据这些索引去找到非本质的东西。
接下来在工作当中,在你使用这个语言和框架的过程中,你会不断地强化这个知识结构树。时间一长,你对本质的东西领悟的更加深刻了,非本质的东西,也变成了自己的记忆,
牢牢的印刻在自己的脑海里。于是,你精通了这种语言或框架,你具有了最高的工作效率。
4. 平时我们要学习什么?
程序员的生活,显然没有大家描述得那么繁忙和紧张,工作之余的时间还是有的。那么,我们如何利用这些宝贵的,真正属于我们自己的时间呢?如果你不用自己做饭,不用陪女
朋友逛街,不看电视,周末8点钟就可以起床,那么用来学习的时间还是很多的。只不过,我们现在学习上的误区是,经常把这些宝贵的时间消耗在对细节的理解和记忆上面。个
人认为,这恐怕是最浪费时间的学习方法了。细节是看不完的,细节只是放在手册上用来查阅的。我们真正需要学习的,一是学习和了解本行业一些本质的东西,这些本质的东西
如果你不了解,那么你就不能做某件事情,比如,如果你想从事数据库开发,那么对sql语言的学习和理解,某种数据库的安装和管理,某种编程接口的使用和经验的获得,这些
就是本质的东西;二是学习如何提高自己的工作效率,这就需要我们阅读一些心理学,认知科学方面的书籍,博客,来进一步认识自己,搞清楚自己大脑的运转习惯,自己的一些
思维定势,思维误区等。当我们对自己的大脑,心理,个性有深刻的认识后,我们才能更有效率的工作和学习(在此严重向lz推荐 http://blog.csdn.net/pongba/ 的博客)。
#49
谢谢!这个我得慢慢去想下!还不是很明白!
#1
弄了个专家提问的意思是:专家解答下我这3年的工作经历,有那些可以改正的,或者可以改进的,大家指点下,谢谢了!
#2
新年快乐~
#3
新年快乐
#4
呵呵,问自己一个问题:你要的是什么?工作能否带给你?
#5
喜欢前面那几句话.
#6
子在川上曰:逝者如斯夫
#7
不舍昼夜
#8
╭┘└┘└╮
└┐..┌┘────╮
╭┴──┤ ├╮
│o o│ │ ●
╰─┬─╯ │
HAPPY 牛 YEAR
└┐..┌┘────╮
╭┴──┤ ├╮
│o o│ │ ●
╰─┬─╯ │
HAPPY 牛 YEAR
#9
关注
#10
子曰 Happy 牛 year
祝大家工作顺利
祝大家工作顺利
#11
恩,写得不错,找好方向,余下的就是坚持。
道就是专一和坚持。
道就是专一和坚持。
#12
写的不错。
#13
恩
#14
呵呵,问自己一个问题:你要的是什么?工作能否带给你?
#15
恩 ..
#16
30岁之前,我的要求很简单:
1,是一份稳定的工作,能养活自己以及每个月给老爸老妈点钱花。
2,准备在老家小镇上买一个房子(需要20万左右)给老爸老妈安度余年。
#17
加油
#18
加油你会做到的..
#19
mark
#20
come on
#21
谢谢,我会坚持到底的,往DBA的道路上走到底!
#22
弄了个专家提问的意思是:专家解答下我这3年的工作经历,有那些可以改正的,或者可以改进的,大家指点下,谢谢了!
#23
up
#24
等了这么久,专家还没有来啊!
#25
新年快乐
#26
牛逼啊
#27
MARK
#28
祝lz考试顺利!
#29
快30了。还没飘过,很怕自己就这么到老了,想去飘一下,成功不成功就看2009了,努力
#30
顶一下
#31
加油
#32
很长,有空再看.
#33
来看专家怎么说。
#34
好长啊~~我只看了前面1/3
#35
哦
#36
是东软出来的吗?我也刚出来
#37
一个不经意的选择会改变你的窘境,进而改变你的命运,精彩你的人生!
#38
加油,生活会越来越好滴
#39
记住,程序很多地方是共通的,无论你是DB Developer还是Web Developer,DB方面更多的是需要实践和经验,你现在两个都不具备,想直接做DBA很难,人要踏实了才能进步。
当初同意招你进来,还是因为你会java,人看上去比较踏实,也许我看错了-_-!!!
当初同意招你进来,还是因为你会java,人看上去比较踏实,也许我看错了-_-!!!
#40
牛年好运
#41
to i8dea
即使楼主不具备DB方面更多的是需要实践和经验,也一样能做DBA
即使楼主不具备DB方面更多的是需要实践和经验,也一样能做DBA
#42
很少发贴,精神不错,支持你一下!
#43
关注一下
#44
LZ很有毅力,向你学习。我即将大学毕业,现在正在找工作中,在51上投了很多简历,没有人回复过我,我现在的要求很低,能先找一家公司笔试或面试下!
#45
#46
嗯,努力吧,好好找,会找到的!
#47
你说的很对,无论是DB Developer还是Web Developer很多地方是通用的,这句话我们技术经理曾经对我说过,可是我现在还没有领悟到它们哪里是通用的,以及它们通用的切入点在哪里?
或许很多我的同龄人已经理解了这个切入点,才能在程序开发上做的得心应手吧,可是我没有这个悟性,写了近2年的java web代码,也没有领悟,这就是我这个普通老百姓的悲哀啊!
不过 DBA是我的目标,我是不会 放弃的!
#48
lz其实不必悲哀。在我看来,lz身上有两种很可贵的品质:勤奋和真诚。这就足够了。我就不相信,勤奋诚实的人,不能达成目标,赢得尊敬。
我觉得,你遇到的问题和困惑,其实我们都遇到过。这个问题,概括地说,那就是很多程序员在职业生涯的初级阶段,未能抓住编程的本质,
以为某一种语言,框架或技术就是自己的整个世界,整天折腾于其中的细节。在换一种语言,框架,技术之后,又需要重新折腾,才能具备一定的
生产效率。
编程活动(软件开发),本质上讲,就是将现实生活中的问题,映射成计算机能够执行的机器码。程序员干的就是这“映射”的工作,代码就是程序员
向计算机发出的指令。为了让程序员更容易地进行“映射”,才会有种种编程语言(C/C++, java等)和开发框架(spring,j2ee等)。这些语言和框架,其实
就是为程序员提供了一个“虚拟计算机”。告诉程序员说,ok,你只需要按照我这种语言的规范,或者我这个框架的流程,写代码,写配置文件,编译即可。
剩下的事,由我这个语言或框架来与计算机进行交互,将你的代码翻译给那个只知道0和1的计算机。
刚开始学习编程的时候,我们直接面对的是某一种具体的语言或框架,我们只有按照它的规定,才可以编写出想要的程序。久而久之,我们就会错
误地以为,这种语言和框架就是编程世界的全部。我们花费n多精力去搞清它的语法,它的流程,和一些数不胜数的细节,搞得越清,我们才能更
高效地根据这个“虚拟计算机”的规定写出代码。
但是,悲剧就在于,今年你用这种语言,框架做开发,明年可能又会换一种。语言框架无穷溃也,而我们的精力有限。
面对这种情形,彪悍者挑灯夜读,去搞清楚新语言,新框架的种种细节;退缩者就像lz一样,考虑转行或者做一些变化较小的编程工作。
有没有第三种人,他可以不用转行,不用去搞清新语言,新框架太多的细节(必要的细节还是要搞清的),就可以具有一流的效率?
我觉得是有的,本人也的确见到过。我认为,每个诚实勤奋的程序员都可以修炼成这第三种人。
个人认为,修炼的过程可以分为以下几步。
1. 抓住编程活动唯一不变的因素:那个只能理解0和1的计算机。
编程领域,程序员要解决的问题会变,使用的语言和框架会变,但是计算机的工作原理不会变,cpu指令还是那几条,计算机工作方式还是“存储程序并执行”。
只有我们程序员彻底地了解计算机的工作机制,并且培养了编程所需要的逻辑思维能力,(1)我们才能真正地看穿,任何一种语言,框架,背后的工作原理是什么,
它会将我们的代码,如何翻译给计算机?(2)我们怎样才能高效率地编写出优质的代码?
下面介绍一些具体的做法。
(1)掌握(精通)某种对计算机有较小抽象的语言。如汇编,C语言等。这些语言和java不同,它们没有屏蔽太多计算机的执行细节。因此用他们编程,就好像直接跟
计算机本身打交道。拿C语言来说,C语言有指针,内存需要自己分配和自己释放,这样程序员在编写代码的时候,就会把自己大脑当作计算机,在自己大脑里面,
建立一个计算机的模型。而这个模型,是不会变的。
(2)用汇编或C语言,实现一遍清华版严蔚敏编写的数据结构一书中的所有例子。这个建议看上去似乎搞笑。但是,请lz相信,完成这一步之后,你的大脑将具有
较强的逻辑思维能力,你的大脑已经锻炼得,能够以计算机的工作方式一样去思考。 这样,你的大脑里面就有了两个世界:一个是现实生活的,一个是计算机的。
两个世界的逻辑你都非常清楚,而编程就是在两个世界之间进行映射,这样的话,这种映射工作,就非常easy了。
我相信,完成这两步之后,你的逻辑思维能力,编码能力,将有本质的提升。
2. 了解计算机领域各分支的一些基础知识,理解并掌握人们在计算机领域积累的一些好方法。
通过第一步,我们具备了较强的逻辑思维能力,对两个世界的固有逻辑,运作方式都比较清晰。那么,接下来我们需要了解计算机领域各个分支
(编程语言,操作系统,计算机网络,数据库等)的一些基础知识,使我们学习和看问题的视野,具备一定的宽度和广度。同时,也需要理解和掌握人类在计算机领域所取得
的一些经验和方法。比如,常用算法和数据结构,比如界面开发领域的mvc模式,比如计算机网络的七层模型等。这些东西,都是前辈程序员或科学家,面对困难问题时的天才创造,
需要我们牢记在心,同时在编程时复用它们。
lz可能会问,这第二步,和如何高效地学习语言/框架有什么关系呢?其实关系非常大。首先,如果了解计算机领域的各分支的一些知识,那么我们对任何一门语言或框架,
都可以放到计算机整个行业来衡量,明白它要解决什么样的问题,针对哪种情况有特别的优势;第二,因为语言和框架,都是人打造出来的,那就必定复用了现有的一些好的
方法,如果我们对这些方法了解的话,那么对于一种新的技术,就能够知道它根源,知道它复用了那些解决方法。
3. 从语言和框架设计者的角度来学习某种语言和框架。
通过第一步,我们具备的学习和思考的深度;通过第二步,我们具备的学习和思考的广度。完成这两步之后,我们便有了快速学习和掌握某种语言和框架的基础。
那么才能够如何快速地学习和掌握某种语言和框架呢?个人认为可以通过以下步骤。
(1)在学习某种语言和框架的时候,我们要分析,这种语言和框架是为了解决什么样一个问题而产生的?该语言/框架的设计者为什么要搞出这一套来?
它和现成的东西有什么不同?有什么优势?
(2)搞清楚设计者的目的之后,我们就知道该语言/框架存在的意义和目的了。接下来我们再考察设计者设计时所采用的原则和使用方法。因为设计者在设计这一套语言或框架的
时候,肯定是有几条设计原则的,这几条设计原则,就像指南针或灯塔,指示了该语言或框架的基本属性。我们根据这几条原则去学习某语言/框架,就像逛街拿着地图一样,
在学习的过程中,才会有正确的方向,才能真正地去领会设计者的意图,去和设计者交流,而不是认为他高高在上,我们只能顶礼膜拜,将他的每一句话奉为圣经——这样的做法,
只能让我们学了一门又一门语言,拜过一座又一座山头后,还没有自己的见解和东西。
比如说,sql语句的设计原则就是,屏蔽底层操作细节,让用户容易使用。structs的设计原则就是,提供一个框架,这个框架将界面展示和业务逻辑分开,让程序员分工更明确,
代码更好维护和复用;Java的设计原则是,当时java之父用C++写程序写电烤炉的程序,被语言风格复杂,没有垃圾回收机制C++搞烦了,于是开发出一种语法简洁,有垃圾回收
机制,能够在背后为程序员做很多事的语言来,并命名为java,意思是这种语言,谁用谁happy,编码之余,你还有空喝喝咖啡,聊聊天。(可惜现在java又被搞复杂了)
(3)明确了设计者的目的和设计的原则,我们再来考察这种语言的框架的知识结构,找出哪些东西是本质的,需要像掌握穿衣服系鞋带方法那样透彻地掌握?哪些东西是非本质
的,可以不去熟记它,理解它,姑且让它放在参考手册里面,待用时再去查它?拿java语言的学习来说,java的基本语法,类库结构,输入输出机制,异常处理机制,多线程编程
机制和类库结构,path/classpath的原理等是本质的,需要透彻掌握;但是那些字符串操作类和方法,输入输出具体的类和方法等,却并非本质的,需要的时候再去查手册即可。
确定好本质和非本质的东西后,接下来在大脑里面形成关于这种语言和框架的知识结构,知识结构一般是树形的,每个节点表示某一项本质的东西,同时还有指向非本质东西的
索引,要用的时候,根据这些索引去找到非本质的东西。
接下来在工作当中,在你使用这个语言和框架的过程中,你会不断地强化这个知识结构树。时间一长,你对本质的东西领悟的更加深刻了,非本质的东西,也变成了自己的记忆,
牢牢的印刻在自己的脑海里。于是,你精通了这种语言或框架,你具有了最高的工作效率。
4. 平时我们要学习什么?
程序员的生活,显然没有大家描述得那么繁忙和紧张,工作之余的时间还是有的。那么,我们如何利用这些宝贵的,真正属于我们自己的时间呢?如果你不用自己做饭,不用陪女
朋友逛街,不看电视,周末8点钟就可以起床,那么用来学习的时间还是很多的。只不过,我们现在学习上的误区是,经常把这些宝贵的时间消耗在对细节的理解和记忆上面。个
人认为,这恐怕是最浪费时间的学习方法了。细节是看不完的,细节只是放在手册上用来查阅的。我们真正需要学习的,一是学习和了解本行业一些本质的东西,这些本质的东西
如果你不了解,那么你就不能做某件事情,比如,如果你想从事数据库开发,那么对sql语言的学习和理解,某种数据库的安装和管理,某种编程接口的使用和经验的获得,这些
就是本质的东西;二是学习如何提高自己的工作效率,这就需要我们阅读一些心理学,认知科学方面的书籍,博客,来进一步认识自己,搞清楚自己大脑的运转习惯,自己的一些
思维定势,思维误区等。当我们对自己的大脑,心理,个性有深刻的认识后,我们才能更有效率的工作和学习(在此严重向lz推荐 http://blog.csdn.net/pongba/ 的博客)。
#49
谢谢!这个我得慢慢去想下!还不是很明白!