在 程序员能力矩阵”上诚实地给自己打分

在“程序员能力矩阵”上诚实地给自己打分

原文:https://medium.com/hackernoon/grading-myself-honestly-on-the-programmer-competency-matrix-2725c3129cbb

我当前技能的现实

更新(2017 年 11 月 6 日,星期一)

我现在在一个新团队中做大量的 Python 和 C++开发。此外,我正在学习 KDB 等新技术。我认为这是一个伟大的团队,可以加速我的重新学习。

我将在 2018 年初回到这个岗位,再次给自己打分。

介绍

因此,作为技术和编程博客的开始,我想我应该根据“程序员能力矩阵”给自己打分

给大家介绍一下我的技能背景,我毕业于宾厄姆顿大学,获得了计算机科学(BS)和数学(BA)双学位。我一直说我在学校学到的基础是不牢固的,因为我在学校学了三年化学就匆忙拿到了学位。

我目前在一家银行做全职软件工程师,已经在那里工作了一年半。我的日常工作包括大量的数据库开发(我在学校从未接触过的东西,所以我所有的经验都来自行业),一些 Python 脚本,一点点(我是说一点点)Java (Spring)编程,我的大部分编程是用内部语言进行的。我工作的另一半(可能更多)是支持我们的内部应用程序,以监控生产故障和指导客户支持(我们的交易员)。

写这篇文章的原因是,当我在这个行业中实践和继续的时候,尝试积极地跟踪我自己。这也适用于任何想要真实地跟踪自己进展的人。把一切都展现出来,一个月、六个月、两年后重新审视自己,这是一个很好的方式来展示你已经走了多远。

所以,让我们继续排名。

计算机科学

数据结构

第三级:“了解高级数据结构,如 B 树、二项式和斐波那契堆、AVL/红黑树、八字树、跳转列表、尝试等。”

我非常喜欢研究和阅读的一件事是数据结构。数据结构是我在学校最喜欢的课程之一,正因为如此,我会学到很多典型数组、链表和字典之外的高级数据结构。

即使这些不是我日常工作的主要部分,我仍然努力保持对这些事情的了解。

算法

一级:“基本的排序、搜索、数据结构检索算法。”

这是我毕业一年半以来没有跟上的一件事。所以,我会把它记到第一级,也许在接下来的几周和几个月里,当我练习得更多的时候,我会给自己惊喜。

系统编程

在这一点上,我最初给自己打了 2 分,但由于生锈的能力,我会把它降到 1 分。然而,我确实知道第二级的部分内容,所以我也许可以称之为 1.5 级

第一级:"对编译器、链接器和解释器有基本的了解。了解什么是汇编代码,以及硬件级的工作原理。虚拟内存和分页的一些知识。

第二级:“了解内核模式与用户模式、多线程、同步原语以及它们是如何实现的,能够阅读汇编代码。了解网络如何工作,了解网络协议和套接字编程。

1.5 级 : 所有 1 级加能够读取汇编代码并理解内核模式与用户模式。

当你没有积极实践这些概念时,这是很困难的,这也是我开始写博客的原因;我希望能够让自己恢复速度,巩固我的基础,并在此基础上有所提高。

软件工程

源代码版本控制

第三级:“分布式 VCS 系统的知识。已经试用了 Bzr/Mercurial/Darcs/Git。

非常确定我们大多数人在这一点上是第三级,即使你昨天才开始,因为它是事实上的源代码控制系统。

构建自动化

二级:“可以设置一个脚本来构建基本系统。”

自动化测试

我在这里介于 0 和 1 之间。

我在学校做过基本的测试,在培训期间也以 TDD 的方式(2 级)写过代码,但是我真的很久没有在这里做过什么了。

因此,我将在这里再次创建我自己的级别。

0 级:“认为所有的测试都是测试人员的工作。

我实际上并不这么认为,但以我目前的技能水平,我可能和这个人拥有一样多的知识。

级别 1:“已经编写了自动化单元测试,并且为正在编写的代码提出了良好的单元测试用例。

是的,我以前也这样做过,甚至最近还用内部语言做过。但是我仍然不“擅长”这个。

第二级:“已经用 TDD 的方式写了代码。

在工作中,我们有培训,我们确实学习了如何在 TDD 中测试,但我已经忘记了我在这里的所有知识。

1.5 级:我会测试,我知道 TDD 是什么。我只是不“擅长”它,而且练习得不够。

编程;编排

问题分解

第二级:“能够提出解决整体问题的可重用功能/对象。”

系统分解

第一级:“能够打破问题空间,设计解决方案,只要是在同一个平台/技术之内。”

沟通

第三级:“能够以明确的方式理解和交流想法/设计/想法/规格,并根据上下文调整沟通。”

许多人认为我非常擅长沟通,所以我会把这个放在第三级。不过,我承认,这真的取决于背景和我的知识。实际上,我应该转向第 2 级,因为我能够就许多不同的事情进行对话,但在我不了解的环境中交流解决方案会妨碍我有效地交流。

我想这是大多数人的情况,但有些人在陌生的环境中比其他人发展得更好,能够很快学会东西。

文件中的代码组织

第二级:“代码被分组到区域中,并参考其他源文件进行很好的注释。”

有时候我觉得,在一个快速开发团队中,当你第一次进来时,很难继承一些项目,因为事实上很多东西没有被注释。

我确实尽了最大努力来为我的代码做到这一点。

跨文件的代码组织

