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

如题所述

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

普通开发者

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

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

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

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

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

普通开发者的能力水平

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

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

专项能力提升阶段是初级阶段,你为了搞定事情,必须先具备某些基础能力,比如某种编程语言(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,领略人工智能新秀——中软高科的技术风采。

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

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

程序员如何才能有独立开发项目能力
1. 掌握多学科技能:一个独立开发者需要具备跨学科的能力。这不仅包括编程语言和框架的知识,还应涵盖设计、用户体验、数据库管理、网络和系统架构等领域的知识。2. 了解项目全貌:独立开发者需要具备项目全局视野,能够从需求分析到最终部署的全过程进行把控。这意味着要能够理解客户需求,规划项目结构,编...

程序员如何才能成为独立开发者?
以前端开发者为例,在这个阶段,你必须能将从 UI 过来的某个页面原型转换为可运行、可操作的真实 Web 页面。比如登录页面、比如商品详情展示页面,要能做到实现可视化页面和业务逻辑跳转。以 Android App 开发者为例,在这个阶段,你必须能搞定类似登录、支付等这类功能。以 App 的登录功能为例,你要...

程序员如何才能成为独立开发者?
你可以尝试小而美,专注细分领域,但需要投入时间和资源进行市场推广;或者选择大而全,通过开源和收费模式,找到技术与市场需求的平衡点。专家身份与社群价值 在行:提供全行业咨询服务,无论技术或非技术领域,都是提升专业形象的好途径。 付费社群:技术交流和专业成长的宝库,为个人品牌和知识分享搭建舞...

个人可以自己开发小程序吗?
开发小程序的方式无非是自己独立开发和找第三方服务商开发,个人可以开发吗,当然是可以的。但是主要依赖于开发者的技术实力,涉及到代码开发,并不是入门级水平就能完成。另一方面,也要视小程序的难易程度而定,如果是较为复杂的小程序,一个人无法独立完成开发的话,那么你也要把租用场地、租用设备、...

怎么自己开发游戏软件?
2、需要经过游戏策划、游戏原画设计、游戏UI设计、游戏场景设计、游戏角色设计、游戏动画设计、游戏特效设计、游戏程序开发之后才会展现在我们眼前,最后将这些素材作品整合进游戏引擎,最终还需要经过除错的过程。游戏制作过程并不神秘。3、关于如何制作游戏软件教程,具体内容如下:游戏,说白了就是一个程序,...

想要当开发程序员,需要具备什么样的素质
我希望我的技术能得到别人的承认,当得到别人的承认后,我又能如何呢?后来我发现,无论成为多么高级的程序员都没用,关键是是否能够出想法、出产品,你的劳动是否能被社会承认,是否能为社会创造财富。 我的未来是明确的,开发出高质量的适用社会的产品,为社会创造财富。 三、每一个程序都是艺术品 有人认为程序员没...

程序员独立创业:两年内从零到月入4.5万美元(32万人民币)
越南程序员Tony Dinh 的自述,他在两年内从零开始,通过独立创业,实现了每月4.5万美元(约32万人民币)的收入。Tony在辞职前是一名拥有7年工作经验的软件工程师。以下是他的旅程:在2021年9月20日,Tony正式辞去了全职工作,成为了全职独立开发者。这标志着他职业生涯的一个转折点,赋予了他前所未有...

卧槽,写代码真赚钱
面向新手的技术课程,把握互联网的教育需求,即使技术不是顶尖,也能通过分享经验吸引用户。 为特定副业项目开发工具,如插件、小程序,解决用户痛点,直接面向市场。 利用人脉和社群,分享和交流,通过优秀的内容吸引关注,扩大影响力。 成为独立开发者,虽然道路可能不平坦,但通过这些途径,你可以...

程序员软件著作权的归属如何确定?
程序员开发的软件著作权归属问题是需要是情况而定的,如果是合作开发的软件,其著作权的归属由合作开发者签订书面合同约定。1、软件著作权属于软件开发者,即属于实际组织开发、直接进行开发,并对开发完成的软件承担责任的法人或者其他组织;或者依靠自己具有的条件独立完成软件开发,并对软件承担责任的自然人...

一个独立游戏制作人需要哪些知识?需要应用哪些工具?
以上三者可以构成一个不真实的世界。若是想要仿真,我们需要:1.环境烘托 加入真实日夜循环系统,设定真实天光,使用全局光照模拟真实光照,利用高质量的阴影,HDR,自体投影以及SSAO产生逼真的层次感和光晕,利用体积光来模拟光柱,利用延迟光照实现多光源的照明,利用景深模拟远景虚化,运动还会产生模糊,利用...

相似回答
大家正在搜