技术能力-模型精华总结
更新时间 2021-10-21 15:25:16    浏览 0   

TIP

本文主要是介绍 技术能力-模型精华总结 。

# 如何辨别一个程序员水平的高低?

程序员水平的高低,感觉有时候真不能看写过多少代码。太多的程序员日常的工作就是调调现有接口,复制黏贴。代码是写了不少,但做的东西并没有多少不同。

拉开程序员差距的主要在架构能力方面。这个需要很多的大项目的搭建经验,一点点成长起来。一个好的架构,可以让整个项目的耗时,人力成本减少很多。需要很多的实践经验以及源码的解读,来避免掉很多不必要的坑。

这样的程序员市场很稀缺,价值也不菲。

不请自来,一介码农路过,留下些看法。

# 程序员主要是有四种综合能力

也就是debug 能力、 performance分析、 保护性编程和 投入产出比。

debug 能力。这是我们生活中常用的一种能力,也就是调试问题的问题。 performance分析。能够对业务和代码进行精准的分析。 保护性编程。对代码的侵入性尽量的低,也就是解耦。 投入产出比。效率的问题。

# 仅仅独立完成日后必然成高手

在这里不能说一棒子打死,至少对于很多人来说,能独立完成是没什么问题的,有的是因为对业务熟悉,有的是真的基础扎实。但怎么说呢,程序员和浏览器打交道是最多的,现在这个互联网时代,遇到的大部分问题百度都是可以解决的,也就是普通程序员 + 百度 = 超级程序员。 但很多人也没明白具体的原理,甚至都是这个项目抄抄那个项目抄抄的,久而久之虽然解决了平时的业务,但进步的空间却很少,甚至止步不前,写出来的代码也可能存在很多坑,所以,仅仅能独立完成任务的话,离高手还有比较远的一段距离。

# 如何辨别高手程序员

也就是结合我们一开始列举的那四个能力进行判断。不同级别的程序员,在那综合能力面前,强弱也是不同的。例如在奔溃的或者其他性能调优问题上,即使是面对大量复杂的代码,在信息不全的时候也会一步步的分析,抽丝剥茧缩小范围,最终定位根本原因,并且最终给出一个好的方案。

# 如何成为高手程序员

# 学习设计模式

设计模式对程序员来说是一门重要的课程,设计模式是前辈程序员们总结下来的宝贵的解决问题的问题,能让我们写出更好的代码。写代码其实也可以看成是一门艺术,代码写得优雅就会让人看着舒服。

# 动手前养成先思考规划的习惯

很多时候,我们临急临忙的动手,反而留的坑会越来越多。就比如我最近项目上遇到的一个问题,一开始做得复杂了,越写下去就发现越多坑,而且代码也比较凌乱。后来冷静的思考了一下,发现只有设计库的设计稍微修改修改,问题就能变得简单起来,代码也写得比之前的优雅了许多。

# 有条件的话学习下算法和数据结构

在这里,也还是推荐适当的学习算法和数据结构的,虽然很枯燥,但这也是让我们变强大的内功。虽然可能很多时候用不到,但其实算法是在潜移默化的改变了我们思考的能力,让我们脑子变得更加的灵活,甚至会慢慢的一点点渗入我们的生活中。

# 这就是程序员的面试内容

  • (1)是否能熟练使用所用编程语言的主要功能;
  • (2)是否知道用合适的数据结构解决问题;
  • (3)是否知道基本的算法,并且用这些算法解决问题;
  • (4)只看少量代码的话,从变量命名和程序结构一般能够判断是否是新手;
  • (5)给出具体问题,能够用程序解决,能考虑到所有的边界条件;
  • (6)考虑程序的可扩展性,可维护性;再往高一点走,就需要
  • (7)面对模糊的问题能够分析并且找到细节和具体的需求;
  • (8)知道利用已有的库,架构和工具等来解决新的问题,而不是什么都自己实现;
  • (9)能发现并改进已有程序中的瓶颈;
  • (10)对整个大项目的程序架构有很清晰的了解,知道相互之间的依赖,以及知道为什么采用这样就架构;
  • (11)给一个大的项目,能够对整个项目的程序架构和组件进行合理的设计,考虑并行性,低延迟,大数据量等各种需求和应对方式。

# 程序员能力阶段分类

