在“程序员能力矩阵”上诚实地评价自己

我当前技能的现实

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

我正在组成一个新团队,现在正在进行大量的Python和C ++开发。 此外,我正在学习KDB等新技术。 我认为这是一支很棒的团队,可以加快我的重新学习速度。

我将在2018年初回到这篇文章再次给自己打分。

介绍

因此,为了开辟技术和编程博客,我认为我会根据“ 程序员能力矩阵 ”来给自己打分

为了给我一些技能背景知识,我毕业于宾汉姆顿大学,并获得了计算机科学(BS)和数学(BA)的双学位。 我一直说,我在学校学到的基础很不稳定,因为我急于完成了第一次在化学专业学习三年的学位。

我目前在一家银行担任软件工程师的全职工作,已经在那里工作了一年半。 我的日常工作包括很多数据库开发(我在学校从未接触过的东西,所以我的经验都是来自行业),一些Python脚本,一点点(也就是一点点)的Java(春季)编程,我的大部分编程工作都是使用内部语言进行的。 我工作的另一半(可能更多)是支持我们的内部应用程序,以监视生产故障并直接为客户(我们的贸易商)提供支持。

撰写此帖子的原因是,在我练习并继续从事这个行业时,尝试积极地跟踪自己。 这也适用于任何想要切实跟踪自己的进度的人。 把一切都排除在外,每个月,六个月,两年后重新审视自己,这是一个很好的方式向自己展示自己已经走了多远。

因此,让我们继续进行排名。

计算机科学

数据结构

级别3:“了解高级数据结构,例如B树,二项式和斐波那契堆,AVL /红黑树,展开树,跳过列表,尝试等。”

我真的很喜欢研究和阅读的一件事是数据结构。 数据结构是我在学校最喜欢的课程之一,因此,我将学到很多关于典型数组,链接列表和字典之外的高级数据结构的知识。

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

演算法

级别1:“基本排序,搜索和数据结构检索算法。”

自从我一年半毕业以来,这就是我一直没有跟上的一件事。 因此,我将把它提高到1级,也许我会惊喜地发现自己在接下来的几周和几个月内会做更多的练习。

系统程式设计

我最初对此的评价为2,但是由于生锈,我将其降至1。 但是,我确实知道2级的部分内容,因此我可以索取1.5

第1级:“ 对编译器,链接器和解释器有基本了解。 了解什么是汇编代码以及它们在硬件级别如何工作。 关于虚拟内存和分页的一些知识。

级别2: 了解内核模式与用户模式,多线程,同步原语及其实现方式,能够读取汇编代码。 了解网络的工作原理,了解网络协议和套接字级别的编程。

1.5级 :1级加能力的所有阅读汇编代码,并了解内核模式与用户模式。

当您不积极地练习许多这些概念时,这很困难,这就是为什么我开始写博客的原因。 我希望能够使自己重新起步,巩固自己的基础,并不断完善自己。

软件工程

源代码版本控制

第3级:“ 分布式VCS系统知识。 已经尝试过Bzr / Mercurial / Darcs / Git。

可以肯定的是,即使您刚从昨天开始学习,我们大多数人目前都处于3级水平,因为它实际上是源代码控制系统。

构建自动化

级别2:“可以设置脚本来构建基本系统。”

自动化测试

我在0和1级之间。

我在学校进行了基础测试,并在培训期间以TDD方式(第2级)编写了代码,但实际上我已经有一段时间没有做太多事情了。

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

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

我实际上并不这么认为,但是根据我目前的技能水平,我大概和这个人一样多的知识。

第1级:“ 编写了自动化的单元测试,并针对要编写的代码提出了良好的单元测试用例。

是的,我以前(甚至最近)使用内部语言都这样做过。 但是我对此并不“好”。

级别2: 以TDD方式编写代码。

在工作中,我们接受了培训,并且确实学习了如何在TDD中进行测试,但此后我忘记了所有知识。

1.5级:我可以测试,知道什么是TDD。 我只是对此并不“擅长”并且没有足够的实践。

程式设计

问题分解

级别2:“能够提出可重用的功能/对象来解决整个问题。”

系统分解

级别1:“只要位于同一平台/技术内,就可以打破问题空间和设计解决方案。”

通讯

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

许多人认为我非常擅长交流,因此,我将其置于第3级。尽管我承认,但这确实取决于上下文和我的知识。 实际上,我应该转向第2级,因为我能够在许多不同的事物上进行对话,但是在我不知道的环境中交流解决方案会阻碍我交流的效率。

我想大多数人就是这种情况,但是有些人实际上在不熟悉的环境中比其他人健壮,并且能够很快地捡起东西。

文件中的代码组织

级别2:“代码分为不同的区域,并通过引用其他源文件得到了很好的注释。”

有时候,在快速开发团队中,我感觉很难继承一些项目,因为很多东西没有被评论。

我尽力为我的代码做到这一点。

跨文件的代码组织

