高级程序员到底长什么样子?

基于人脸识别的课堂考勤系统 tkinter+openpyxl+face_recognition 基于face_recognition库实现人脸考勤系统功能。利用Python的tkinter模块来设计考勤系统的图形化界面,此外结合openpyxl模块,实现将学生的信息和考勤打卡数据保存到表格中,方便查看和调用。该系统具备“刷脸打卡”、“新学生注册”等功能。............ 阅读详情

我们的中国文化,对“面子”看得特别重,所以你会发现身边到处都是高级 XXX,听着倍儿有面子,程序员也不例外。

但是你真要问每个人,你认为的高级 XXX 是什么样子的,估计每个人都有不同的回答。

我还记得在我刚开始从事编程工作的时候,对坐在边上不远的那位我心目中的高级程序员的印象是:

工作至少有 6、7 年以上,能写一个用起来很方便、看起来很牛逼、但是不太容易让初级人员看懂的框架。

前两天,我把这个问题丢到群里,大家给出的答案中,占比最高的是以下几个。

  • 有 N 年以上编程经验(大部分都说 5 年以上)

  • 有出版过技术图书

  • 对某领域内对常用框架原理有了解,并且实际使用超过 2 年

  • 可以随时随地快速写出常见的一些算法

  • 至少封装过一个被全局使用的开发框架

  • 写出来的代码,阅读起来很好理解

  • 能带领其他人员成功完成项目

你看,这件事对大家来说就是常说的,“一千个人眼中有一千个哈姆雷特”。

不过这也正常,毕竟像初级、中级、高级这种高度抽象的词汇,想要得到一个可描述的定义与人交流,必然需要夹杂着个人的主观因素。

但是很多行业都在这么进行分类,自然有它的道理和好处。

我觉得其中最大的一个好处恰好是“主观”的附属品——弹性。

比如,我现在想招一位高级程序员,面试的时候不管是通过还是不通过,我都有理由来解释我对“高级”的定义。如此一来,我对陌生人的判断就有了更大的“弹性”。

这其实是面试官的一种权利,也是长期以来面试者总在面试中处于下峰的原因之一。

事物总是有两面性的,我们在对陌生人弹性的同时,间接地也对内部的人弹性了,会导致内部的一些人才培养出现问题。

比如,你觉得内部的高级程序员不够,希望能在外部招聘的同时,从内部也培养一些出来。但是此时,你又面临了需要定义什么是“高级”的问题。

如果没法定义一个能够达成共识的标准,又如何指导培养的方向呢?只能是一句空话。

长此以往会导致更严重的问题:真正的高级程序员不够,只能让中级程序员顶上。顶替的时间长了,会让一些中级程序员误以为自己已经达到了高级水平。

在我平时的面试中,这样的案例屡见不鲜,网上流传的工作 10 年 = 1 年重复 10 次的段子是真实存在的。

下面我来聊聊我对“什么是高级程序员”的个人看法,欢迎你和我一起探讨。

不管是什么行业,什么岗位,在这个高度分工协作的现代社会,所需的能力主要分为三个维度,我的理解大概是这样的:

  • 专业能力:好奇心、敢于挑战困难、刻意养成好习惯、要求严格

  • 连接能力:共同体意识、同理心、实事求是、接地气

  • 领导能力:主人翁意识、沟通/谈判技巧、目的导向

先卖个关子,文章的最后我会将这三个维度组合起来,你会发现一片新的天地。

根据这三个维度的水平差异,我们对初级程序员、中级程序员、高级程序员做一个简要的描述。

初级程序员 - 知道有事要做

处在初级阶段的时候,我们的精力大多只会专注在专业能力的提升上。这个时候“领导能力”和“连接能力”是很弱的。

所以,这个时候哪怕你有强烈的好奇心也无法很好地表达出来,大多只能被动的接受工作安排。

在这个时期做事情需要依赖一些教程、文档,只能“依样画葫芦”,几乎不能在不借助外部信息的情况下解决之前从未遇到过的新问题,所以百度、Google 就成了他们唯一的选择。

