1. 如何辨别一个程序员水平的高低
java">辨别一个程序员的水平唯一的办法就是看产出质量。
关键字:普通程序员
——————————————无耻割————————————————————
算法和数据结构都是锦上添花,并非是雪中送炭。而一个程序员的水准大致上是可以通过之前的代码质量估算出来的。【如果你可以获得此程序员的真实编写的代码,比如原创的Github】。
举个栗子:下面是我最近在单位一个同事写的代码,Java语言
(Stringstr,Integergrades){
Stringproportion=str;
for(inti=1;i<grades;i++){
Stringst=proportion.substring(proportion.lastIndexOf(",")+1);
if(st.equals(""))
returnfalse;
proportion=proportion.substring(0,proportion.lastIndexOf(","));
}
if(proportion.equals(""))
returnfalse;
str=str.replace(".","");
str=str.replace(",","");
for(inti=str.length();--i>=0;){
intchr=str.charAt(i);
if(chr<48||chr>57)
returnfalse;
}
returntrue;
}
大致上的功能就是将1,2,6.2,4,1的字符串判断每一‘,’内是数字,而且长度符合规定
这样的代码看上第一眼就觉得非常的丑陋。所以在我的要求之下,进行了一次重构。
(Stringstr,intgrades){
String[]proportions=str.split(",");
if(proportions.length!=grades){
returnfalse;
}
for(Strings:proportions){
if(!NumberUtils.isNumber(s)){
returnfalse;
}
}
returntrue;
}
这里看上去差不多就Ok。这样的代码其实也并没有用到什么数据结构和算法,就是很简单的字符串处理。
实际情况:在我们写的绝大多数的代码里面,大部分属于业务逻辑,极少部分的代码需要使用到算法和数据结构,在这样的情况下,我们能使用的到的技能最为关键的是让代码如何更加合理。而让代码更加优秀的方式是通过千锤百炼的重构,而重构是极大的考验一个程序员耐心和能力的东西。
—————————————————————————————————————
质量的范围广泛,我从下面几个小方面聊聊。
出货能力:如果一个程序,算法再精妙,不能出货都是扯淡,我看过某某大神,算法溜得很,但是一个人完全做不到按照工程需要把事情给做完。
优化能力:并没有一个程序是一步到位的,一个工程的交出去可运行了,那才是第一步,很多时候随着业务的增大,对性能的要求越来越高,有一定对于代码优化的能力也是比较重要的。
调错能力:项目越大,遇见的Bug也就是越离奇,这个时候需要强大的Debug能力,找出那个最为关键的错误点,甚至于追溯底层框架的源码。
技术掌控:你项目能用Spring,Hibernate等等框架,但是有没有想过,这些技术你真的可以掌控么,如果有一天你的框架版本需要升级,真的做得到么?甚至于从Hibernate转为MyBatis。
算法和数据结构是影响到一些核心区的问题,但是其他的一些技能,比如面向对象的架构设计,代码的低耦合,那都是对整个项目有着直观改善的技能。并非是贬低算法,而在实际工作中,有太多比算法更重要的问题了。
最后补充一点吧:从善如登从恶如崩,毋以恶小而为之,此古人诚不欺我
2. 有哪些话一听就知道一个程序员是个水货
其实如果要严格说起来,工作经验少于一年半的程序员基本上可以算是“假”的程序员。这里的“假”可以这样来理解。
你的编程能力只有复制粘贴的水准
刚工作的程序员大致可以分为两类人:1 高校毕业;2 培训班出身。对于第一类的人来说,在读书期间老师和学校教的内容都是基础内容,而且要学的内容非常的多。但学校只让你学广,并没有让学生专研一门学科。毕竟学校并不能保证每个学生对某个方向一定感兴趣,只能把基础知识教给学生。让学生自己去选择自己感兴趣的方向,自己自学。所以在校期间对于大部分学生来说,实战能力基本为零,都是像刚重生在新手村,无知茫然,这也是许多企业爱招应届生的原因。开始工作,基本只能靠谷歌、靠网络上网找代码,复制粘贴。这段时间就比谁找代码能力强了。而对于培训的人来说更是如此。不要看你在培训期间学习了非常多的编程知识,好像做了非常多的练习,甚至还自己写了一个实战项目。但这些都是在短时间内,靠着培训老师手把手带你们写的。你只管跟着老师走就好,不懂的问下老师就行。你根本就没有过自己的思考,就只懂:好!今天老师叫我们写这个代码!我们就写!换个角度来看,培训机构就像富士康工厂一样,批量制造编程机器,没有自己的思维。
想要摆脱“假”程序员的身份,你只有努力提升自己的编程水平,让自己有更好的能力。在工作上能靠自己的实力,去完成分配的任务。你只有这样才能提升,才能突破薪水的瓶颈,达到更高的层次。
3. 人群中如何一眼认出资深程序员
程序员其实离我们并不遥远,很多时候就在我们的身边,只不过我们不能够一眼认出他们而已。因为他们在工作之余,也和我们普通人一样,穿着同样的衣服,与路人毫无区别。但就我在互联网公司的观察来看,如果我们想要在人群中,一眼便认出程序员,可以通过以下几种方法:
程序员很多时候因为项目进度,会没日没夜的加班,而且长期的写程序,也会加速他们脑细胞的死亡。就我身边的程序员同学来讲,就有很多拥有少白头的情况。
他们平均每个月都需要去理发店一次,将自己的头发染成黑色,以免影响到自己年轻、帅气的形象。
以上三点就是我个人对于程序员的区别方法,这个方法也不能够很好地分辨程序员。因为现在的程序员,也非常的潮流,而且完全颠覆了我们对于传统程序员的印象。
4. 普通的程序员和大神级的程序员有什么区别
你好,普通程序员只能做一些重复简单的事情,大神级程序员可以解决普通程序员解决不了的难题,还可以给普通程序员建框架。
5. HR怎么通过简历来判断程序员是否优秀
01.简历中项目的参与度、贡献度
简历本身的效用信息往往非常局限,看了简历之后,也难以形成对候选人的初步判断。但我们其实可以通过项目经历上的信息,来评估候选是否完整、深入参与其中。
在候选人简历的项目板块,我们可以查找是否有以下关键信息:本人在项目中的角色?比如后台系统开发,主导搭建了页面框架,提高代码质量;公共组建的提取、编写。解决了什么样的问题?比如通过自动化,让代码易于管理;统一的编码规范,更有利于多人合作,降低了代码出错率;性能上带来多少提升?比如单页应用让请求次数变少、页面呈现更快,用户体验更好了。通过以上信息,我们基本上可以判断候选人在项目中的角色,或者从解决的结果来看能基本评估出候选人在整个项目中的贡献度。
另外一种是简历上的项目阐述,可以通过以下两个例子对比:例子一:A:应用 xx 技术,解决了XXXB:应用 xx 技术,解决了XXX,出错率降低了 0.1% 等。例子二:A:结合使用 xx,实现了 app 登录和个人资料的自动填充B:结合使用 xx,实现了 app 登录和个人资料的自动填充,提高了多少的转化率我们可以直观看出,有量化的结果的项目履历更有说服力,也可以侧面证明候选人是有深度参与到项目中,才能对数据结果有一定的了解。
02.候选人在技术社区的使用情况
很多优秀的技术人才都有分享的习惯,比如在GitHub、知乎等社区都会分享一些自己的技术经验贴。通常来讲,如果候选人有在社区发帖的习惯,确实会增色不少。比如全球最大的开源社区GitHub,大多数程序员都会有账号,但这个只能算是真正的“圈内人”,如果是GitHub的重度用户,其实非常亮眼的:如候选人在GitHub发布的项目经常能收获很多follower和star,那正是其能力的体现,可以通过其贡献的项目来评估;如果能长期坚持使用GitHub,也能说明的是这个人心态比较开放,对业界比较关注、律己、有耐心;GitHub上大多数代码是经过长时间构思和反复修改重构,代码质量可以很好反映其当前的Code水平,其中也可以窥见解决问题的能力。
经常在技术社区发帖互动,可以说是判断是否为优秀技术程序员的加分项,但也只能是敲门砖,不能过份强调它的重要性。
03.通过代码笔试,直击简历
要看能力最终还是应该考查编码能力。面试官或HR其实可以通过一场在线笔试,在简历初筛阶段来进一步判断是否为大牛。
面试官可以设置一些耗时较短,考察具体硬技能的题目,来考察候选人的基本功,将简历造假的同学筛掉,在ShowMeBug笔试平台,支持不同职级、不同语言、不同维度等题目,面试官可以快速发一起一场笔试,可以节省面试官大量的时间;
对于简历中的项目,其实可以设计一个非常真实的问题,比如你目前有独立设计实现过一个完整的功能吗?你研发的这个功能产生了什么作用,你在项目中扮演一个什么角色?ShowMeBug笔试支持音视频题型,面试官可以量身设计,让候选人更加真实的回答。
6. 如何判断自己是否具有成为一名优秀程序员的潜质
1) 注意细节,尤其是最小的细节。
“差不多”、“很接近”是只能在做马蹄铁时用的词,在软件开发中,95%的正确仍然是不能用,一个“差不多”能用方法或一个使图片很“接近”居中的CSS样式都是不合格、不能用的。这剩下的5%对于整个软件的有效性十分重要,能造成完全相反的结果。
««« 如果你讨厌细节,你就别去做程序员。
2) 学无止境
起初这句话听起来会很迷人,你会很喜欢!我喜欢学习新事物!尤其是当你来自于一个无聊的工作或像钉马掌这样永远不变的事情时 =-)。然而,经过了一段时间后,你会发现,这变成了一条永不停息的知识河流,如果你不喜欢水,你会感觉困在了无尽无边的知识瀑布前,无法停止,也无法穷尽。我每天大概有学到10-20种新的东西,我喜欢这些!我的弟弟却希望事情永远不会变化,始终如一,他对我说他永远都不愿意去学编程。
««« 如果你不喜欢坚持不懈的去学习新事物,而喜欢待在一个永不变化的环境中,那你很可能成为不了一名程序员。
3) 面对压力、紧张和限定期限
没错,每个人都喜欢使用软件,但你喜欢面对任务的最后期限和最终目标吗?需要什么时候完成?做完这些要花多少时间?我们能在这段时间里完成更多的任务吗?是否还记得要注意细节?你怎么办?急匆匆的完成?加班加点希望能多完成一些?在理想世界里,编程是一个很有趣的活动,我们写出代码,让它们完成很酷的事情,吃着批萨,喝着可乐。而在现实生活中,有的是压力,虽然不是时刻都这样,但事情会比那种做一个30分钟的简单在线辅导要不同的多。我喜欢挑战我的极限,我渴望成长,变成一个更棒的程序员,所以我不介意。
««« 你面对时间限制和工作压力会怎样?如果你想回避这些压力,那你将无法成为一名程序员。
4) 有组织能力
我知道有些程序员的生活一塌糊涂,看起来他们似乎没自我组织能力,但我说的不是这些,我是说管理好工作流程的能力。比如,能否迅速容易的在你的计算机里找到一个东西?我认识的优秀的程序员通常能迅速的定位一个需要的文件,能够用工具或脚本帮他们处理繁杂的事物,这些都是高效的工作。
««« 当你学到了一个新东西时,你是否把它写下来?你是否喜欢想出办法来替你完成那些重复的工作?你能很好的安排各种不同的任务吗?如果不能,那你就不适合去当一名程序员。
5) 好奇心
当我还是十几岁时,教堂里的一位夫人几乎每月都会对我说一次,她说我应该停止问那么多为什么,她说这让人讨厌。虽然受了批评,最终我还是清楚的认识到,优秀的程序员总是在问“为什么?”这个应用的工作原理是什么?那个横跨街道的建筑是怎么建起来的?程序员之间的对话听起来总是像这样开始的:“很奇怪他们为什么要这样做…?”以前我以为问这么多为什么是很奇怪的表现,但现在我明白,至少是在软件开发中,这是一个好的品质。
««« 不明白的事情会引起你的好奇心吗?新事物会让你兴奋的想搞清楚它的原理吗?如果你不具有某种程度天生的好奇心,那么你就很可能不喜欢做一名程序员。
6) 自学
我知道,很多的程序员都上过大学,出自高校的,但这不是我要说的。优秀的程序员总是在钻研程序代码和文档,来弄清楚东西的工作原理,他们不会敲开老板办公室的们说:“我需要上培训课,学习这款新软件”。优秀的程序员在不断的学习,不断的靠自己研究出事情的原委——不论是有高学历还是没有学历。
««« 如果你需要有人教你,或者等着参加热门的课程去学知识,那你很可能不会成为一名程序员。
7) 人际交往能力
这在程序员中不是一个普遍的特征。真正优秀的程序员善于与人交往,但大多数程序员缺乏这些能力。如果你善于沟通,你的老板、你的公司会非常喜欢你。而且,不要因为他们不会编码就瞧不起他们。
««« 如果你不喜欢与人接触,跟别人在一起时觉得很难受,那你也许就不应该成为一名程序员。
7. 如何判断程序员在做什么
1.打字快且停顿:正编码;
2.键盘鼠标并用且不停点击,在debug;
3.不停滚轮或pagedown:在查错;
4.不停按刷新/f5:脚本卡住了;
5. 一动不动紧盯屏幕:程序抛出异常;
6.表情时而严肃时而轻松:产品上线测试中;
7.手放键盘上长时间未动:加班太多猝死了。
8. 如何辨别一个程序员水平的高低呢
有的时候单纯靠一个面试很难辨别一个程序员的水平是什么样的。原因很简单,因为很多面试题在网上都有,如果刻意准备那么一般都能回答的不错。所以想辨别一个程序员的水平需要一定的方法。
上述几方面我们称为应能力,还有一些软能力也是非常重要的,比如责任心,对技术的态度,学习能力等等。当然,这些就更难考量了,本文暂不介绍。
如果上述几方面都比较不错,那么这个程序员的水平应该是不错的。即使对目前的工作的知识储备可能还有欠缺,但经过一段时间后必然可以
9. 如何确定自己是否适合做程序员
你老婆对你说:“老公,晚上回来买一个西瓜,如果看到西红柿,就买两个。”
如果你晚上买了一个西瓜和两个西红柿回来的话,说明你不适合当程序员。
如果你晚上只买了两个西瓜回来的话,说明你适合当程序员,但是
。。。
。。。
。。。
。。。
。。。
。。。
。。。
你应该不会有老婆。
=========华丽丽的分割线===========
你们这群程序员也是够了,一直在吵应该买几个西瓜,你们这么吊你们老婆知道吗?还有很多有经验的程序猿说应该反复确认用户需求的,你们确定你们都能找的到老婆?
我听到需求时心里运行的代码如下:
int 到底买点啥 ( ) {
// 所有把大括号放到这一行的人都去屎!
int 西瓜的数量 = 1;
if (看到了西红柿) {
// 注意大括号的位置
西瓜的数量 = 2;
}
return 西瓜的数量;
}
// 尼玛,为什么没有缩进!!!!
那么什么时候该买三个西瓜呢?我们重现一下场景:
你老婆对你说:“傻X,晚上回来买一个西瓜,如果看到西红柿,就再买两个。这次你要是还买两个西瓜回来,我就一辈子都不理你了!”
你仔细揣测了一下她的需求,发现了这个关键的“再”字!哈哈哈,这种战斗力只有5的渣题怎能难倒我这种top coder!你晚上开开心心地买了三个西瓜回来,跪碎了新买的HHKB pro,老婆还是摔门而去,拦都拦不住!
这次你运行的代码如下:
int 到底买点啥 ( ) {
// 所有把大括号放到这一行的人都去屎!
int 西瓜的数量 = 1;
if (看到了西红柿) {
// 注意大括号的位置
西瓜的数量 += 2;
}
return 西瓜的数量;
}
就让这三个西瓜陪你过下半辈子吧!!!!