级别1:“相关文件被分组到一个文件夹中。”

我可能将自己视为2级,因为我确实尝试根据工作中的独特目的分离文件,但现在,我会将其保持在1级。

源树组织

级别1:“将代码基本分离到逻辑文件夹中。”

代码可读性

级别2:“不再使用函数,注释不寻常的代码,错误修复,代码假设。”

防御性编码

级别1:“检查所有参数并在代码中声明关键假设。”

错误处理

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

由于某些原因,我总是忘记编程中的错误处理。 我会尽力使它成为我思考过程的积极组成部分。

更新 :在新团队中,我的经理总是提醒我这件事,因此它已经深深烙印在我的脑海中。

集成开发环境

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

我可以看到自己又回到了第二级,因为我已经有一段时间没有编写自定义宏了,但是我在学校确实做了很多。

API

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

我对此并不感到羞耻。 我经常必须这样做,特别是因为在冲刺周期中我需要做的工作方面,上下文切换很多。

构架

级别1:“听说过但未使用该平台的流行框架。”

我使用了一些框架,但没有广泛使用,因此将其保留在第1级。

要求

级别1:“提出有关规范中遗漏案件的问题。”

绝对是一项正在进行的工作,但是我在发现缺失点方面要好得多。

脚本编写

级别2:“ Perl / Python / Ruby / VBScript / Powershell”。

我很难相信我已经做了所有这些事情。

数据库

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

除了关于数据库镜像和复制的最后几点以及两阶段提交的工作方式之外,我对第3级的很多知识都很了解。 因此,我可能应该给自己打2.5分,而不是3分。

经验

具有专业经验的语言

级别2:“功能,如果他们了解懒惰的评估,计算,连续性,则可以得到额外的奖励。”

我对这里的1级(命令式,OOP,SQL)比较满意,但是我使用内部语言进行的许多内部工作都与功能范例有关。

具有专业经验的平台

级别1:2-3

多年的专业经验

我自己在1.5年的专业经验中达到1.5级的水平。

领域知识

级别0:“不了解域。”

是的,什么都没有,尤其是因为我真的不知道人们所说的“域”。 一旦研究了这一点,我将回到该评级,因为其他级别的想法让我知道了域名是什么,但我不确定。

更新 :此后已更改为级别1:已经在域中开发了至少一种产品。

经过研究,结果发现我使用的内部语言被归类为特定领域的语言 ,由于这是我在上一个团队中使用最多的语言,因此我在该领域中从事产品开发。

知识

工具知识

级别2:“对编辑器,调试器,IDE,开放源代码替代品等都有很好的了解。例如,某人知道Scott Hanselman的强大工具列表中的大多数工具。 使用过ORM工具。”

暴露于的语言

级别3:“并发(Erlang,Oz)和逻辑(Prolog)”

Prolog在学校做过,发现它很有趣。 我目前正在学习在Erlang VM上运行的Elixir。

代码库知识

级别2:“具有良好的代码库工作知识,已实现了多个错误修复,并且可能有一些小的功能。”

更新 :从那时起,这已降至第1级:代码布局以及如何构建系统的基本知识

我仅在2个月前才切换到新团队,所以我仍在研究新代码库的缺陷。 但是,我已经实现了一些错误修复以及一些小功能,因此我可能可以在此处获得1.5,但我们将其保留为1。

即将到来的技术知识

级别2:“已经下载了alpha预览/ CTP / beta并阅读了一些文章/手册。”

我绝对会感到技术快乐,并喜欢阅读新事物。 但是,我很少遵循这些新技术中的要求。 但这就是博客的目的-让我对尝试新事物并向世界展示它们负责。

平台内部

级别1:“具有平台内部工作原理的基本知识。”

图书

这是矩阵中一个有趣的部分,因为第3级指出: “计算机程序的结构和解释,概念技术,计算机编程模型,计算编程艺术,CJ Date的数据库系统,Forthing Thought,Little Schemer。”

我拥有很多这些书,因为我大学毕业后就买了这些书,但实际上我没有读太多,因为这些书确实很密集。 我也拥有2级和1级的书籍。 我愿意通读它们,但是它们将花费我相当长的时间来通读。

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

网志

级别2:“维护一个链接博客,其中包含他/她收集的一些有用的文章和工具。”

我的实际水平-1.8级:我现在正在维护一个博客,并且我将开始在矩阵上写大量有关编程(第3级)的见解和想法。

结论

好吧,那里有它。 在每个矩阵点上尽可能诚实地评价自己。 我很高兴能开始撰写有关技术的博客。 老实说,这是我最喜欢阅读的东西之一,我想与世界分享。 此外,我希望自己做的事情越来越好,并从头到尾与所有的不良见解和编程实践分享给我的项目。

如果您阅读此书,我希望与我分享您的排名。 您可以简单地将5个部分中的每个部分相加并共享结果。 您不必特别说明,但可以的话可以!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值