你可以在你的身边观察一下,如果经常有以下这些场景出现,大多是初级程序员的表现。

  • 很难提出正确的问题,大多会直接问别人这个功能应该怎么做。如果你清楚地向他解释,他就会完全按你说的去做,甚至你写的示例代码都会 copy 过去。因为在他们的世界里,只有编译成功和编译失败,任务完成和任务未完成。

  • 经常犯错误,所以会预留过多“弹性时间”,以便有时间在到期日之前重做。所以总会抱怨“没时间”。

  • 对与自己有工作交集的人员的职能没有认识。比如,对测试人员总是充满敌意的,因为他们发现了错误,“阻碍”了自己完成工作。

  • 还没注意养成一些好习惯,比如习惯性地提炼重复代码、编写风格一致的代码、自测等等。

很遗憾,看似很初级的阶段,并不只是刚踏入工作的程序员所属,在实际工作中,也有不少工作多年的人还处在这个阶段。

中级程序员 - 知道如何做某事

对人群按照单一维度进行划分,大多数时候都是符合正态分布的,这里也不例外。中级程序员是我们身边最多的,包括那些不得不穿上高级程序员马甲的中级程序员。

在这个阶段,有些中级程序员开始具备了一定的“连接能力”,但并不是所有人,主要看是不是拥有了“共同体意识”。

在专业能力上,中级程序员已经明白了一定的“整体与局部”的概念,但仍然看不到整个“森林”,大多局限在某个模块、流程上。比如,他们会想“这是做敏捷的正确方式吗?”,但不会考虑“这对整个团队、整个公司会产生什么实际的影响?”。

他们开始注重代码质量,因为担心低质量的代码会影响他们视野中的“整体”。

但是对于质量的理解还是比较单一。比如,这个时候你会经常听到他们把“性能”挂在嘴边,在他们心目中“性能”的地位是至高无上的,总是想着你这个方案和我的方案哪个性能更好。

同样可以观察一下周围,中级的开发大多数会这样做事:

  • 针对一个问题,可以提出多个方案,但是无法做出准确的决策。一旦更权威的人给出了他的选择,中级程序员就会不假思索地按照建议执行。

  • 可以看出代码中的一些设计模式,但是自己写代码的时候除了单例和工厂,其它的几乎想不到。

  • 在讨论一些时髦的框架和技术的时候总能聊上几句,但是追问这个框架或者技术有什么缺点,基本说不上来。甚至,草率地在项目中运用上这些时髦的框架和技术,最终导致线上问题频发,不得不让高级程序员来收拾残局。

  • 能够对自己完成任务所需的时间有准确的评估,但是评估他人的时间不会因人而异,也会以自己作为标准来评估。

  • 对与自己有工作交集的人员的职能有了一定的认识。比如,会主动寻求测试的配合,帮助自己交付更高质量的项目。

其实这个阶段是最危险的阶段,因为最可怕的不是无知,而是一知半解。心理学中的邓宁-克鲁格效应(The Dunning-Kruger Effect)讲述的就是这个问题。

两位社会心理学家在 1999 年做的 4 项研究,证实了下面的这个曲线的存在。

在这种状态下,人最容易高估自己,这也是很多导致产生很多“假高级程序员”的原因所在。

高级程序员 - 知道必须做些什么

高级程序员在“专业能力”、“连接能力”与“领导能力”这三个维度都有所建树。因为他们不但可以把从 1 到 100 的事情做得很好,也有能力带领其它人完成 0 到 1 的事情。

根据我身边所接触的程序员群体来看,我所认为的高级程序员,他们明白没有什么是完美的,相反,问题、缺点和风险总是存在的。

他们的决策总是站在为了整体的“平衡”角度去考虑,而不是技术的酷炫或者外界流传的所谓“正确的”技术。

他们会更多地关心那些不显而易见的东西,如可维护性、可扩展性、易阅读、易调试等等。

高级程序员就好比社会中的成年人,他们踩过足够多的坑,也填过足够多的坑,已经认清了现实的残酷,寻求适合而不是完美。周到、务实、简单,是他们做事的时候强烈散发出的“味道”。

