每个人开发者都是由初级一步一步走向高级工程师。当然,不是说工作了多少年就能称为一名合格的高级软件工程师。有可能和你一同学习的人一两年的时间就拉开了距离。究其原因,我个人看法,有以下几点:
好学:别人下班放学挤地铁都在学习,你在上网看视频玩游戏
天分:这个很难超越,有些人他天生就属于这个行业,对于技术一点就通,一悟就会
环境:好的开发团队能让人飞速进步
自学5年编程,有可能比不上一个全职工作一年的人。5年你可能掌握了大量的理论知识,但是如果没有实践很难学精。工作中会碰到各种奇怪的问题。还有没有和其他人合作,你的代码没有被其他开发者审核过,你就不会知道代码存在哪些缺陷,也就很难进步。
好的导师能让你快速成长进步,你可能对某个知识点思考了半天甚至一个星期都没有弄明白。如果有经验丰富的人指点就有一种柳暗花明又一村的感觉。
5人团队的首席技术官与50人团队或500人团队不同,所做的工作和技能也完全不同。“高级”职称并不代表就是高级工程师,所以不要在意职称,能力最重要。
记住一句话,你写的代码是不可靠的。必须测试,测试,再测试。
新技术很好,但不要随意将新技术引进到项目当中。可以先了解学习新技术,然后再看它是否适合应用到项目中。
世界上没有任何一个完美项目。就算再完美的技术团队或者技术非常高超的人,也会有设计漏洞。如果你刚加入公司不要抱怨前同事写的代码烂,甚至有种冲动想把项目推倒重来。对于一个非常小的项目,如果你有足够的把握说服公司领导层或者和团队一起讨论重新设计是不错的选择。但是,一个巨大项目想重新开始是非常不明智的。第一,无限增加时间成本;第二,可能你重新设计刚开始会比之前合理些,但随着时间推移,你的设计也会有设计的非常糟糕的地方。公认很好的解决方法是,在开发新需求的时候三思,尽量把代码设计合理,一旦发现不合理的代码马上重构。
如果一个项目除了你还有其他开发同事。那么,就应该制定代码风格,一个项目不同代码风格一个显的不专业,造成代码混乱。另外,不同的风格不易理解,项目开发中一大笔时间是阅读之前的代码。同时也要互相代码审核,不要把它看做是一种压力,每个人都会犯错误,互相审核可以降低代码缺陷。
重构代码时最好先弄清楚相关代码会对哪些功能产生影响,一块代码区可能和多个功能相关联。你出于好意,改好了某个功能缺陷影响到其他功能就得不偿失了。个人建议修改代码需三思,如果是和你共事同事写的代码,最好是由他改写,或者问清楚再改动。
技术债的定义是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。
看起来好像我们不应该背负任何技术债。其实不然,适当妥协有时是一种不错的选择。不要理解错我的意思,如果你明知道只要多加思考就能想到更好的技术方法,而你为了图方便选择背负技术债就是你的不对了。当今软件行业讲究快速迭代,时间就是金钱。如果没有找到一个合适的技术方案而放弃一个核心功能,可能会竞争对手赶超甚至淘汰。
除编程外,高级工程师必须具备许多其他技能,沟通和项目管理。
不是每个人都会在职业生涯中成为“高级”。资历需要多年工作经验的累积。然而,多年的经验是资历的必要但不充分的条件。它必须是一种正确的体验,在这种体验中,你将正确的课程内化,并成功地将这些学习应用于未来。有时候,更大的课程可能需要一年或更长时间才能完全显现 - 这就是为什么多年的经验仍然很重要,即使你是一个非常好的程序员。
我们在某些方面仍处于初级阶段。最后很重要,无论你有多少年工作经验,仍然有一些你不太了解的地方。承认你不知道的是填补这一空白并从更有经验的人。
Mozilla将于今年秋季推出付费版Firefox。你愿意购买付费版本吗?
链接:Firefox将推出付费版[1]
几乎我们每天都在使用浏览器,你知道在浏览器输入网站地址,幕后会发生什么吗?
链接:当我们在浏览器中输入www.google.com时,幕后会发生什么[2]
链接:作为初级开发人员,我没有学过7个绝对真理[3]
一篇非常长的文章,介绍HTML5中的分区元素nav,aside,article以及 section
链接:HTML分区元素[4]
在本文描述了将前端整体分解为更小,更易于管理的部分的趋势,以及这种体系结构如何提高前端代码团队的效率和效率
链接:微前端[5]
Web Components(也称为Custom Elements)已成为多个浏览器的标准API,不需要React,Angular或Vue等前端框架,就能使用HTML,CSS和JavaScript实现可重用的组件。
链接:Web组件教程入门[6]
) web组件也有许多缺点。例如,它们许多技术限制,并且容易滥用。在本文解释为什么会这样,并建议开发组件的另一种方法。
链接:Web组件的问题[7]
详细讲解了JavaScript Date对象
链接:JavaScript Date对象[8]
英文网站以及一些书籍都会把首字母放大表示读者已进入一个重要的新部分,或者新章节开始。本文介绍如何设计好放大首字母。
链接:首字母放大设计[9]
将设计系统连接与开发关联。简单说设计师出图,开发者直接复制颜色,文本样式和组件。
链接:Zeplin[10]
全新的思维导图,这是一篇关于它的介绍文章
链接:Whimsical[11]
Firefox将推出付费版: https://thenextweb.com/apps/2019/06/10/mozilla-will-reportedly-launch-a-paid-version-of-firefox-this-fall/?utm_source=Responsive+Design+Weekly&utm_campaign=f26c6b5a53-RWD_Newsletter_365&utm_medium=email&utm_term=0_df65b6d7c8-f26c6b5a53-59181885
[2]当我们在浏览器中输入www.google.com时,幕后会发生什么: https://github.com/vasanthk/how-web-works#googles-g-key-is-pressed
[3]作为初级开发人员,我没有学过7个绝对真理: https://monicalent.com/blog/2019/06/03/absolute-truths-unlearned-as-junior-developer/
[4]HTML分区元素: https://css-tricks.com/how-to-section-your-html/
[5]微前端: https://martinfowler.com/articles/micro-frontends.html
[6]Web组件教程入门: https://www.robinwieruch.de/web-components-tutorial/
[7]Web组件的问题: https://adamsilver.io/articles/the-problem-with-web-components/
[8]JavaScript Date对象: https://css-tricks.com/everything-you-need-to-know-about-date-in-javascript/
[9]首字母放大设计: https://product.voxmedia.com/2019/6/17/18524029/the-ballad-of-drop-caps-and-design-systems
[10]Zeplin: https://blog.zeplin.io/announcing-global-styleguides-connecting-design-systems-to-engineering-65ad22bd0076"Zeplin
[11]Whimsical: https://whimsical.com/product/introducing-whimsical-mind-maps/