‘壹’ 如何成为一个优秀的程序员
讲几个小的方面吧。
批评还是启发?
代码审查是一个不错但很少用的想法。在一个团队里,优秀的程序员另一个任务就是要指导经验比你少的程序员,但是主要以指导和启发为主,不是贬低和公开批评,因为消极的态度不利于接下来团队合作的开展。
学会分享
搞编程的没有去逛一些论坛都不好意思说自己是干编程这个行业的。优秀的程序员往往会在这些论坛帮助别人,而实质上,输出就是最好的学习。在一个团队中也是一样,帮助他人解决问题收获更多,你也将不断地得到成长。
劳逸结合
每天工作 24 小时不会让你更有效率!不少程序员年纪轻轻就有腰椎盘突出、颈椎病、肩周炎、腰肌劳损、圆肩驼背等职业病。程序员们需要加强锻炼,运动不仅仅可以加强肌肉的力量和耐力,而且也能够活动身体的各个关节,有效缓解长时间保持一个动作导致局部肌肉过劳。
另外,编程是一项艰苦的脑力劳动活;有时你的大脑确实需要休息一下,休息是为了更好的工作。否则,你的工作质量将大打折扣。业余时间养成一项自己的个人爱好,确保自己可以放松并沉浸其中。如果是球类运动,效果更好,它将让你保持旺盛的精力和活力。
不要闭门造车
留意网络各种平台,学习新语言和框架、参与讨论以及看看同行在干什么。多关注业界在干什么,这将让你的视野更加广阔,不致于为了编程而编程。
‘贰’ 如何才能修炼成一名不可替代的程序员,避免裁员危机
程序员,就是从事程序开发、程序设计、程序维护的专业人士。
作为一种专业性极强的技术性专业,程序员的工作难度非常高,只有专业技能水平高超的人才能在这个领域获得良好的发展前景。……那些实力不足的人,只能被最终淘汰。
因此,要想在程序员这一行里成为不可替代的人,避免自己被淘汰出局的情况,就必须具备以下几方面能力:
1,高人一筹的专业技能。
在职场上,要想确保自身生存,就必须具备一项专业技能。……要想确保自己不被淘汰,就必须具备高人一筹的专业技能水平。
因此,要想让自己成为不可替代的程序员,要想让自己避免被淘汰的情况,就必须确保自己的专业技能水平高人一筹。
2,强大的罗辑思维能力。
程序,是一个逻辑性极强的系统。
一个程序的各个部分之间、各项功能之间,都存在着极强的关联,也拥有着非常强的逻辑关系。
因此,要想编写出性能优异的程序,就必须拥有极强的逻辑思维能力。……这是确保自己拥有更强实力、确保自己不被淘汰的重要能力。
3,高超的数学水平。
程序的表象,是一段代码。而其核心,则是数学模型,是具体的算法。……只有具备高超的数学水平,才有能力编写出算法精妙、逻辑严谨的程序来。……这是自己具备更高水准的关键因素。也是自己高人一筹,不可替代的关键因素。
4,精通至少一门编程语言。
编程语言是程序员在编程时所用的工具。……只有熟练掌握手中的工具,才能让自己编写出优秀的软件。……编程语言有很多种,一个程序员不可能面面俱到。……但是一个合格的程序员必须掌握至少一门编程语言,这就是自己工作时最得力的工具。……运用这个工具,自己就可以编写出优秀的软件,就可以获得更好的业绩,最终成为不可替代的优秀人才了。……自己也就不可能被淘汰了……
‘叁’ 程序员如何规划才能让职业生涯长期稳定呢大家有建议分享吗
对于软件开发人员来说,通常情况下,职业发展有几种选择:专注技术,成为技术专家;回到技术销售,技术支持等。所以,要想走得更远,必须要有过人的本事。随着技术的发展,从技术管理走向先进管理。这是大家都能看清楚的方向,都在朝着这些方向的金字塔尖努力。程序员要根据自己的基本素质和技术能力选择开发级别,由低到高逐步开发。也是一个具有相应素质的程序员一步步的发展轨迹,包括强大的技术背景和全面的管理能力,也就是所谓的“两条腿走路”的职业规划发展路线。“如果是这样的话,我相信你不会在35岁的时候倒闭。
3.实施路线。
初级程序员,中级,高级,系统分析师,项目经理,实施经理,实施总监。
4.销售路线
初级程序员,中级,高级,系统分析师,项目经理,实施经理,产品经理,售前顾问,销售经理。
‘肆’ 如何做好一名程序员
1,文档习惯 :文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
2,模块化思维能力 :要想成为一个优秀的程序员,他的思想不能仅仅只在局限当前的工作任务里面,比如写plc编程语言,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
3,团队精神和协作能力 :我个人认为团队精神和协作能力对于个人和所在团体都是相当重要的。团队精神和协作能力是作为一个程序员应具备的最基本的素质。虽然海南师范大学开设软件工程专业仅有三年的时间,但软件工程在全国来说已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
4,规范化的代码编写习惯 :知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
5,学习和总结的能力 :程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员。
6,测试习惯 :测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7,需求理解能力 :程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
‘伍’ 如何成为优秀的程序员
首先是 来自自身内部的创造性的一面
虽然你可以从别人那里学到很多东西,也可以已有的东西中得到灵感。但真正的创意灵感来自于你自己。例如乔布斯,他不是一名工程师,也不是程序员,但他很有创意,他推动苹果公司创造了iOS,Siri。
或许你想问编程需要什么创意?任何人都可以在线或离线学习一些课程,阅读一些书籍就可以开始写代码了。但这些东西都是别人灌输给你的,你需要有自己的一些想法和创意,想出自己的框架。例如Dennis Ritchie,他就创造性地编写了C编程语言,而且目前这是使用最广泛的语言。
它像任何口语一样,每个人都知道一些语言,但不是每个人都是一个诗人或一个作家。你需要创造性的技能才能被称为伟大的诗人或作家。
其次是技术方面
你需要从一些编程语言开始。过去很多人开始是以C语言开始编写程序。然后很多人开始使用BASIC。现在人们从Python或PHP开始。其实从什么语言开始不重要。重要的是一旦你掌握了这些概念,你就可以编写算法并绘制流程图。
总的说来,如果你花太多时间做下面的事情,它可能会提高你的技能一点点,但你永远不会是一个好的程序员:
只知道看书的程序员用永远不会成为一个好程序员。俗话说All read and no practice makes Jack a ll boy,古人的话绝对是有道理的,不是说让你不要阅读,只是不要只有阅读,你应该通过应用你学到的东西来构建简单的应用程序。
通过记忆代码和算法。编程是思考而不是记忆。你可以拥有最好的记忆力,但是如果你没有自己思考,你永远不会是一个好的程序员。我们有计算机和互联网为我们记住事情,你不需要记住任何东西 , 你只需要了解在哪里以及如何找到你需要的信息。
通过编写你看的书中的单个函数和算法,即编写愚蠢的冒泡排序函数和类似的无用算法。
通过测试其他人的代码。例如是否使用测试软件或编写单元测试等
通过阅读和调试其他人的代码。这可能会在短期内有所帮助,但是只是在对方的代码写得很好的情况下,你可以从中学到别人的一些良好的习惯;但阅读不好的代码作为例子会教你养成不良的习惯,而且你或许一直会记得这个错误的习惯。从长远来看,花费太多时间阅读和调试其他人的代码将不利于你的成长。
让别人来管理你。编程就是为自己思考,你需要自己管理自己,也就是上面所说的,要有自己创造性的思考。
成为优秀的程序员最好的打开方式就是:
你必须自己完整的完成一个项目。不要过多地把重点放在阅读书籍,语法,算法和功能上,也就是说,在开始时不要太关注细节。你可以简单地坐下来思考一个你想为自己开发的应用程序/系统......如果实在需要的话,可以问你身边的同事/老师的想法,但是你必须有自己的思考并且自己独立去完成它。
一旦你想明白了,就把这个想法留在脑海,并且富有激情的去完成它,所有的一切都会慢慢地开始。你会想到你要实现的功能,你将开始研究如何实现这个或那个。
只有在这个时候,你才应该拿起一本书或在互联网上搜索关于如何实现这个你认为可以做的很酷的功能的答案。随着你的应用程序/系统的发展,你将会慢慢地开始考虑编写更简洁的代码,以便在将来也可以派上用场,让自己的工作更轻松。
只有通过把自己的想法带入生活,你才能学会如何成为一名优秀的程序员。你应该把自己看成是一个艺术家,而不是像编写代码的人那样去编译和运行。如果你只是在别人的代码上工作,或者只是阅读书籍等,你将很快失去动力,你永远不会发现或利用你的才华。
‘陆’ 如何使用搜索技巧来成为一名高效的程序员
可解决实际问题的高效搜索
A. 查找
1. 定义——弄清楚要解决什么问题,并以要查找的内容为焦点。网络上有如此多的有趣的材料,以至于搜索过程能轻易地占掉你全部的工作时间(和个人时间)。
2. 检索(使用标准盯和的Google、代码搜索或其他的检索引擎)—有很多关于如何高效的使用检索引擎的建议。
3. 浏览结果(内容的质量、可信度及专业技术的水平;如果资料的可信度过低,无须再看)-> 阅读 -> 评估(人力物力、所需工具及函数库)
B. 使用
1. 复制代码 – 单独复制(针对这一目的,带有长钉技术的显式单元测试最适合)
2. 清除代码 – 仅保留最小限度、相关性代码,清除解决方案中的其它代码。
3. 在系统中应用代码。
C. 学习
1. 理解——你做手庆了什么及你为什么那样做——从代码和实现中学习。
2. 扩充知识——
a. 实践性知识:解决问题的特定方法、技巧及风格;
b. 概念知识:学习新概念、提炼现有的并构建自己的概念;
c. 隐性知识:明智地使用并学习搜索到的解决方案,经验会自然而然地得到增长。
3. 收集(链接、意见、参考文献、阅读清单)—任何对你今毕则握后搜索、发现及学习有用的有趣信息。为这些目标积累知识。
‘柒’ 请问,如何才能做一个优秀的程序员
1、养成良好的书写代码的习惯,该加注释的时候一定要加注释,该大写的地方一定要大写,变量命名不能模糊不清。这是基础,是为了让别人能看明白你所写的代码,不能你写的代码只有你自己才看的明白。
2、注意所写软件的版本控制。
3、勤奋学习最新的技术,计算机技术日新月异,这点我不说相信你也知道。
4、养成写开发文档的好习惯,再接到一个项目时,第一件事情是进行需求分析,然后写开发文档,把你每一步要做什么都先写清楚,再动手做。
5、不要怕技术难题,在计算机领域,只有不能解决难题的人,没有人解决不了的难题。
6、虚心象他人学习,即使技术实力比你差很多的人,也肯定会知道一些你所不知道的技术点。
第一种武器:开发工具
至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C和JAVA是我重点推荐的开发工具,C/C以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而本人对SUN公司的“网络即计算机”的概念相当欣赏,并相信JAVA即其相关的技术集JAVAOne会成为未来的主流开发工具之一。其次,如果能掌握一种简便的可视化开发工具,如VB,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
第二种武器:数据库
为什么数据库是如此重要?很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会中庆塌接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
第三种武器:操作系统
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机差慧制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
第四种武器:网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
第五种武器:DCOM/CORBA/XML/WEBServices
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间件平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
第六种武器:软件工程与CMM
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色卖圆的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
第七种武器:强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。