可以根据下面的这些场景来看看你身边有多少“有味道”的高级程序员?

  • 与初级和中级程序员不同,他们抛出问题不是为了正确地做事,而是做正确的事。他们会询问为什么要这样做以及你想要实现什么。当你告诉他们目标是什么后,他们或许会通过暗示这种方式是错误的而另一种更好来做出一些修正;当然,更重要的是还会提供论据说服你。

  • 因为提前明确了做事的目标,所以在动手做一件事的过程中,他会在关键细节思考有没有更好的方法,甚至是那些不在之前的讨论范围的新尝试。

  • 他可以轻松地承认他不知道什么,并且向你请教。同时也可以轻松地向他人讲清楚他所知道的事情。

  • 他们理解合作的人员的职能的作用,不但知道什么时候向谁寻求帮助,还知道自己如何更好地帮助他们。

  • 困难的事交给他们很放心,因为他们擅长的不是某种技术,而是解决问题的能力。他们总能解决那些之前从未遇到过的新问题,哪怕它们很困难。

那么,怎么做有助于我们成为高级程序员呢?

1、关注技术之余还要关注业务

为什么把它放第一点,因为我觉得这点最重要,是其它项的基础,也最容易做到,但是很多程序员不愿意去做。

一定要搞清楚业务目标,不搞清楚不开工。相信我,只要是一位合格的 leader,一定会不厌其烦地和你说清楚的。

然后要习惯基于业务目标去分析可能会面临的技术挑战。比如,多少流量,涉及哪些用户角色和功能,复杂度有多大等等。

再带着下面的“不可能三角”去寻找合适的技术框架、解决方案。尽可能地寻求最优的平衡,而不是走极端。

如果拿捏不准,可以将多个方案各自的优缺点罗列出来,向 leader 寻求建议。

2、“设计”代码而不是“写”代码

一般人可能拿到需求,就开始写代码了,写着写着由于页面功能越来越多,感觉代码越来越复杂,自己都会觉得难以维护了。

虽说要做好设计离不开大量的实战经验的积累,但还是有些方法可以让塑造这个能力的过程更快一些。比如:

  1. 首先就是前面提到的第一点,多关注业务。不了解业务,你啥都设计不出来,或者把马设计成了驴……

  2. 如果某个功能的开发/修改,以“天”为工时单位,一定要先画图。具体画什么图,可以参考我之前写的文章:软件开发中会用到的图。

  3. 搞明白每个设计模式的特点和适用场景,注意,不需要把代码怎么写背下来。只要你每次写代码之前扫一眼设计模式的列表,看看有没有适用的。如果有的话,再去“依样画葫芦”按照设计模式去实现,经过时间的积累,慢慢地,你真正掌握的设计模式就越来越多了。这有助于锻炼你的设计能力。

3、“接”需求之前会先“砍”需求

要做这点还得依赖于第一点,否则,你提出的“砍”需求建议大多是不会被采纳的。

很多人在听需求讲解的时候,思考的是,这个功能能不能实现、怎么实现、难不难。大多数的提问也是基于这个思路展开的。

可能也会提出“砍”需求的问题,但是理由大多是这个实现起来太麻烦了,这个没法实现之类。

其实只要你时刻保持着“做这个需求的目的是什么”这个问题去思考,“砍”需求会变成一件更容易成功,而且自然而然的事情。

4、解决一类问题而不是一个问题

很多人觉得,每天看到 bug 清完就万事大吉了,哪怕同一个问题在生产环境出现多次,最多也就说一句“不会吧,怎么又出问题了”。

这种对待问题的方式只会让你越来越忙,因为你的解决问题效率与投入的时间多少是成同比变化的。

我们要习惯于解决掉一个 bug 之后,想一下能否通过什么方式找到现有代码中的同类问题,并把它们处理掉。

甚至是考虑有没有什么办法能够一劳永逸地避免此类问题再次发生,比如封装一个 SDK 或者写一个组件,尽可能用一种低侵入的通用方式将问题扼杀在摇篮里。不但让自己轻松了,也造福了大家。

5、遵循 KISS 原则,写尽可能简单的代码