第一阶段(黄金):会用编程语言实现需求,比如现在的业务系统,都会找一些会搬代码的人来拼工作量,也就是能自己独立基于搭好的框架实现crud常规操作。

第二阶段(铂金):除了crud,还会有一些自己踩过坑的经验,知道如何处理一些常见问题,或者可以基于搜索引擎快速解决一些异常情况。

第三阶段(钻石):能解决一些疑难杂症和会通过debug部分源码类库查看到这些疑难杂症是如何引发的,并通过编码解决这些问题,还能进行一些局部的性能优化,类似某个系统接口缓慢可以单独去优化。

第四阶段(星耀):会基于整个系统进行设计和规划,根据业务特性选择合适的框架,从源头控制开发遇到问题的频率,可以自主的搭建框架并完善机制,了解各个组件工作原理。

第五阶段(王者):小说里面总是说练武功的永远比不过创造武功的,同样的道理,用框架的也往往不如写框架的,所以写框架的这类人单独分层。

第六阶段(荣耀):其实这个阶段不应该列入进来,因为这类人往往不编码的,只是给出思想;像Hadoop这种框架就是基于人家发表的一些论文(bigdata)进行编码实现的,这类人注重的是思想和算法,区块链,大数据,云计算等等概念的创造和理论的支撑是这类人提出来的,这些人才是真正影响行业走向的人。

# 程序员有三层境界

也可以体现程序员的能力。

# 1、编写代码的能力。

编码是程序员的基本能力,仅就码代码来说,也有两个层次,低层次是“抄代码”,即参考别人的代码去编写,也可说是改代码;高层次是基本功深厚,自己编写代码。当然,不能说哪种效果更好,因情况而言。

# 2、代码分析和优化的能力。

一般程序员虽然能编写代码,也就相当于三流作家写篇文章,写景状物而已,没有情感。牛X的程序员能彻底分析和优化代码结构、流程和性能,这种人只占到30%。

# 3、业务的分析能力。

很多程序员代码基础不错,但总是写不出质量高的代码,原因之一就是不理解业务,精于业务是中级程序员和高级程序员的分水岭,也是项目经理或项目组长的必备能力。这类人群在程序员中只占到10%。

当然,有人会说问题解决能力也算一个,个人认为没有必要,因为以上三项具备,就已经涵盖解决问题的能力了。

# 程序员能力的其他衡量标准:

测试一个程序员水平的高低,我认为有以下几点:

第一:看看他在面对大量的、复杂的代码,能不能应付自如,只会一点或者懂点皮毛是绝对不能胜任程序员这项工作的。程序员会面对各种各样的情况,只会这个不会那个的是不会顺利完成任务的。

第二:看看能不能出活,公司是讲究效益的,一个程序员一天或者几天出不了活,速度太慢,这样,公司是挣不了钱的,再说,现在,各个公司之间竞争又激烈,高效益对公司来说非常重要的,所以,公司喜欢速度快、做的又好的程序员。

第三:能不能长久稳定。公司派给你任务,有的很快能做出来,有的做不出来,或者做的很慢,一点都不稳定,这对公司来说,很难预测这活大约什么时候能完成,能不能接,很难做计划。

第四:是否能熟练使用各种编程语言的主要功能,这一点很重要,公司接的活有各种各样的,需要的编程语言也不一样,优秀的程序员对各种编程语言比较熟悉,不管接到什么样的活,都难不住他,解决问题的能力相当的厉害,公司老板是最喜欢这种程序员的,给公司带来的价值也大。

你问他一个简单问题如何通过程序上实现,他如果回答的很快的话,可能忽略了很多细节。做企业软件,我们往往只是关注最重要的那个部分,其实会忽略很多其它的比如:输入错误校验,性能考量,你是维护成本等等。一个合格的程序会考虑的更全面一些。

# 优秀的程序员综合能力

一个优秀的程序员需要具备以下能力:

  • 1、准确理解需求
  • 2、良好的程序设计
  • 3、优雅地实现编程
  • 4、清晰地向他人阐述自己的设计和实现
  • 5、Bug少,易于维护
  • 6、架构设计能力(特别是从0-1的项目)

# 参考文章

  • https://zhuanlan.zhihu.com/p/343792651
更新时间: 2021-10-21 15:25:16
  0
手机看
公众号
讨论
左栏
全屏
上一篇
下一篇
扫一扫 手机阅读
可分享给好友和朋友圈