一级:“相关文件归入一个文件夹。”

我大概可以把自己看做第二级,因为我确实试图根据工作中的独特目的来分离文件,但是现在,我将把它保持在第一级。

源树组织

第一级:“代码到逻辑文件夹的基本分离。”

代码可读性

第二级:“没有长函数,解释异常代码的注释,错误修复,代码假设。”

防御性编码

第一级:“检查代码中的所有参数并断言关键假设。”

错误处理

级别 1:“围绕可能抛出异常/生成错误的代码的基本错误处理。”

出于某种原因,我总是忘记编程中的错误处理。我会尽我所能让它成为我思考过程中积极的一部分。

在新的团队中,我的经理总是提醒我这一点,所以它已经深深印在我的脑海里。

集成驱动电子设备

第三级:“已编写自定义宏。”

我可以看到自己在这一点上回到第 2 级,因为我已经有一段时间没有编写自定义宏了,但我在学校时确实经常这样做。

API

0 级:“需要经常查文档。”

我毫不羞愧地承认这一点。我经常不得不这样做,特别是因为我在工作中经常切换环境,在 sprint 周期中我必须做什么。

结构

第一级:“听说过但没有使用过该平台可用的流行框架。”

我使用过一些框架,但并不广泛,所以我将把它留在第 1 级。

要求

第 1 级:“提出关于规格中遗漏案例的问题。”

肯定是一项正在进行的工作,但我更善于识别遗漏点。

脚本

二级:“Perl/Python/Ruby/VBScript/Powershell。”

很难相信我做到了所有这些。

数据库ˌ资料库

第 3 级:“可以进行基本的数据库管理、性能优化、索引优化,编写高级选择查询,能够用关系 SQL 替换游标使用,了解数据如何在内部存储,了解索引如何在内部存储,了解数据库如何镜像、复制等。了解两阶段提交的工作原理。”

除了关于数据库镜像和复制以及两阶段提交如何工作的最后几点,我对第 3 级的大部分内容都有所了解。所以,我可能应该给自己打个 2.5 分,而不是 3 分。

经验

具有专业经验的语言

第二级:“功能性的,如果他们理解懒惰的评估、奉承、延续,会有额外的奖励。”

我更喜欢第 1 级(命令式、OOP、SQL),但是我用内部语言做的很多内部工作都与函数式范例有关。

具有专业经验的平台

一级:2–3

多年的专业经验

我自己编的水平是 1.5 级,有 1.5 年的专业经验。

领域知识

0 级:“无知者域。”

是的,完全没有,尤其是我真的不知道人们所说的“领域”是什么意思一旦我研究了这个,我会回到这个评级,因为其他级别给了我一个概念是什么领域,但我不确定。

更新:这已经变成了 第 1 级:至少在该领域的一个产品上工作过。

经过研究,我发现我使用的内部语言被归类为领域特定语言,因为这是我在前一个团队中使用最多的语言,所以我在该领域的一个产品上工作过。

知识

工具知识

第二级:“良好的编辑器、调试器、ide、开源替代方案等知识。例如,某人知道 Scott Hanselman 的电动工具列表中的大多数工具。使用过 ORM 工具。”

接触的语言

三级:“并发(Erlang,Oz)与逻辑(Prolog)”

在学校学过 Prolog,觉得很有趣。我目前正在学习运行在 Erlang VM 上的 Elixir。

代码库知识

第二级:“良好的代码库工作知识,已经实现了几个错误修复和一些小功能。”

更新:这个已经降到了 第一级:代码布局和如何构建系统的基本知识

我仅仅在 2 个月前转到新团队,所以我仍然在解决新代码库的问题。然而,我已经实现了一些错误修复和一些小功能,所以我可能会在这里得到 1.5,但我们将保持 1。

对未来技术的了解

二级:“已经下载了 alpha 预览版/CTP/beta,看了一些文章/手册。”

我非常喜欢科技,喜欢阅读新事物。不过,我很少坚持用这些新技术创造东西。但这就是写博客的目的——让我对尝试新事物并展示给世界负责。

平台内部

第 1 级:“具备平台内部工作方式的基本知识。”

这是矩阵的一个有趣的部分,因为第三级陈述: “计算机程序的结构和解释、概念技术、计算机编程的模型、计算编程的艺术、数据库系统”

我拥有很多这样的书,因为我是在大学毕业后买的,但实际上我并没有通读很多,因为这些书真的很难读。我也有 2 级和 1 级的书。我愿意通读它们,但通读它们会花费我相当长的时间。

所以,我不会在这个问题上给自己打分,因为这是一个有点奇怪的问题,至少对我来说是这样。

博客

第二级:“维护一个链接博客,里面有他/她收集的一些有用的文章和工具。”

我的实际水平——1.8 级:我现在正在维护一个博客,我将开始在矩阵上写一些关于编程的见解和想法(这是 3 级)。

结论

好了,你有它;在每个矩阵点上尽可能诚实地评价自己。我真的很兴奋能够开始写关于技术的博客。老实说,这是我最喜欢读的东西之一,我想与世界分享。此外,我希望在我所做的事情上逐渐变得更好,并将与世界分享我的项目,从开始到结束,以及途中所有糟糕的见解和编程实践。

如果你读了这篇文章,我很乐意与你分享你的排名。您可以简单地将 5 个部分中的每个部分相加,然后分享结果。你不必说得很具体,但是如果你想,你可以说!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除