KISS 原则:保持简单,愚蠢(Keep it simple, stupid)。

不单单是程序员,任何化繁为简的能力才是一个人功力深厚的体现,没有之一。

越简单,越接近本质。就好比,有的人要用长篇大论才能讲明白一件事,而有的人只要做一个形象的比喻你就懂了。

这个“简单”指的是整体的简单,而不是通过局部的复杂让另一个局部简单。比如,为了上层的使用更加傻瓜化,底层封装的代码错综复杂、晦涩难懂,这并不是真正的“简单”。

如果你自认为已经是一个中级或者高级程序员了,那么你回头去看看自己还是初级程序员那会写的代码,就会很容易发现一些显得冗余的代码。

第二点提到的——“设计代码而不是写代码”对做好这点有很大的帮助。

6、选择忍受某些问题

在人工智能还不能代替我们 coding 之前,我们永远要亲自面对无穷无尽的、这样那样的问题。

然而,任何事物都有两面性的,一个方案在解决一个老问题的同时,总会带来新的问题。所以,我们一定要意识到,忍受某些问题是必然的。

那些你现在看起来很傻逼的设计,可能就是当时的人做出的妥协。

所以,既然如此,你更应该考虑的是,当前的这个问题现在到底有没有必要解决?值不值得,为什么之前没去解决?它是不是你当前所有待解决问题列表中优先级最高的?

7、打造自己的“T型”专业技能

可能很多人都听过“T型人才”的概念,我们程序员在专业技能的打造上也适合用这种模型。

但是对于“先竖再横”还是“先横再竖”可能不同的人有不同的看法。

我的观点是,大多数情况下,先竖再横。特别是某个技术、领域发展得越成熟,越应该如此。

因为很多事物的本质是一样的,所以对某一个领域达到非常深入,洞察到一些本质的东西之后,对其它相邻的领域有触类旁通的效果。可以加速自己在“广度”上的扩展。

不过,“广度”也不是说蜻蜓点水,只知道最表象的“它是什么”。我认为比较合适的程度是,可以不用清楚某个技术具体的使用方式,但得知道它可以解决哪些问题,以及使用成本和潜在的风险,我将这些信息概括为“它怎么样”。

8、构建自驱动的“闭环”

很多人都知道闭环的概念,但是它的重要性和价值往往被低估。因为人总是短视的,“聚沙成塔”之类的方式总是不受待见。

常规的搭建一个闭环的过程大多是这样的。

这里所说的自驱动的“闭环”是这样的。

如何才能变成这样呢?只要做一件事,尽可能多地对外输出自己的知识。

举个我自己的例子,我在 2015 年那会在项目中开始引入领域驱动设计,并且不断地在内部进行分享它的好处,慢慢地越来越多的项目开始往这个方向走。

因为前期的不断分享,所以在组织内部,别人对我的人设多了一个“DDD专家”的标签,那么大家遇到有关 DDD 的问题就会来和我一起探讨。

越到后面,我已经不用自己主动去寻找这个领域的知识去学习了,因为接收到的外部反馈已经足够多了,它们能够倒逼我往前走。并且这些反馈都是实际的真实场景,此时的信息获取和学习自然能达到“学以致用”的效果。

说实话,有不少人并不是这么想的,他们想的恰恰相反:“为什么每个人都在问我问题!你自己去学习吧!”。

所以,当你遇到其他人来请教你的时候,如果恰巧这是你所关注的领域,那么应该去拥抱这个问题而不是排斥它。因为你是团队里最权威的人,这是你构建自驱动“闭环”的好机会。错过这一回,下一回不知道得等多久。

前面文章里说到,我会将“专业技能”、“连接外部的能力”、“领导力”三个维度组合起来给你看。就是下面这个样子。

你会发现这里面包含了程序员在进阶后的几个常见岗位。

可以对号入座一下:D

好了,我们总结一下。

这篇我先和你聊了一下在大家眼中高级程序员是什么样子,发现没有特别统一的标准,都是模糊的。这也体现在了几个现实的场景中,比如招聘高级程序员、培养高级程序员上。

