Ⅰ 程序员要具备什么技能
一名合格的程序员需要掌握哪些技能呢?
熟练掌握开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和java是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C编写。而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVA One很可能会成为未来的主流开发工具之一。其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,C Builder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
熟知数据库
为什么数据库是如此重要?作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库操作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL, Postgres等。
对操作系统有一定的了解
当前主流的操作系统是Windows,Linux/Unix,熟练地使用这些操作系统是必须的,但只有这些还远远不够。要想成为一个真正的编程高手,需要深入了解操作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。Linux作为开发源码的操作系统,是一个很好的学习平台,Linux几乎具备了所有现代操作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。只有对操作系统有一定的了解后,你会发现自己上了一个新的台阶。
懂得网络协议TCP/IP
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式,从最早的客户/服务器结构,到今天的WEB Services,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,所以,深入掌握TCP/IP协议是非常必要的。至少,你需要了解ISO七层协议模型,IP/UDP/TCP/HTTP等常用协议的原理和三次握手机制。
明白DCOM/CORBA/XML/WEB Services存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。程序员需要做的不仅仅是利用商业的开发平台来开发软件,而是要理解这些技术的初衷,即为什么需要这项技术,如果你能理解了这一点,再回头看这些技术的具体实现,就如庖丁解牛,迎刃而解。XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布计算的基石之一。
不要将软件工程与CMM分开
现代大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员,一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能,如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。一句话可以概括我的看法:“创意无限,流程保证”。
拥有强烈的好奇心
什么才是一个程序员的终极武器呢,那就是强烈的好奇心和学习精神。没有比强烈的好奇心和学习精神更好的武器了,它是程序员们永攀高峰的源泉和动力所在。
Ⅱ 程序员要求或需要具备什么能力
程序员对技术还有自学能力要求会多些,当然公司一般看你的技术能力,但是如果你本人自己也想在程序编程这方面多做出一些成绩的话,最好是多学习,能自学最好。因为技术是不断进步的,特别是做编程这方面的,你稍微落后,可能在开发新项目的时候,就跟不上队伍了,自学的话,推荐一个网站网页链接,你可以去看下,这个是纯自学的,开源~
Ⅲ APP程序员需要具备的能力有哪些
app程序员需要具备的能力:肯吃苦、有创新能力、有上进心、服从上级安排等。
Ⅳ 从哪些点上可以体现一个程序员的实力
对于一个程序员来说,刚上任的新手,如果能够将工作任务高效地处理,证明其工作能力还是具备一定的基础的,企业大可继续留任试用。如果这个程序员不仅能够在短时间内高效处理工作内容,且对于工作的细节也十分地考究,充分全面地考虑,必然也代表其工作思维和普通员工不同。一个程序员如果对于工作只是在应付差事,那么必然其能力也不会好到哪里去,因此,一定要观察期对待工作态度是否认真,然后进行其能力的初步判断。
Ⅳ 年薪80万的程序员有多厉害
你好,如阿里网络腾讯等互联网大厂的工程师,资深(架构师水平)工程师是非常有实力的。
以阿里为例:
1、阿里工程师岗位职级
阿里巴巴集团采用双序列职业发展体系:
一套体系是专家路线【P序列=技术岗】,程序员、工程师,某一个专业领域的人才,一共分为14级,从P1到P14,目前校招最低从P4开始。
一套体系是M路线,即管理者路线【M序列=管理岗】,从M1到M10。
考核因素是上一年的绩效分数+直属领导的打分+晋升委员会打分,这里的委员会一般由直属领导+合作方的高管+懂业务的HRG组成。HRG:HR多面手,base在业务下面,在阿里话语权比别的互联网HR高。
晋升标准:绩效满足3.75、主管提名、技术答辩通过。
P8架构师作为阿里“IT架构灵魂人物”的角色,他们不仅做着架构师的本职工作,还同时做程序开发,写核心代码的工作。另外,架构师依旧是技术高手,编程能力依然是一流的。
但根据当前的市场需求,互联网大厂们对于普通Java开发人才需求逐年锐减,而对互联网架构师人才的需求招聘量已经上升到50%,因此薪资更是不可同日而语。
对于想学习互联网架构师的同学来说,北大青鸟、课工场等优秀品牌都是不错的选择。课程根据招聘需求制定,包含全部分布式微服务技术,对标阿里P8级别架构师。
希望我的回答对你有所帮助!
Ⅵ 作为一名合格的java程序员需要具备什么能力
如何快速为合格的程序员从初入职场菜鸟到职场大咖,很多程序员在努力充实自己,有时候我们需要对自己进行一次能力定位,了解自己的优势和没有掌握的技术。芯学苑本文列出几点作为初入职场的新手评估自己,明了前进学习的方向。1、技术能力(解决问题的能力)这是非常重要的事;过硬的技术能让你得到面试机会,并在工作中游刃有余。当公司招聘一个Java开发人员时,是会优先考虑能力因素的。在实际的项目开发中,一个程序员的技术能力等于其解决问题的能力。如果拿一个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的数量和难度来衡量。一个程序员能基本无误的完成项目中的一个功能算是合格,但在此之前,他对项目的生产力为负,为他布置的任务,中间环节的沟通,修补bug的时间其实要多于自己直接完成该功能的时间的。能较好完成一个完整模块的程序员才算是较好的程序员,也是项目中的主要开发者。能独立完成整个项目才是优秀的程序员。2、专业基础(知识的积累)一个程序员的知识积累很大程度上决定了其解决问题的能力。知道如何编写代码是基本的技能,但是知道Java编程语言的原理,知道代码背后的算法将使你从人群中脱颖而出。3、主流编程工具今天,事实是,你不能成为一个样样都懂的人(杂而不精)。你必须选择你要掌握的工具。有时这是由工作的环境决定的,但是按照下面说的去做也是一个很好的选择:构建工具:Maven或Gradle。SCM:Git(不是GitHub。大不相同)。构建自动化:Jenkins。IDE:Netbeans或Eclipse——不仅用于编写代码,而且还从IDE中重构和调试代码。我遇到了很多没有如何从他们最喜欢的IDE调试的开发人员。Bug跟踪:Bugzilla或Jira。4、JSF的知识应用程序服务器所有Java开发人员应该知道如何在ApacheTomcat中部署。当Glassfish开发停止时,下一个最好的事情是JBossWildFly。5、沟通的能力沟通是我们做好一切事情的关键。我们必须与我们周围的环境保持互动,无论是在我们的私人还是职业生活中。一个良好的程序员知道如何在各种团体面表达自己。也许对你来说显而易见的东西在他人的角度来看并非如此。从大的尺度(比如一个人的工作生涯)来看,一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣。在一个分工明确的项目中,程序员需要理解产品,和领导沟通理解自己的任务,和同事们沟通以正确的方式进行合作。无论哪一个方面沟通出了问题都不是小事情,同时,程序员还需要正确的传达设计的实现难度,以及让别人正确的理解自己设计模块的接口。在不写文档时,正确的口头沟通非常重要,需要写文档时,良好的编辑能力也算做是沟通能力的一部分。6、自学能力这是一个非常重要的技能,在你自己的空闲时间学习新的技能。不要等待公司为你提供培训。你需要自己去学习新技术,提升自己在相关领域的水平。从WEB前端开发到架构模式,总是有一些新事物值得学习。经常阅读博客和论坛,尝试加入本地聚会小组。你学到的东西可以帮助你的事业。知识刷新频率极快让人无法追赶的这个时代,难免会有超出自己知识范围的时候,此时你的自学能力决定了你能多快的完成任务。7、良好的团队合作精神无论是部分编程还是大型项目,所有开发人员都是作为团队的一部分在协同工作。你需要致力于团队的目的,或帮助新的团队成员克服障碍。不要存在这种“我只要做好我的本职工作,下班就直接回家”的态度。成为团队的一部分,帮助周围的同事,对自己的能力也是不小的提升。就像拿破仑说的不想当元帅的士兵不是好士兵,追求参与一个大型软件系统的开发,是每个程序员的梦想。在此之前,我们应该学习的专业知识,达到优秀程序师的标准。最后希望各位程序员阅读本文后能够得到一些裨益,在这条路上走得更好。
Ⅶ java程序员应该具备哪些基础能力
java方面编程的初级学员必需掌握的基础知识:java语言、HTML、JSP以及至少一种数据库。这是最低的标准,但是也是最高的要求,因为基本上其他相关的技术和架构都是基于这些以上的。总之,我觉得都是一通百通,基本上做一个项目就能熟练掌握一种技术。
至于企业方面:本人先后在国内几个大的软件公司工作过,外企也差不多。小公司我没有去过,但是我觉得小公司不能去,学的技术好像很多,但是其实阻碍了一个工程师从一个工程师到项目经理或者技术经理的发展,因为小公司做的不可能是很大的项目,难么架构和设计不那么严谨,这样从宏观来看对一个程序员是没有好处的。
企业方面根据所做项目的不同用到的技术也不一样,而基本上大一点的公司都有自己的主营项目,也就是强项。比如亚信是做通信行业的,目前处在web化阶段,其对于java工程师的需求很大,但是它的核心还是C语言的,所以一个java程序员在这样的公司是不会有多大发展的,也学不到什么东西,值得一提的是这种公司都有自己的工具软件,也就是把一些常用的模块或者功能都做好了,你只要调用就行了,所以基本上你到这种公司学不到高深的技术,以后跳槽也难! 现在大一点的公司都有自己的工具软件,目的是封装常用的模块,缩短开发周期,提高运行效率,但是对于喜欢技术的人来说就没有什么好处了。
最后,想说的是:企业其实需要的是学习能力强的人,踏实肯干就会得到认可。至于技术都是进入公司以后的事情,只要上面说的几样搞清楚了,面试谈的不错,加点技巧就可以了!
java 学习资料要视频干什么呢? 用Eclipse工具自己买本书或者到网上下几个程序源代码研究一下,再写几个小例子就差不多了!
希望可以帮到您,谢谢!
Ⅷ 除了编程语言,程序员还需要具备哪些能力
抽像思维能力
作者认为这是程序员最重要的能力。我们在编程时,用到的都是一些抽像的概念。作者认为应该把培养抽像思维能力作为平时练习最重要的事情长期做下去。
问题分解能力
现实编程时,我们要解决的问题往往都比较大,比较复杂。怎么样把复杂的大问题分解成一个个小问题,再逐个去解决这些小问题。这个就是问题分解能力。缺少问题分解能力的人,拿到问题时总会没有思路,因为他们不懂地把问题分解成一个个简单地可解决的问题。
模式识别
作者举了个笑话:在一个程序员的面试过程中,面试官问被试者,微波炉着火了怎么办?被试者说把微波炉扔到窗外。面试官继续问如果咖啡机着火了怎么办?被试者说把咖啡机装在微波炉里,然后扔到窗外。
这里作者想提的其实是一种问题转换的思路。把遇到的一个问题分解后,把子问题使用已经有成熟解决方案的方法来解决。其实模式识别就是抽像思维的一种。我在教女儿算数时,就用了这个方法,我先问她你有三个苹果,妈妈吃掉一个还剩下几个。等她理解后,再问她你有三个桃子,妈妈吃掉一个还剩下几个。所以,实际上我是在教我女儿抽像思维的能力,问题的重点不是苹果或桃子,而是三和一。
判断代码质量的能力
这里作者讲的是不要过早,过度去优化代码,不要片面去追求完美解决方案。代码的性能和质量要和问题的复杂度相当。
怎么样去判断代码的质量和效率刚刚好呢?作者没有提,我觉得这个需要有一些 benchmark 工具来测量以及实际使用来衡量。在这一点上,其实我比较少看到程序员犯这方面的毛病,看到更多的是完全没有优化或没去思考性能问题的低级错误。
练习
练习,练习,练习。没有捷径。10000 小时理论在编程这件事情上一定是真理。可能有天才,但只要你不是特别笨,在一个细分领域持续练习,投入时间,一定会成为专家。当然,这里有些人是工作一年,学了三年的经验,有些人是工作了五年,只学了一年的经验。
基本原理
这条是我加的。当学会用 Java 读写文件后, 不管是 Swift 还是 Python ,他们的读写文件的方法都类似。当熟练使用 Java 的多线程编程,并且理解线程的运作方式之后,要用其他语言实现多线程编程,只需要查看 API DOC 很快就可以写出多线程代码。类似的概念还有网络编程,内存管理,进程间通信,设计模式等等。新技术层出不穷,但基本原理却发展异常缓慢,而且基本保持不变。
作者:kamidox
链接:https://www.jianshu.com/p/9d5366dd157f
来源:简书
着作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Ⅸ 现在的公司需要的程序员要具备什么能力啊
最佳答案
作一个真正合格的程序员,应该具有的素质。
1:团队精神和协作能力
团队精神和写作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
2:文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
5:模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员、项目经理。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力