1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)
2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)
4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一个程序员对自己的未来很迷茫,于是去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”
于是他去问Lippman。
Lippman说“程序员的未来就是驾驭程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”
于是他去问Gates。
Gates说“程序员的未来就是榨取程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”
于是他去问侯捷。
侯捷说“程序员的未来就是诱惑程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝摇摇头“唉,我的孩子,你还是别当程序员了”)
6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时…我问你,觉得这些是乐趣吗?)
7、当程序员不易也不难。(世间事有难易乎?为之…;不为…。你有决心和信心吗?)
8、你真的要当程序员?是你自己的想法?
9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。) 10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。
11、编程序就是编写程序。
12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)
(三) 一个程序员应该具备的基础知识和概念
1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)
2、机器语言和微指令集的概念。
3、程序的概念。
4、汇编语言是低级语言但不是机器语言。
5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语) 6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的)
7、HTML、XML等是标识性语言。
8、Prolog是人工智能语言。
9、 *** 作系统OS的概念和原理。(Windows98,Windows2000,Windows NT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)
10、Windows编程说白了就是Windows API的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)
11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。
12、面向结构的设计概念。
13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的)
14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)
15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)
16、了解网络概念。
17、了解多媒体概念。
18、熟悉和掌握数据结构和基本算法。
19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!)
(四) 教材推荐
――-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。
1、《计算机组成原理》(熟悉)
2、《数据结构》(掌握)
3、《 *** 作系统》(了解->熟悉)
4、《The C language》(掌握)
5、《编译原理》(了解原理)
6、《汇编语言》(了解)
7、《计算机网络》(了解)
8、《软件工程》(了解)
9、《关系数据库》(熟悉)
10、《The C++Languege 》(掌握)
11、《面向对象设计》(掌握;结合C++学习)
(五)一些经验和体会
1、真正的程序员用C++;(一位专家说的)
2、动手去编程序;
3、动脑去思考;
4、要有良好的编程风格;
5、读书,读好书,尽量读原版书!(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)
6、有自己的学习计划;
7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)
8、不要怕学新东西;
9、要有软件工程的思想;
10、善于发现问题,然后去寻找答案;
11、向高手请教;(要虚心直到你成为高手)
12、和同行交流;(不善于交流肯定不行)
13、懂得软件的实质,不要被千变万化的表象所迷惑;
14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)
15、学习wiodows编程主要是学习windows OS和win32 API;
16、有空了解一下嵌入式开发;
17、有空了解一下PDA软件开发;
18、了解一下NET框架和C#语言,也许它是你新的衣食父母;
19、要有耐心,不要作浮躁的人; 20、对程序加注释,并保留你的老程序;
21、学到的东西越多,了解的越多,你就越接近专家;
22、有空去逛逛CSDN,那里有你很多知己;
23、要有信心成为一个优秀的程序;
(六)一些好书的推荐
1、《The C Programming language》 (Keinighan & Dennis Ritchie 1988)
2、《The C++ Programming Languague》(Bjarne Stroustrup 1997)
3、《Inside The C++ Object Model》 (lippmans)
4、《Effective C++》 (同上)
5、《More Effective C++》 (同上)
6、《Exceptional c++》
7、《C++面向对象高效编程》
8、《设计模式》
9、《Thinking In C++》
10、《The Standard C++ Bible》(一般推荐)
11、《The Art of Computer Programming 》
12、《Programming Windows》 (Charles Petzold)
13、《VC++50技术内幕》
14、《MFC 深入浅出》
15、《软件需求》
16、《Advanced Windows》
17、《C++ primer》
18、《win32程序员参考手册》
19、《用TCP/IP进行网际互连》
20、《COM 本质论》
(七)学习计划
――-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。 1、《计算机组成原理》
2、《 *** 作系统》
3、《数据结构》
4、《汇编语言》
5、《 C 》
6、《 C++ 》
7、《VC 技术内幕》
8、《Programming Windows》
9、《深入浅出MFC》
10、《Advanced Windows》
11、《Inside The C++ Object Model》
12、《Thinking in C++》
13、《Effective C++》
14、数据库
15、网络
16、嵌入式OS和编程
17、硬件单片机
18、NET和C#
19、软件工程
20、UNIX和Linux
每个大牛都是从小白成长过来的,对于刚刚步入职场的程序员来讲,面对身份的转变和还未熟悉的工作,都难免会有不适应,对自己未来的成长也会比较迷茫。
No1
大部分的程序员从小白到大牛都是要经历一个循序渐进的过程,没有一蹴而就的成功,程序员的成长也是分阶段的,而每个阶段的侧重点又都不一样。
很多人总想一口吃成胖子,可往往就是这种急躁的心理,反而使得自己更难静下心来夯实基本功,适得其反。
要知道,成长从来就不是一件简单的事情。那么对于IT小白来说,IT培训>
No2
首先,要制定详细而明确的阶段性目标。工作时如果有一个目标,会帮助你找到努力的方向,对自己的事业发展也很有帮助。而越详细、越明确的目标,其可实施性就越高,这也能使你找到短期奋斗的动力。
其次,要利用空闲时间多学习。技术实力始终是一个程序员能否往前走的关键,没事的时候多看代码,保持对代码的敏感度。只有看的多了,琢磨的多了,才能培养出好的代码审美感。
除了要保持对代码的敏感度以外,还要让这种敏感度成为你写代码中的利器。因此,你需要勤写代码,多做总结,不断优化自己写的代码。
最重要的是,要注重在项目中去锻炼自己。项目开发是帮助程序员快速成长的一个有效途径。实践出真知,只有多实践,才能发现自己在实际的项目开发中存在的缺点和不足,找出来并及时改正,将为自己积累下十分宝贵的经验。
No3
不知道大家有没有听说过“空杯心态”?
“空杯心态”简单来说就是:如果你的杯子是空的,新东西就比较容易进去;反之,如果你的杯子已经满了,新东西就进不去。
举例来说,可能会有一小部分自以为是的同学,他们在刚从学校出来时思维较为固化,自己的东西太多,顽固又不肯放弃,新东西自然难以学进去,成长自然就慢。而具有空杯心态的同学,他们会适时清空自己,甚至有意识清除脑中顽固区域,虚心主动学习,渴望更多知识,学到的自然就会多。
因此,要想快速成长为一名优秀的程序员,就要学会保持空杯心态。
随着技术更迭速度的不断加快,IT行业对程序员的学习能力要求也变得更高。只有时刻保持对学习的热忱,保持空杯心态,才能早日成长为一名优秀的程序员。同时,要坚持自律,懂得自我约束。越是在特殊时期,保持学习的自律能力就越重要!
程序员是一种技术工作在IT的发展中有相当重要的地位从底层硬件通讯协议的建立 到数据传输层的处理到 *** 作系统的建设到数据库平台的建设一直到应用层上各种数 据营销平台的搭建程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献
中国有很多精于编码的人但是中国软件行业尤其是网络应用开发方面误区很大很难形成有规模的软件开发力量和产品能力不但比美国差距甚远和印度相比也是颇有不 如这些问题不是在于中国程序员的智商和工作努力状况也不是在于国家和民间对开发 的投入程度而是很大程度上有一些对技术对程序开发对项目设计方面的思想误 区这些误区导致了软件行业的产品化能力不足缺乏规模化和大型复用系统研发能 力可以说改变认识误区是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作
中国有很多小朋友他们189岁或212岁通过自学也写了不少代码他们有的代码写的很漂亮一些技术细节相当出众也很有钻研精神但是他们被一些错误的认识和观点左右缺乏对系统对程序的整体理解能力这些人一个网上的朋友说得很好他们实际 上只是一些Coding fans压根没有资格称为程序员但是据我所知不少小网络公司的 CTO就是这样的coding fans拿着吓人的工资做着吓人的项目项目的结局通常也很吓人
一程序员基本素质
作一个真正合格的程序员或者说就是可以真正合格完成一些代码工作的程序员应该具有的素质
1:团队精神和协作能力
把它作为基本素质并不是不重要恰恰相反这是程序员应该具备的最基本的也是最 重要的安身立命之本把高水平程序员说成独行侠的都是在呓语任何个人的力量都是有 限的即便如linus这样的天才也需要通过组成强大的团队来创造奇迹那些遍布全球 的为linux写核心的高手们没有协作精神是不可想象的独行侠可以作一些赚钱的小软 件发点小财但是一旦进入一些大系统的研发团队进入商业化和产品化的开发任务缺 乏这种素质的人就完全不合格了
2:文档习惯
说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子良好的文档是正规研发流程中 非常重要的环节作为代码程序员30%的工作时间写技术文档是很正常的而作为高级 程序员和系统分析员这个比例还要高很多
缺乏文档一个软件系统就缺乏生命力在未来的查错升级以及模块的复用时就都会遇 到极大的麻烦
3:规范化标准化的代码编写习惯
作为一些外国知名软件公司的规矩代码的变量命名代码内注释格式甚至嵌套中行缩 进的长度和函数间的空行数字都有明确规定良好的编写习惯不但有助于代码的移植和 纠错也有助于不同技术人员之间的协作
有些coding fans叫嚣高水平程序员写的代码旁人从来看不懂这种叫嚣只能证明他们自 己压根不配自称程序员代码具有良好的可读性是程序员基本的素质需求
再看看整个linux的搭建没有规范化和标准化的代码习惯全球的研发协作是绝对不可 想象的
4:需求理解能力
程序员需要理解一个模块的需求很多小朋友写程序往往只关注一个功能需求他们把性 能指标全部归结到硬件 *** 作系统和开发环境上而忽视了本身代码的性能考虑有人曾 经放言说写一个广告交换程序很简单这种人从来不知道在百万甚至千万数量级的访问情 况下的性能指标是如何实现的对于这样的程序员你给他深蓝那套系统他也做不出太 极链的并访能力性能需求指标中稳定性并访支撑能力以及安全性都很重要作为程 序员需要评估该模块在系统运营中所处的环境将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性就这一点一个成熟的程序员至少需要2到3年的项目研发和跟踪经 验才有可能有心得
5:复用性模块化思维能力
经常可以听到一些程序员有这样的抱怨写了几年程序变成了熟练工每天都是重复写 一些没有任何新意的代码这其实是中国软件人才最大浪费的地方一些重复性工作变成 了熟练程序员的主要工作而这些其实是完全可以避免的
复用性设计模块化思维就是要程序员在完成任何一个功能模块或函数的时候要多想一 些不要局限在完成当前任务的简单思路上想想看该模块是否可以脱离这个系统存在 是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用这样就能极大避 免重复性的开发工作如果一个软件研发单位和工作组能够在每一次研发过程中都考虑到 这些问题那么程序员就不会在重复性的工作中耽误太多时间就会有更多时间和精力投 入到创新的代码工作中去
一些好的程序模块代码即便是70年代写成的拿到现在放到一些系统里面作为功能模块 都能适合的很好而现在我看到的是很多小公司软件一升级或改进就动辄全部代码重 写大部分重复性工作无谓的浪费了时间和精力
6:测试习惯
作为一些商业化正规化的开发而言专职的测试工程师是不可少的但是并不是说有了专 职的测试工程师程序员就可以不进行自测,软件研发作为一项工程而言一个很重要的特 点就是问题发现的越早解决的代价就越低程序员在每段代码每个子模块完成后进行 认真的测试就可以尽量将一些潜在的问题最早的发现和解决这样对整体系统建设的效 率和可靠性就有了最大的保证
测试工作实际上需要考虑两方面一方面是正常调用的测试也就是看程序是否能在正常 调用下完成基本功能这是最基本的测试职责可惜在很多公司这成了唯一的测试任务 实际上还差的远那,第二方面就是异常调用的测试比如高压力负荷下的稳定性测试用 户潜在的异常输入情况下的测试整体系统局部故障情况下该模块受影响状况的测试频 发的异常请求阻塞资源时的模块稳定测试等等当然并不是程序员要对自己的每段代码都 需要进行这种完整测试但是程序员必须清醒认识自己的代码任务在整体项目中的地位和 各种性能需求有针对性的进行相关测试并尽早发现和解决问题当然这需要上面提到的 需求理解能力
7:学习和总结的能力
程序员是人才很容易被淘汰很容易落伍的职业因为一种技术可能仅仅在三两年内具有 领先性程序员如果想安身立命就必须不断跟进新的技术学习新的技能
善于学习对于任何职业而言都是前进所必需的动力对于程序员这种要求就更加高 了
但是学习也要找对目标一些小coding fans们他们也津津乐道于他们的学习能力一 会学会了asp一会儿学会了php一会儿学会了jsp他们把这个作为炫耀的资本盲目 的追逐一些肤浅的表面的东西和名词做网络程序不懂通讯传输协议做应用程序不懂 中断向量处理这样的技术人员不管掌握了多少所谓的新语言永远不会有质的提 高
善于总结也是学习能力的一种体现每次完成一个研发任务完成一段代码都应当有 目的的跟踪该程序的应用状况和用户反馈随时总结找到自己的不足这样逐步提高 一个程序员才可能成长起来
一个不具备成长性的程序员即便眼前看是个高手建议也不要选用因为他落伍的时候 马上就到了
具备以上全部素质的人应当说是够格的程序员了请注意以上的各种素质都不是由IQ决 定的也不是大学某些课本里可以学习到的需要的仅仅是程序员对自己工作的认识是一种意识上的问题
优秀程序员都是很努力的
一个真正合格的程序员,除了要有扎实的理论基础和代码能力,还要有诸多的综合素质。除非你只是一个纯粹的码农,除非你只是想做一点平淡的代码工作,否则如果你想有更好的发展,那就必须“学习”。从我自己的发展经历来讲,其实我只是一个半路出家的程序员,我没上过高中,只是师范毕业,学的还不是计算机,而是美术专业,从参加工作那天起开始自学计算机,花了半年学会了VB程序设计,写了第一个vb程序,一个校园的自动播音系统,实现了校园铃声、升旗、课间 *** 等定时音乐的自动播放,免费提供给学校使用,给学校带来极大方便,从此我爱上了编程。后来为了宣传单位的形象开始自学ASP脚本语言,一个月时间写出了第一个ASP网站,在这个过程中学习了网页前端布局,知道了前端可以有JS控制,知道了域名是什么,知道了>
在这期间我开始接一些网站建设的活儿,一开始,在网上搜索一些开源的代码进行修改,满足客户需求,但是很快发现一些问题,大多数代码都是预先挂了一些广告在里面,如果对程序不熟悉,等你网站发布出来,你就只能看到满山的网站,客户当然就不满意了,最后你还不知道这些广告从哪里冒出来的,甚至有些网站留了很多漏洞和后门,让你防不胜防。所以,想想还是自己写一套CMS系统,我只自己使用,只放在自己的服务器上,这样的话安全性高了很多,至少被攻击的几率少了多,也不担心莫名其妙冒出来的广告。于是,我开发了第一套产品,属于我自己的CMS,期间我可以说学到了更多的知识,累积了不少的产品开发经验。所以这里我总结一条,要成为一个合格程序员,最好完整的做一个项目吧。哪怕是项目的前端不懂,数据库不懂,逼迫自己去学习,去了解,最终产品虽然不够完善,至少你了解一个项目需要什么,和什么技术有关联,这样对你自己所擅长的东西就很有帮助。
不断学习,与时俱进。我喜欢一句话叫万变不离其宗。虽然程序语言有很多,但是基本原理还是相通的。我做了第一个ASP的CMS以后,很快发现ASP的程序网站已经不能适应项目开发的需求,需要更加高效的脚本语言来实现更多的功能。这个时候php就成了我首先研究的语言,因为我发现很多第三方开放的APi提供的都是PHP的,这让我们使用更多其他第三方功能的时候开发会更加方便快捷,所以我花了一个周,学习了基本语法和函数,我发现从ASP迁移到PHP其实是很简单的事情,只是语法不同,程序结构也是一样的,条件格式、逻辑判断、条件分支、循环处理也都差不多。经过学习很快掌握了这个语言,开始了项目开发之路。可见不断的学习,也就是自我成长的一个重要的过程。
良好的思维能力,这是一个程序员必须具备的技能。思维能力就是一个能够让代码在你头脑中执行一遍的能力,也就是说你在写代码的时候你的脑海里就能呈现出代码运行以后的结果,呈现给用户的界面,把抽象的逻辑代码转成具体形象的能力。良好的思维还体现在,一个程序的处理其实都离不开计算机运行的本质,那就是数据输入(数据从哪里来),到数据处理(获取的数据需要怎么加工处理或者转换为另一种形式),最后到数据输出(给用户呈现一个结果,图像的、文字的、视频的、声音的或者是多媒体的)。程序整体是这个理念,分解到很多细小的模块也是这样,所以只要有这些核心理念,你的思维能力就不会有问题。
通过我的学习和发展,我总结了,要让自己成长为合格程序员,离不开学习,离不开项目实践,离不开思维的创新,更离不开努力勤奋和汗水,愿有志青年都想有所成,学有所收,成就自我!
保持健康
编程之外的爱好
持续学习
正确应对犯错
不要囿于角色
展示你的创意
刻意练习手速
首先要说的当然是健康,脱离了这个本钱,一切都无从谈起。
久坐、不运动、睡眠不足、不注意及时补充水分、长期的伏案工作等都会对健康造成很大的影响。
研究表明,长期保持同一姿势(不论坐着还是站着)对身体都有不同程度的害处。这几年很流行的“站立式办公”也是一样,如果你白天站立时间过久,会对膝关节造成较大的压力,同样会损害健康。比较推荐的方式是,写30-40分钟代码就起来走一走,喝杯水,远眺一会,跟同事聊聊天。
我知道,作为程序员我也常遇到那种写代码写High了连厕所也不想去的时候。不过为了长远的健康,还是要养成良好的习惯。
戒除不良习惯
除了长时间保持同一姿势之外,许多程序员还有各种不良习惯。比如:
吸烟
喝酒
嗜糖(碳酸饮料,其他高糖饮料)
一些建议
有规律的做一些运动可以缓解颈椎、腰椎的不适,可以加快新陈代谢的速度,消耗多余的、会沉积下来的能量。比如比较容易接触到、也容易上手的运动:
瑜伽/普拉提
乒乓球
跳绳
培养一个编程之外的爱好
如果让不同的人对程序员打标签并排序,宅一定会排在前三。在任何的聚会上,程序员总是很容易被识别出来的:聪明、戴眼镜、话不多、略显闷骚、聊天容易冷场等等。也难怪,长期钻研技术,沉浸在非黑即白的二进制世界,爱刨根问底,这样很容易把天聊死。
我建议新手程序员可以找一个编程之外的爱好,一来可以拓展自己的社交圈,周末可以有个不一样的过法(而不是宅在家里写代码);二来可以帮助你成为更好的程序员。
一些建议
学习一项与编程无关的技能,比如:
乐器(如吉他,架子鼓)
绘画(素描,水粉,水彩等)或者书法
制作美食
某一项武术(拳击,泰拳,空手道等)
这些看似毫不相干的爱好可以帮助大脑休息。另外需要注意的是,你无需真正成为某一项爱好的专家,不要有额外的压力:担心演奏不好、没有绘画天赋等等。没关系,它只是一个爱好而已。
持续学习
软件开发是一个需要终身学习的行业(其实如果你不想做那种混吃等死的人的话,基本上每个行业都是这样)。
程序员被裹挟在技术演进的洪流中,不能自已。作为程序员,你不但要非常扎实的掌握基础知识( *** 作系统原理,计算机网络,数据结构,算法等),还需要有非常强的快速学习能力,以及愿意不断去学习的态度,而后者可能更重要。
读书
通过视频/文本教程等学习新技术
建议新手每天抽出一个小时来读书,周末可以多读一些。ThoughtWorks有个读书雷达,是一个很不错的书单,包括了很多的经典书籍。读书之外,还可以在线学习一些教程,比如Tutorialplus和Egghead等,都非常值得经常去看看,如果有比较新鲜有趣的技术,不妨自己亲自动手试一试。
正确应对犯错
斯坦福大学的Carol Dweck教授通过一些实验和后续的研究提出了很有名的心智模型(Mindset)理论,简而言之,她发现不同的人们对待失败这件事有着完全不同的态度:有一类人害怕失败,失败后会变得不能接受,而且容易否定自身并影响进一步的尝试,Dweck教授称这类人为固定型思维模式(Fixed Mindset);而另一类人则“喜欢”失败,视失败/犯错为学习的一种方式,他们更关注过程而不是结果,Dweck教授称其为成长型思维模式(Growth Mindset)。
Dweck在演讲中提到,通过向成长型思维模式的转变,关注从失败/犯错中学习,人们的潜力可以得到很好的发挥,也更容易获得理想的结果。
很多新人不敢尝试,又不愿意让同事知道自己的不足,这样的态度会导致他更倾向于选择更容易的工作,这样就可以避免暴露自己的不足,久而久之就会形成恶性循环。其实企业对于新人的期望一般都不会很高,对于新人犯错也是有容忍度的,新人要勇于承认自己的不足,勇于尝试新的事物,勇于犯错并从中学习。
承认自己的不足在刚开始是一件很困难的事情,不过在尝试过几次之后,你就会发现其实也没有那么恐怖。你慢慢会喜欢那种不带任何包袱的、全身心聚焦在学习本身上的快乐。
不要被角色限制
作为程序员,既可以往上游去探索需求的梳理,用户痛点的分析,业务价值的挖掘,又可以向下游如测试的编写,产品的发布,运维监控。视野开拓了,才有可能对产品有整体的了解,也更容易在程序员这个角色上做的更好。
作为新人,能在自己擅长的方面发挥长处当然很好,但是如果仅仅局限在自己擅长的方面则未免太过单薄。如果你在前端非常有经验,那么除了将这些经验和知识分享给别人之外,你还可以向别的角色学习他们擅长的技能,比如向测试学习自动化、SBE等;向后端学习高性能,高可用服务器的技术、数据库设计及优化、API设计等;向DevOps学习运维技能,自动化provision技能等等。
这些不同的技术不但可以让你的视野更加开阔,也可以为自己以后尝试不同的角色和机会打好基础。
展示你的创意
将一个创意、复杂概念或者想法简洁而准确的描述出来是一个非常重要的能力。我见过太多的程序员都是沉默寡言,讲东西声音又小,又紧张,即使有很好的想法也难以完整的表述出来。
不过这个能力是可以锻炼的,只需要借助原型的制作就可以了:
画图
静态原型
纸上原型
俗话说,一图胜千言。你只需要学习一些简单的绘画技巧就可以大大提高自己的表述能力。
通过用静态页面(HTML/CSS/JS),mock数据等方式,快速的将创意表达出来是程序员的一个优势,你可以用静态数据、数据文件等方式,通过一些简单的代码快速的作出可以做交互的原型,然后通过和用户不断确认的方式来渐进增强,这种做法可以避免太大的浪费,尽早的将客户价值交付。
原型并不局限在草图,可以工作的静态页面,还可以是一个清晰简洁的演讲。基于PPT的原型还可以用来分析目前产品痛点、对比方案的优劣、展示自己的看法等等。
手速
关于程序员是否要求很快的手速是一个颇具争议的话题。支持者认为这属于基本功,每个程序员都应该打字都很快;反对者则认为程序员的价值在于思考并解决问题,追求速度快,那还不如招个打字员。我个人的观点是,好的程序员应该有很快的手速(包括打字的速度,但不局限于此)。
对同一个页面的不断练习听起来是在做重复工作,其实可以联系到很多的内容:
命令行的熟悉程度
快捷键的使用
搜索引擎的使用
Stackoverflow的使用
当你真的可以熟极而流的时候,你才有时间来考虑如何优化,比如如何抽取模板工程(这样下次做同样的事情就会快很多),如何精简DOM结构,如何用命令行工具来帮助自己提速等。手速是大前提,没有速度,一切优化都是脑海中的意*,无法真实落地。
总结
要成为一个厉害的程序员,首先当然是要有一个好的身体。此外需要培养一个编程之外的爱好,这样可以让你活的像一个正常人(而不是传统的工科书呆子)。程序员是一个需要不断学习,不断充实的职业,在学习的过程中,英文能力可以帮助你学的更快,更有效,另外正确的应对学习过程中必然会犯的错误,并将每次错误都当成学习的机会。
如何快速成为一个优秀的程序员
优秀的程序员是在穿过一条单行道的时候还会往两边看的人。
作为一个IT行业的软件程序员,每天驱使我们日复一日的辛勤工作的,是来自我们对编程的兴趣和激情。但是要让编程变得始终有趣,我们必须学会坚持某些成为优秀程序员的基本原则。
我并不是要写出一些咒语,你照着执行就可以成为一个优秀程序员了。我的目的是想记录下我学习到的和用过的一些有用的经验,它们帮助我获得比较好的结果。对于优秀程序员是没有明确定义的,这里北大青鸟web前端培训专家(webteducn)指的是那些创造出了优秀IT解决方案的以及帮助这个行业增长的那些人。
对于任何行业任何工作来说,融会贯通是获得成功的关键。一个人想要成为优秀程序员,就必须有坚实的基础。核心理念的理解会帮助你用最好的方法设计和实施出最完美的方案。如果你感觉到不能掌握核心的计算机科学或者某个编程语言的知识点,现在开始回顾基础一点都不晚。
1开始为你写过的代码贴上标签(怎么做,做什么)
我发现优秀的程序员和普通程序员之间有一条明显的分界线,优秀程序员渴望深究每行代码做了些什么,以及如何实现的。有那么一小群人,他们一定要弄懂每一行代码。我知道如果时间非常紧张的时候,我们经常不能够遵循这个原则,仅仅写出些代码,知道它实现了需要的功能。如何处理这种情况又是另外一个话题,但是作为一个程序员,我们经常要尽可能深入探索。相信我,随着时间的推移这会变成一个习惯,之后每次你都会不知不觉的这样做了。
2帮助他人,你可以学到更多
许多人都有个共同特点,只有当他需要帮助的时候,他才会求助于论坛或者群。优秀程序员不同之处在于他们会经常浏览论坛去帮助他人。相比较于靠别人帮助解决问题,他们帮助他人让自己学到更多。在一个团队中也是一样,帮助他人解决问题收获更多。相信我,了解他人的问题,思考并最终提供解决方案吧,你会比之前学到的更多。
3写简单易懂,有逻辑性的代码
正如KISS原则(保持短小精悍)适用于生活的方方面面一样,它也适用于编程。尽量写有逻辑的代码,避免复杂化。有时人们写复杂的代码仅仅是为了展示他们有能力写出这样的代码。我的经验告诉我,简单而富有逻辑的代码非常的好,会产生的问题更少,也更容易扩展。我记得一句话:
好的代码本身就是最好的文档。当你想要加注释的时候,问问你自己,“我能如何改进我的代码,才能不写注释也读得懂呢”
4花更多的时候分析问题,你将会花更少时间去解决问题
花更多的时间理解和分析问题,然后再设计方案吧。你会发现剩下的事情很容易了。设计不是说要用建模语言和工具,可以是仅仅看看天空在脑子里构思。那些在遇到问题就开始敲代码的人往往会最终偏离需求。
如果你洗澡的时候不能理清整个程序的结构,那么你还没准备好开始编程。_RichardPattis
5成为第一个检查你的代码的人
虽然有一点点难,但试着在其他人修改你代码之前修改它,随着时间的推移,你会写出几乎没有bug的代码。对你的代码做没有任何偏见的检查,也不要犹豫让其他人来检查你的代码。和其他优秀的程序员一起工作,接受他们的意见能够帮助你也成长为一个优秀的程序员。
6不要迷失在快速更迭的科技世界
在IT行业中,我经常遇见许多人,他们对现在的工作不满,甚至离开它去追寻新的工作,理由是因为他们想要学习最新的科技。我们每天听到的都是新工具、接口、框架,能让程序更简单,速度更快。这在科技世界中司空见惯并会一直如此。但是最基本的最核心的科技变化比那些框架、工具和接口的变化小得多。就像大海,大海表面上波涛翻滚,但大海深处却相当平静,而那里才是水生生物生存的地方。所以将你自己置身于核心技术的大海深处吧。举个例子,在Java企业级应用中,每个星期都会出现新的框架,但是核心的技术是不变的,譬如基于客户端-服务器端的请求,MVS模式,filters/servlets/JSP,数据源绑定,XML解析等等。所以要花功夫去学习核心概念,而不是去担忧日新月异的框架和工具的出现。相信我,有了核心技术的基础,你会发现学习新的框架,工具以及接口变得更容易了。
7应急方案不会持续很长时间
很多时候软件师们会采用应急方案(可能是时间不够,可能是问题理解不透彻或者是缺少经验)。但是这样往往带来的结果是,代码混乱,缺乏可扩展性和维护性,后来浪费了更多的时间。请在你清楚整个方案后再开始实施。我知道有些情况下应急方案无可避免,就好像,一个人应该说实话,但是你在某些情况下不得不说谎。
8阅读文档
阅读很多文档是作为优秀程序员的必备习惯之一。可能是产品说明书、JSR、API文档、教程等。阅读文档帮助你获得必要的基础知识,写出更好的代码。
9你可以学习他人的代码
我接触过一些优秀的程序员,他们在IDE里面一直放着JAVA源代码,并经常在日常工作中阅读和查阅。他们这样做不仅是满足求知的渴望,还从中学习了如何写优秀的程序。阅读和查阅那些你认为可靠的出名的开源代码或者比你资深的程序员的代码,你会写出更棒的程序。
最后,我想说的但没有将其列在上面的:不要和他人比较
和他人的比较往往会造成消极的情绪和不健康的竞争。每个人都有他的长处和短处。扬长避短很重要。我也经常看到一些基础很厉害的程序员范很低级的错误。所以仅仅和自己比较,列举你自己需要改进的地方,并持续改进它。编程是很有意思的事情,享受它吧。
任何一个傻瓜都能写出计算机能理解的程序,而优秀的程序员却能写出别人能读得懂的程序。
很多人对程序员的理解不是非常明确,认为程序员是非常高大上的职业。怎样才是一名真正的程序员呢?程序员并不是需要月薪达到五万,最重要的是最程序的掌握。
什么是程序?
程序=数据结构+算法
当我们在写代码的过程中,需要包含哪些数据结构,需要包含哪些算法呢?对于这些知识非常模糊的人来说,一定是一个假的程序员。
想要成为一名真正的程序员,并不是薪水的问题,最重要的是能力的问题,可以选择参加电脑培训,在这个过程中能够有效的改变自己的学习和工作状态。在学习的过程中不断思考和练习,掌握技术能力,特别是一些需要更多逻辑思维的知识。很多人在学习的过程中不喜欢进行思考,最后在能力方面就会比其他人更加弱,这样不仅没有学到有用的知识,还浪费了大量的时间。
计算机行业的前景
随着国家不断推出的“互联网+”战略,软件发展和国家经济息息相关,在企业发展过程中离不开软件的发展,所以在国家经济不断发展的过程中,软件行业也在不断的持续发展。在软件发展的过程中,是需要不断学习和进步的。北大青鸟为大家介绍掌握前端开发应该掌握的技巧。
前端开发工程师的兴起随着web的发展在不断的进行细化,前端开发工程师主要是使用HTML/CSS/JavaScript/DOM/Flash再结合各种软件进行界面的开发,在开发过程中需要掌握标准的代码,能够起到很好的交互作用,并且还需要掌握JSP和Flash的知识模块,展现出完美的开发技能和视觉效果,为用户提供更好的使用体验。
昌平北大青鸟是一个提供人才的世界,在现在市场IT紧缺的情况下,成为一名真正的程序员是首要的目标,我们能够为大家提供一个完美的平台,出校门即可就业,掌握实用的电脑技能。
作一个真正合格的程序员,应该具有的素质。
1:团队精神和协作能力
团队精神和写作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
2:文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
5:模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员、项目经理。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力
以上就是关于如何成为一个程序员全部的内容,包括:如何成为一个程序员、IT培训分享刚入行的程序员小白如何才能快速成长、一个成功的程序员需要具备哪些素质等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)