程序员如何才能成为独立开发者?

如题所述

我们根据职场发展通路和能力水平,把程序员分成如下四个等级:

普通开发者

熟练开发者、高级开发工程师、技术组长

技术专家、架构师、一线经理

科学家、首席(资深)架构师、部门研发总监

今天这篇文章,我们来讨论普通开发者如何进阶为熟练开发者。

我们会先定义普通开发者应该达到的能力水平,然后再介绍他应该在哪方面提升才可能进到下一个阶段。

普通开发者的能力水平

先看我经常提到的一张图——技术成长阶段图:

普通开发者处在第一个成长阶段:专项能力提升。

专项能力提升阶段是初级阶段,你为了搞定事情,必须先具备某些基础能力,比如某种编程语言(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,现在回头来看普通开发者和熟练开发者的区别,就简单多了。

普通开发者因为不断完成任务,不断做项目,接触、使用了各种各样的“知识点”,于是拥有了各种离散的知识,但这个知识和那个知识很少关联,他拥有的知识,是散兵游勇,如下图所示:

当你的知识点各不关联时,你在遇到问题时,就很难进行系统思考,就很难获得解决办法。

而熟练开发者,则(被动或主动)经历了知识点的梳理、整合过程,把零散的知识点围绕着某个应用场景联系起来,形成了知识体系。就像下图:

当你有了知识体系之后,遇到和你知识体系对应的场景相关的问题,就可以快速找到相关的知识,系统的分析问题,最终解决问题。

你看,是否拥有知识体系,导致了熟练开发者和普通开发者的一个非常重要的区别:熟练开发者能够独立负责一个模块或子系统的设计和开发工作,拥有分析问题、解决问题的能力和任务分解的能力,可以分配任务给普通开发者。

进阶修炼方向

好啦,从技术水平的角度讲,普通开发者和熟练开发者的区别就在于:普通开发者的知识不成体系,而熟练开发者构建了与某个应用场景相关的知识体系。

这样看来,普通开发者要想进阶,方向就非常明确了:构建自己的知识体系。

那么,怎么构建知识体系呢?先参考我的另一篇文章:构建知识图谱,让自己更值钱。如果后续有机会,我会重构一篇新的文章,再聊聊构建知识体系这个话题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-26

据EvansData的数据显示,截至2020年,世界上将会有超过2500万名软件开发者。软件开发人才市场已经成为科技领域最炙手可热的部分,从事这一职业的人数也是如今增长最快的。

2017开年Q1季度,各大厂一点也没闲着:阿里启动「NASA」计划、Google上线了面向中国的开发者网站、华为在长沙召开中国生态伙伴大会、京东开年技术大会,一系列动作揭示着大厂正式进入技术军备赛。一方面重仓自家的技术及技术人才的储备,另外一方面对于第三方开发者也在摩拳擦掌,逐步在开放其多年的技术积累,赋能第三方开发者,抢夺云服务入口。

各大中小开发者服务厂商都意识到开发者越来越重要,开发者社区对于自己的生态越来越重要了!但是,大到如何做开发者战略、如何战略落地、如何衡量开发者社区的ROI,小到如何做开发者Hackathon、Meetup等等一系列的问题,都在困扰着众多为开发者服务的B2D公司。而如何建立一个强大的充满活力的社区、在日益繁荣的开发者生态中更好地提升自己,也是众多社区领袖和开发者们不断思索的问题。

关注这个问题的人们,终于要在5月6日聚在一起。

中国首届开发者关系大会

2017年5月6日(周六),16位来自欧美、中国、日本的开发者关系领域资深演讲嘉宾共聚北京,分享前沿的理念和实践经验,「本土化」与「国际化」的碰撞;数百位技术布道师、社区领袖、CEO、市场总监、开发者出席,探讨如何围绕产品和服务建立活跃的开发者社区、打造优质的开发者体验、维护良好的开发者关系。

关注广州本地开发者们交流与成长的freeCodeCamp广州社区,将在「一起」组织不能亲自参与的小伙伴一同观看直播,还邀请了两位棒棒的嘉宾现场分享。

活动详情

-时间-

2017-05-06

9:15—12:30

-地点-

一起开工社区

广州市荔湾区中山七路68号

地铁1号线西门口站D出口右行,西门口广场侧

-活动流程-

09:15-09:45破冰

09:45-12:30分享进行时+直播收看

12:30交流&合照

-嘉宾介绍-

嘉宾一:VictorChan

嘉宾介绍:答疑小王子,热爱编程。

分享主题:「事件代理之表单动态验证」

嘉宾二:止秋

嘉宾介绍:技术与颜值并存的程序媛。

分享主题:「异步编程的前世今生」

嘉宾三:QuincyLarson(直播)

嘉宾介绍:freeCodeCamp创始人

分享主题:「开源社区如何推动社会进步」

嘉宾四:李建盛(直播)

嘉宾介绍:开源信徒,UMCloud开源布道师,InfoQ中国开源专栏主编

分享主题:「开发者与开源社区」

-报名方式-

点击「阅读原文」报名

-咨询答疑-

联系人:陈泽佳

电话:

关于发起方

GitHubStar第一开源项目

致力于帮助人们利用零散的时间学习编程,它的口号是Learntocodeandhelpnonprofits(学习编程,帮助非盈利组织)。FCC涵盖HTML、CSS、React、JavaScript、Database等课程,游戏化程度非常高,学员可以通过线上聊天室和线下社区活动(CoffeeandCode)相互帮助。目前覆盖全球160+个国家、1800+个城市,90W+开发者在平台上学习。

freeCodeCamp中文社区(www.freeCodeCamp.cn)由猿生态开发者社群运营,2016年4月,在全国各地近20名翻译志愿者的帮助下,完成全部的课程翻译;经过一年的发展已经有5W+用户,目前在苏州、北京、西安、成都、上海、广州、深圳、郑州、杭州、重庆等近30个城市建立了线下编程学习社区,在其它城市也正在不断兴起。

freeCodeCamp全球1800+社群分布

编程是一种赋予自由的能力

第2个回答  2017-12-26

随着业务步伐的不断加快,软件开发团队的角色也在不断变化。敏捷开发,持续整合和持续交付变得更加重要。同时,还有更多的低代码和无代码平台,使得技术能力低的“公民开发者(Citizen developers)”能够构建,更新和增强业务应用程序。那么未来开发人员和程序员会面临来自业务团队的挑战吗?他们会不会抢了程序员的饭碗?

企业需要公民开发者,因为业务线需要跟上快速变化的市场条件和法规要求。随着这些变化,业务专业人士希望更多地控制他们的应用程序,以便他们能够进行必要的更改,更新这些更新并快速上市。

为此,更多的IT部门正在创建基础设施,以降低软件开发的技术复杂性,使公民开发人员可以通过拖放简单来创建,维护和管理业务应用程序。

并且更多的软件企业已经摆脱了瀑布开发,因为他们的公司不能等待几个月或几年的竞争性业务应用程序开发。敏捷和精益开发方法加速了软件交付,但并不能确保所有业务线应用程序始终是最新的。因此,业务用户继续等待他们认为应该更快实施的应用程序更改,因此更多的人正在寻找自己更新和构建应用程序的方法。

基于云计算的开发模式简化了服务配置,使公民开发人员更容易地使用IT部门提供的服务。公民开发者也需要一种方法来理解这些服务,因为他们往往不了解软件架构和相关问题。低代码和无代码平台掩盖了公民开发人员可以轻松理解和使用的视觉界面的所有复杂性。

然而,并不是所有的低代码和无代码平台同样融入现有的业务流程。如果公民开发者必须改变其工作方式以符合特定工具的限制,则他们要停止使用工具或冒失的通过工具来加快应用开发的上市时间。

云计算提供IT和业务线具有其他可预见的好处,包括简单的基础设施配置和弹性,这在加快应用程序更改的同时控制成本是必要的。

同时,公民开发者更多地关注微服务的好处,所以他们开始询问IT和他们使用的工具是否支持它们。使用云计算,IT可以轻松地提供公共开发人员可以随意使用和组合的微服务。

机器人过程自动化(RPA)有望实现大量的业务流程效率,但是许多业务线都关心工作会丢失。然而,许多软件开发任务,特别是易于重复的软件开发任务已经被自动化了。使公民开发者能够利用现有技能完成更多的工作。

公民开发人员不期望对代码有深入的了解,所以自动化将有助于简化业务应用程序的更改和创建新的应用程序。自动化将包括从重复任务到更为复杂和预测性的认知过程自动化。最终,企业有机会确定如何精简业务。

你认为业务人员会不会抢了程序员的饭碗?记得留言讨论呀!

第3个回答  2017-12-26

2017中国(郑州)开发者大会

将于12月10日在郑州国际会展中心举行

拥抱未来互联网技术趋势

实现一二线开发技术、思维、环境互联

推动郑州互联网氛围提升

提高开发者开发思维、视野、格局

让中国重新认识郑州互联网工作环境

推动中原区域企业发展

为中原经济的快速发展注入新活力!

中软高科作为人脸识别领先企业,尤其还是河南本土唯一的人工智能企业,一直以来对河南科技人才发展倍加关注。多年来为应往届毕业生提供众多科技岗位,缓解河南本地科技人才就业问题,为河南乃至全国各地众多政企单位提供人脸识别产品,推进河南人工智能发展进程。受2017中国(郑州)开发者大会组委会邀请作为演讲嘉宾参与大会,届时将会带领大家一起深入了解人工智能,了解人脸识别技术。

作为一家专注于视觉人工智能领域的公司——中软高科,已经率先在智能安防、交通等诸多领域完成了商业化落地。面对人工智能近几年突飞猛进的发展态势,中软高科在人脸识别市场已小有所成,拥有着众多令人垂涎的专利技术与研发经验。让我们相约12.10,领略人工智能新秀——中软高科的技术风采。

中软高科-不仅仅是人脸识别专家

作为人工智能领域人脸识别行业专家——中软高科近年来针对社会不同行业,提供不同解决方案。深度学习人证核验、人脸识别等技术,深耕地产、金融、教育、安防、通信等六大行业,先后与广电运通、小米、中国建设银行等各行业巨头合作,推动行业产品智能化升级。秉持“发展核验技术,完善移动安全”的经营理念,多年来坚持“选择中软、选择诚信”的方针,赢得了用户的信赖。由于技术全面,产品线丰富,使公司业务在各个领域所占市场份额逐年增大,产品还多次获得国家级认可。将研究落到实处并进行经验积累和优化推广,用高科技更好地服务更多行业,真正做到科技为人民服务,成为受人信赖、受人尊敬的高科技企业!

相似回答