2023-10-05 06:00:27 | 我爱编程网
我们根据职场发展通路和能力水平,把程序员分成如下四个等级:
普通开发者
熟练开发者、高级开发工程师、技术组长
技术专家、架构师、一线经理
科学家、首席(资深)架构师、部门研发总监
今天这篇文章,我们来讨论普通开发者如何进阶为熟练开发者。
我们会先定义普通开发者应该达到的能力水平,然后再介绍他应该在哪方面提升才可能进到下一个阶段。
普通开发者的能力水平
先看我经常提到的一张图——技术成长阶段图:
普通开发者处在第一个成长阶段:专项能力提升。
专项能力提升阶段是初级阶段,你为了搞定事情,必须先具备某些基础能力,比如某种编程语言(Java / C++/ Python / JavaScript 等)、某个IDE (Visual Studio / Qt Creator / Android Studio / Eclipse / WebStorm 等)、某种技术框架(Netty / Qt / SSH / MyBatis / AngularJS 等)。
这个阶段最重要的就是提升专项能力,让自己能够迅速搞定一些别人安排给你的事情,体现出你的价值。
在这个阶段,最起码达到下列水准:
能理解并完成别人分解好的叶子任务
能自己完成一个功能模块的开发 我爱编程网
以前端开发者为例,在这个阶段,你必须能将从 UI 过来的某个页面原型转换为可运行、可操作的真实 Web 页面。比如登录页面、比如商品详情展示页面,要能做到实现可视化页面和业务逻辑跳转。
以 Android App 开发者为例,在这个阶段,你必须能搞定类似登录、支付等这类功能。以 App 的登录功能为例,你要能使用特定的布局和组件实现自适应的登录界面,还要能学习使用类似微信、微博等第三方账户的 SDK ,实现第三方账户登录。
你可能很难自己设计一套完整的登录功能(包含口令加密、单点登录、Cookie 使用、验证码、密码找回、第三方登录、多终端同步、角色鉴权、用户数据存储等),但是当熟练开发者或者高级开发者完成了设计,把某个小功能分配给你的时候,你要能够理解这个设计,并将这个设计实现出来,和整个登录系统整合在一起,能够正常运转。
当你能够搞定这些事情的时候,你的专项技术水平起码是这样的:
能熟练搭建需要的开发和测试环境
熟悉所用编程语言的基础语法,有这门语言的知识地图,熟悉该语言本身的各种基础功能,了解这门语言的高级功能
能调用已有技术框架的 API 来实现特定功能
能在实现同一功能的多组 API 之间选择合适的那一组
能熟练使用开发环境和各种辅助工具进行调试
可以解决易复现的、逻辑简单的软件 Bug
能自主学习某个新框架的基础 API ,参考 DEMO 完成某个功能的基本实现
我的总结可能不完善或存在 Bug ,请大家在留言区指正、补充。
我想到一个身边的例子,刚好和我们讨论的这个话题契合。
有一次和朋友 G 聊天,他说他部门有位做前端开发的程序员 X ,一直在用 jQuery 实现各种页面,代码冗余,结构凌乱。Vue.js 出来后,G 想在新版本中使用,就安排 X 学习 Vue.js ,让他参考公司产品某两个页面的功能和布局,简化设计,做两个带异步数据请求功能的页面出来看看效果,结果一个星期过后,X 告诉 G ,Vue.js 太复杂,开发文档看不明白,代码也搞不懂,进行不下去……
如果你像 X 这样的状态,就说明你还停留在普通开发者阶段,只能在他人指导和安排下编码实现特定的细分功能。
要想进阶,就要先在专项技术能力上达到我们前面所列清单描述的水平(那是基础要求),然后再对照熟练开发者的能力要求,有针对性的去学习提高,稳步进入下个阶段。
普通和熟练的关键区别
对照前面的技术成长阶段图,熟练开发者处在中间阶段,拥有自己的技能体系。
为了搞明白拥有自己的技能体系是什么概念,我们先来看两组概念:
知识、知识体系
技能、技能体系
简单说,知识是能引发改变的信息,技能是运用知识解决问题的一系列思维和动作的组合。但这样讲不大容易明白,我们举个软件开发领域的例子。 C++中的虚函数是一个知识点,用虚函数这个特性定义模块接口,实现模块的动态加载,就是技能。
接下来为了行文方便,我不再区分知识和技能,直接把知识等同于技能,甚至用知识一词代替技能。请在阅读时根据上下文加以区分。
知识和知识体系的关系,技能和技能体系的关系,就像树木和森林的关系,就像瑞士军刀上小刀、小剪子、小螺丝刀和瑞士军刀的关系。
这样打个比方,应该可以体会到“体系”是什么了。
所谓知识体系,就是若干相互联系的、可以用来解决特定场景问题的知识的组合。
Ok,现在回头来看普通开发者和熟练开发者的区别,就简单多了。
普通开发者因为不断完成任务,不断做项目,接触、使用了各种各样的“知识点”,于是拥有了各种离散的知识,但这个知识和那个知识很少关联,他拥有的知识,是散兵游勇,如下图所示:
当你的知识点各不关联时,你在遇到问题时,就很难进行系统思考,就很难获得解决办法。
而熟练开发者,则(被动或主动)经历了知识点的梳理、整合过程,把零散的知识点围绕着某个应用场景联系起来,形成了知识体系。就像下图:
当你有了知识体系之后,遇到和你知识体系对应的场景相关的问题,就可以快速找到相关的知识,系统的分析问题,最终解决问题。
你看,是否拥有知识体系,导致了熟练开发者和普通开发者的一个非常重要的区别:熟练开发者能够独立负责一个模块或子系统的设计和开发工作,拥有分析问题、解决问题的能力和任务分解的能力,可以分配任务给普通开发者。
进阶修炼方向
好啦,从技术水平的角度讲,普通开发者和熟练开发者的区别就在于:普通开发者的知识不成体系,而熟练开发者构建了与某个应用场景相关的知识体系。
这样看来,普通开发者要想进阶,方向就非常明确了:构建自己的知识体系。
那么,怎么构建知识体系呢?先参考我的另一篇文章:构建知识图谱,让自己更值钱。如果后续有机会,我会重构一篇新的文章,再聊聊构建知识体系这个话题。
关于零基础怎么样能快速学好Python的问题,百度提问和解答的都很多,你可以百度下看看。我觉得从个人自学的角度出发,应从以下几个方面来理解:
1 为什么选择学python?
据统计零基础或非专业的人士学python的比较多,据HackerRank开发者调查报告2018年5月显示(见图),Python排名第一,成为最受欢迎编程语言。Python以优雅、简洁著称,入行门槛低,可以从事Linux运维、Python Web网站工程师、Python自动化测试、数据分析、人工智能等职位,薪资待遇呈上涨趋势。
2 入门python需要那些准备?
2.1 心态准备。 编程是一门技术,也可说是一门手艺。如同书法、绘画、乐器、雕刻等,技艺纯熟的背后肯定付出了长时间的反复练习。不要相信几周速成,也不能急于求成。编程的世界浩瀚无边,所以请保持一颗敬畏的心态去学习,认真对待写下的每一行代码,甚至每一个字符。收拾好自己的心态,向着编程的世界出发。第一步至关重要,关系到初学者从入门到精通还是从入门到放弃。选一条合适的入门道路,并坚持走下去。
2.2 配置 Python 学习环境。 选Python2 还是 Python3?入门时很多人都会纠结。二者只是程序不兼容,思想上并无大差别,语法变动也并不多。选择任何一个入手,都没有大影响。如果你仍然无法抉择,那请选择 Python3,毕竟这是未来的趋势。
编辑器该如何选? 同样,推荐 pycharm 社区版,配置简单、功能强大、使用起来省时省心,对初学者友好,并且完全免费!其他编辑器如:notepad++、sublimeText 3、vim 和 Emacs等不推荐了。
操作环境? Python 支持现有所有主流操作平台,不管是 windows 还是 mac 还是 linux,都能很好的运行 Python。并且后两者都默认自带 Python 环境。
2.3 选择自学的书籍。 我推荐的书的内容由浅入深,建议按照先后顺序阅读学习:
2.3.1《Python简明教程》。 这是一本言简意赅的 Python 入门教程,简单直白,没有废话。就算没有基础,你也可以像读小说一样,花两天时间就可以读完。适合入门快速了解语法。
2.3.2 廖雪峰编写的《Python教程》。 廖先生的教程涵盖了 Python 知识的方方面面,内容更加系统,有一定深度,有一定基础之后学习会有更多的收获。
2.4 学会安装包。 Python中有很多扩展包,想要安装这些包可以采用两种方法:
2.4.1 使用pip或easy_install。
1)在网上找到的需要的包,下载下来。eg. rsa-3.1.4.tar.gz;
2)解压缩该文件;
3)命令行工具cd切换到所要安装的包的目录,找到setup.py文件,然后输入python setup.py install
2.4.2 不用pip或easy_install,直接打开cmd,敲pip install rsa。
3 提升阶段需要恒心和耐力。
完成入门阶段的基础学习之后,常会陷入一个瓶颈期,通过看教程很难进一步提高编程水平。这时候,需要的是反复练习,大量的练习。可以从书上的例题、作业题开始写,再写小程序片段,然后写完整的项目。我们收集了一些练习题和网站。可根据自己阶段,选择适合的练习去做。建议最好挑选一两个系列重点完成,而不是浅尝辄止。
3.1 多做练习。 推荐网站练习:
crossin编程教室实例:相对于编程教室基础练习着重于单一知识点,
编程实例训练对基础知识的融会贯通;
hackerrank:Python 部分难度循序渐进,符合学习曲线
实验楼:提升编程水平从做项目开始;
codewar:社区型编程练习网站,内容由易到难;
leetcode:为编程面试准备,对初学者稍难;
牛客网:提供 BAT 等大厂笔试题目;
codecombat:提供一边游戏一边编程;
projecteuler:纯粹的编程练习网站;
菜鸟教程100例:基于 py2 的基础练习;
3.2 遇到问题多交流。
3.2.1 利用好搜索引擎。
3.2.2 求助于各大网站。 推荐
stackoverflow:这是一个程序员的知识库;
v2ex:国内非常不错的编程社区,不仅仅是包含程序,也包含了程序员的生活;
segmentfault:一家以编程问答为主的网站;
CSDN、知乎、简书等
3.2.3 加入相关的QQ、微信群、百度知道。 不懂的可以随时请教。
以上就是web前端开发知识图谱 人工智能专业需要学习什么知识?全部内容了,了解更多相关信息,关注我爱编程网。想做web前端的工作,应该先学什么?一个专业的前端开发工程师是必须掌握前端开发三大基本基石HTML、CSS,JavaScript。光会这些还不够,有了这些语言还需要各种工具的支撑,比较常见的有Dreamweaver,Sublime,HBuilder。还有FontelloFontello 、Secureheaders、VisualStudioCodeVisualStudioCode。工
web前端开发需要掌握哪些知识?一.基础学习主要就是html、css、JavaScript。建议直接从html5、css3、ES5入手进行来学习。由于该部分是web前端开发中的基础部分,因此建议大家基础一定要打牢固。二.与美工相关、后端开发、设计相关的学习优秀的web前端开发工程师,将熟知自己工作界面的各种布局。因此,这也将是你工作中的重点。根据公司的不同,大家可扩大知识面,加
Web前端开发是什么没有基础,脱产学习需要时间为四个半月以上。Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。👨💻专业的前端工程师Web前端开发在产品开发环节中的作用变得越来越重要,而且需要专业的前端工程师才能做好,这方面的专业人才近几年来备受青睐
web前端开发主要学哪些?web前端开发主要学习以下内容:HTML:学习HTML标记语言,它是用于构建网页内容的基本语言。CSS:学习CSS(层叠样式表),用于样式和布局网页元素。JavaScript:学习JavaScript语言,它是一种高级编程语言,用于创建交互式网页和动态Web应用程序。响应式Web设计:学习如何创建可以适应不同
如何在前端网页中调用第三方地图API,实现网页中显示地图信息?这里以调用高德地图和百度地图为例,简单介绍一下前端网页中如何调用第三方地图API,主要内容如下:调用高德地图API1.首先,需要注册高德地图开发者,这个是使用API的前提,只有正常登陆,创建应用,生成专属的Key值,才能正常调用地图,注册的话,直接到官网上注册就行,需要输入以下信息,按照提示一步一步往下走就行,如下:
web前端开发需要掌握哪些知识1.HTML知识要点:web工作原理、HTML4及HTML5、常见标签、相对路径与绝对路径、HTML5标签2.CSS+布局知识要点:CSS基本语法、基本选择器、复合选择器、背景图片、盒子模型、精灵图、常见网页布局、浮动定位、Flex布局、响应式布局、移动端适配、网页动画、CSS3新特性、Less预处理器3.ECMA基础知识要点:ECMA基本语
初学web开发需要掌握哪些知识Web前端开发要学习的知识很杂乱,知识范围也很广。不过,所有技术都是围绕着三大基本技术来进行的:HTML、CSS,JavaScript。前端的开发中,在页面的布局时,HTML将元素进行定义,CSS对展示的元素进行定位,再通过JavaScript实现相应的效果和交互。掌握三大技能,还要运用多种开发工具辅助开发。目前我们常用到的有:Dreamweaver,S
web前端开发需要学习什么知识?最近不少小伙伴都会留言问,零基础学习前端需要了解哪些知识,小白学习Web前端开发容易吗?针对大家的疑问,下面,尚学堂前端学院给大家介绍一下。首先,先给大家介绍一下前端工程师到底是做什么的。他们主要的工作是把UI的设计图按照w3c标准做成html页面,并且用javascript脚本语言实现页面上的前端互动。互动效果包括,弹出层,页签切换,图片滚动
2023-10-08 16:59:01
2023-06-27 20:13:22
2023-10-18 12:05:04
2023-10-18 12:03:34
2023-10-18 11:56:36
2023-10-18 11:54:48