其次,我对初级、中级、高级程序员的特点分别阐述了自己的观点。

然后,给出了一些帮助大家往高级程序员靠拢的实践思路。

希望对你有所启发。

最后,用Martin Fowler 的一句话作为结尾:“任何傻瓜都能写计算机能理解的代码,优秀的程序员编写人类能够理解的代码。”

Any fool can write code that a computer can understand. Good programmers write code that humans can understand

Martin Fowler

希望看到这篇文章的每个程序员最终都能成为头发茂盛的码农

点云生成图像 摘要:本文介绍了使用Open3D库将点云投影为RGBD图像的方法。通过project_to_rgbd_image函数,利用小孔相机模型的内参和外参矩阵,实现了点云到彩色图像和深度图的转换。实验使用随机生成的10万个点云数据,通过可视化窗口获取相机参数后,成功生成了对应的RGB图像和深度图像,并使用Matplotlib进行可视化展示。该方法为点云数据处理提供了有效的三维到二维投影方案。 阅读详情

相关推荐

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

语音芯片ic的其中一个品类,就是SOP8封装的OTP语音芯片,非常的经典和常用。源头的供应商基本都是台系的原厂,比如:九齐、硕呈、佑华等等,其中佑华就算是鼻祖了,早期的4位机也是在语音市场得到了升华。 OTP(One Time Programmable)是单片机的一种存储器类型,意思是一次性可编程:程序烧入单片机后,将不可再次更改和清除。

qyvhome的博客 1873

干货!12个程序员证书​,含金量超高

软考,全称为,是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试,该考试设置了27个专业资格,涵盖5个专业领域, 3个级别层次(初级、中级、高级),专业性和难度很高,是用人单位择优聘任相应专业技术职务(技术员、助理工程师、工程师、高级工程师)的基础,可以说是程序员最值得考的证书,所以有志于往事业单位和国企发展的同学建议考它!IBM在业界有“蓝色巨人”的美誉。证书的存在,更多是锦上添花,并不代表一个程序员真正的实力,技术才是验证程序员能力的唯一标准,所以关于考证,大家可依据个人情况选择。

2301_76168381的博客 4万+

lgv20刷twrp_LG港版v20 root

这是LG港版v20 root,整理了一下有关LG港版v20的官方固件包了,有没有需要的呢,这里把固件包整理一下也是方便大家以后好下载了,因此有一些机友还是不知道在哪里下载官方的rom包,在这里说的固件rom包也就是原版的系统包了,大家可以放心的使用,这些系统包也都是支持线刷的,大家下载下来解压出来根据里面的相关教程来操作就可以了,很简单的,如果你也需要的话就一起来看看吧。软件提示注意!! 此过程会...

weixin_33212263的博客 5387

高级程序员和普通程序员有哪些区别?

“码农”和计算机工程师其实并没有明确的界限,他们每天都在和计算机代码打 交道。只不过前者多少带点儿贬义,毕竟今天能写几行代码的人随处可见。计算机工 程师在某种程度上是自己往自己脸上贴金,在外人眼里他们再普通不过了。 但是, 同样是计算机工程师, 不同人的水平、贡献和影响力可谓有天壤之别。有 些读者读过我之前写的一些书,知道我喜欢用朗道的方法,将计算机工程师分为五 级。一级工程师的贡献是二级的 10 倍,二级是三级的 10 倍,以此类推。当然,他 们的贡献和收入常常存在指数上的差别。 五级: 能够独立解决

人邮异步社区 5652

【零基础】手把手教你使用Docker部署Springboot项目(详细版)

还不会使用Docker部署Springboot项目的小伙伴,不妨进来看看呗,希望文中内容对你有所帮助!

fengprogrammer的博客 2万+

1 FFmpeg从入门到精通-FFmpeg简介

1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe

migu123的专栏 3684

高级程序员证书_如何快速申报高级工程师

关于如何申报高级工程师?申报高级工程师的条件是什么?小编在这里同意进行解答。工程师是职业水平评定(职称评定)的一种。其下,有技术员,助理工程师等职称;其上有高级工程师,教授级高级工程师等职称。当然,这也只是对从事工程建设或管理人员技术水平的一种标定而已。 按职称(资格)高低,分为:研究员或教授级高级工程师(正高级)、高级工程师(副高级)、工程师(中级)、助理工程师(初级)。高级工程师系列是中国专...

weixin_39948210的博客 2569

半导体EAP系统入门指南:从零开始理解设备自动化程序(附实战案例)

本文深入浅出地介绍了半导体制造中EAP(设备自动化程序)系统的核心作用与工作原理。EAP作为连接MES与生产设备的桥梁,负责指令翻译、数据采集与实时控制,是实现晶圆厂全自动化的关键。文章通过对比手动与自动模式,阐述了EAP在提升效率、保障良率方面的价值,并提供了一个实战案例,帮助读者从零构建对半导体CIM体系中这一关键组件的理解。

weixin_29200741的博客 734

Java高级程序员需要学习哪些技术?

  Java高级程序员具备的特点,首先Java高级程序员必须具有一定的业务分析和流程意识、性能优化经验,大数据设计处理和功能开发、会语言设计和技能开发、很强的学习能力。具备Java内存模型、GC工作原理、Java classload机制、深入研究过开源项目、设计模式Java内存检测工具等知识。Java高级程序员需要学习哪些技术?   1、掌握核心Java SE   从核心Java开始学习,掌握核心技术开发。了解和掌握循环,数组,运算符等基本概念,Java SE有一系列通用API,比如Java.lang

IT_studied的博客 1009

TI 实时操作系统SYS/BIOS使用总结

1:概述: SYS/BIOS 是一个可扩展的实时的操作系统。具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片)。能够实现系统的模块化并可裁剪。 最大的特点就是:实时。 2:XDCtools: XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的AP

带头奋青的博客 5万+

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】

本文为了解决为什么要使用多晶硅作栅极触点的问题,先介绍了MOS管的工作原理是通过栅极上所加的电压控制漏极与源极之间电流,然后解释了栅极的材料为什么选用多晶硅,然后介绍了晶体管里栅极的自对准工艺(Self-Aligned Gate )。

Jie_MSD的博客 1万+

什么样的程序员才是高级程序员?从零基础到精通,收藏这边就够了!

与测试的沟通也体现了对自己代码的掌控能力,有的时候测试是无法完全写出复现步骤的,但bug确实是真实存在的,不能够因为测试无法写出复现步骤而置bug于不顾,这时通过与测试的沟通,进行一场犹如推理的讨论,找出自己代码中薄弱的环节,也是沟通带来效率提升的一个典型的例子。玩游戏的人也许会知道,在很多网游中有一个拜师的功能,在两个玩家成为徒弟和师傅的关系之后,为了让徒弟出师(达到游戏中的某些条件),师傅会倾自己的所有力量帮助徒弟来提升自己,在出师之后,师傅会获得巨大的奖励,而徒弟也在这个过程中获得了师傅大量的帮助。

leah126的博客 1446

【文献笔记】ICCV 2021 | Point Transformer

作者提到,特别适合点云处理,因为自注意力机制是的核心,本质上就是一个集合算子:它对输入元素具有顺序不变性和数量不变性3D点云是无序的,即使改变点云txt文件中的点顺序也不会有任何影响。自注意力机制天然具有排列不变性,因为它通过对所有"点对"的关系进行建模来处理输入,而不依赖于任何特定的输入顺序点云数据通常覆盖了3D空间中的对象或场景,理解这些数据需要捕捉点与点之间复杂的空间关系。自注意力机制能够有效的捕捉这些关系,因为它为每个"点对"赋予一个。

m0_55908255的博客 965

大家在寻找的高级程序员到底是什么样子的?

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「110」篇原创敬上你好,我是Z哥。这篇文章主题很简单,就是一个很常见的话题“什么是高级程...

Zachary的博客 520

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

一名合格的程序员应该是什么样子

6 月 25 号,母亲打来电话,说妹妹的高考成绩离二本线差 9 分。我听完随口扔了一句,“在我的意料之中。”因为她平时的成绩也就在二本线上下徘徊。 这句话挺伤人的,尤其是对于高考失利的妹妹来说,她听完我的话,立马就哭了起来,情绪非常激动,质问母亲为什么要打电话告诉我(玻璃心)。 我参加高考了两次,两次都离二本差了 6 分,最后不得已上了大专——当时也陷入了人生的低谷,情绪很低落。一路走来,能体会到...

沉默王二 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

你心目中高级程序员的印象是什么样子的?

我们的中国文化,对“面子”看得特别重,所以你会发现身边到处都是高级 XXX,听着倍儿有面子,程序员也不例外。 但是你真要问每个人,你认为的高级 XXX 是什么样子的,估计每个人都有不同的回答。 我还记得在我刚开始从事编程工作的时候,对坐在边上不远的那位我心目中的高级程序员的印象是: 工作至少有 6、7 年以上,能写一个用起来很方便、看起来很牛逼、但是不太容易让初级人员看懂的框架。 前两天,我把这个问题丢到群里,大家给出的答案中,占比最高的是以下几个。 有 N 年以上编程经验(大部分都说 5

Java0258的博客 920

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

高级程序员与初级程序员差别在哪里?

之前在公众号里有个读者给我留言: 请教个问题,公司高职级和初中级,都是写业务代码,那么高职级的价值在哪里呢? 由于公众号回复留言的限制,当时我就简单的回复了如下的几个点: 初级多在写代码,高级多在设计代码; 初级多在解决一个问题,高级多在解决一类问题; 初级多在考虑技术问题,高级还要参与业务上的需求; 初级工程师只管接需求,导致自己忙不过来,高级工程...

萧然自我的博客 1373

大厂花50万挖来高级程序员,真的值吗?

我们的中国文化,对“面子”看的特别重,所以你会发现身边到处都是高级 XXX,听着倍儿有面子,程序员也不例外。 但是你真要问每个人,你认为的高级 XXX 是什么样子的。估计每个人都有不同的回答。 我还记得在我刚开始从事编程工作的时候,对坐在边上不远的那位我心目中的高级程序员的印象是: 工作至少有 6、7 年以上,能写一个用起来很方便、看起来很牛逼、但是不太容易让初级人员看懂的框架。 前两天,我把这...

IT-编程资讯 950

怎样才能叫高级程序员?

Stephen Tobolowsky在定义联体三角形“我真的开始对我在这里做的事情感觉不自信了。如果我们都不知道高级程序员到底是个什么样子,那我又该怎么朝这个目标努力?”...

286

高级Java程序员必备的十个技术点

甚至连广泛应用的MySql数据库也在字符集上犯了基本的错误,导致直到现在,MySql的UTF8字符不是真正的UTF8字符集,还是业界的一个著名大坑。例如当你在写一个类的时候,设置一个int型的变量的同时,脑子里要很清楚这个变量,在运行的时候,占据多少内存,这个变量的取值范围是多少,这个变量在作为参数、作为接口交换数据的时候,会是什么样子的。在网络中传输的时候,会是什么样子的。刚开始编程时,为了实现业务逻辑,往往都是在做逻辑的堆砌,这样的堆砌,缺少结构,就像盖房子,砖是胡乱垒起来的,很容易倒塌。

2401_83384536的博客 1472

普通程序员和高级程序员有什么差别?

在日常工作中,多去看看“大神”做的项目,看他在一开始的时候是如何设计项目的,在编程的过程中对数据库进行了哪些操作,以及为什么这么做。久而久之,当你自己的项目遇到复杂的需求时,你也能够在这个思路的基础上进行难点拆分,不断改进优化项目,这将会是你进步的开始。高级程序员在发现程序报错后,首先会查看浏览器控制台是否发送了对应的请求,如果是的话再看请求码是什么,然后根据不同的错误码做出不同的调试方案,要么通过报错日志找到对应的地点进行修改,要么通过开发工具断点调试,顺藤摸瓜找到最终问题。最后,制定长期发展目标。...

cd_farsight的博客 413
上一篇: Guava RateLimiter限流以及源码解析
下一篇: 基于ZXing的二维码生成工具类
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值