到底什么样的程序员算全栈程序员

2024-09-06 03:48
文章标签 程序员 到底 全栈

本文主要是介绍到底什么样的程序员算全栈程序员,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



       与其他互联网热词一样,”全栈“程序员也是英译过来的,英文全文是:Full-Stack Developer,你想啊,中国人民怎么会用客栈的栈、堆栈的栈来形容工程师呢?

  谈论一个概念,首先得给伊个定义,一般来说,全栈工程师就是指技术多面手,掌握多种技能,能够独立完成 non-trivial application 的人。non-trivial 怎么解呢?就是有一定复杂度的,具备一定规模的意思。基于此,我和我的程序员朋友们,对全栈工程师的认识是:在技术栈的各个领域都能够做到出色的工程师。有了这个标准,我和程序员们面面相觑,发现没有一个是全栈工程师。技术领域浩如烟海,更新换代之迅猛如炸雷不及掩耳,别说盗铃了。互联网短短 20 年的发展,累积的技术信息已经不是我们终其一生能够消化的了,知道尚不可为,何以做到出色?

  但是,这个标准稍稍降低一点,早期的程序员差不多就都能叫全栈了。2001 年左右我们开发 B/S 产品,用来展现 UI 和数据的程序代码中混杂了 Java、HTML、CSS 和 JavaScript,根本不可能把前端和后端拆开编写,而后端业务逻辑本身就是 Java 实现的,你不写谁写?懂了业务逻辑和算法还不行,你得把数据存数据库和文件系统吧,什么?你不懂 SQL?我靠那你还是程序员吗?你不能每次和数据库交互都让一个进程去敲门吧,数据库招你惹你了?这时候就得有个连接线程池。异常得统一处理吧,得支持集群吧,给用户部署了得能自动扩展吧,没测试怎么办?你自己写的代码写的业务逻辑写的界面,你不保证正确性谁保证?……

  总之在那个年代,每个程序员差不多什么都得会点,但有的人在这个领域强一些,有的人在那个领域出色一些,不一而足。  现在看来,那时候我们应该叫全沾工程师,什么都会点,能解决问题,但是单个人,除了自己擅长的技术,在其他领域,都没能做到出色。

  如果这个标准再降低一点,比如说把「non-trivial」去掉,随便做个 Application,那就容易多了,一个零基础智力正常的成年人去培训班培训几个月,差不多就能做出一个网站、一个移动 App 还包括后端,或者一个数据挖掘的展示页面。但这个范围仅仅局限在会上,和做好、出色,差距明显。可以看做是入门级的工程师,只不过和前端工程师、移动开发工程师、Java 工程师相比,什么技术都懂一点点而已。

  这种工程师,我们可以把他们叫做全站工程师,基本上,进入企业之后,都得有老师傅带着,手把手教,练习和实战,才能做「non-trivial」的项目。为啥叫全站呢,意思就是老师傅讲东西的时候,都在旁边站着。  有没有真正的全栈工程师?有,比如菲尔普斯在游泳层面勉强算全栈,奥运会咔咔拿 7 枚金牌,你服不服?你说我也会四种泳姿……您那叫会,会和做好,差着几十个二把刀。当然了,二把刀也没什么不好,至少比拿根儿木头杵着强多了。鼓励大家在立足本职成为专家的基础上,成为一个认真的二把刀。

  什么是程序领域的全栈工程师呢?我觉得云风算是游戏领域的全栈工程师,他自幼编程,在语言层面对汇编、C、C++、Lisp、Java、Python、Lua 都有深入的理解,使用起来如臂指使,对游戏领域的策划、引擎、协议和服务端架构也是驾经就熟,最新开源出来的 skynet —— 基于 Lua 实现的网络游戏服务器框架,极具参考和实用意……但是云风不做 Web 游戏啊,他对 JavaScript 的评价是:javascript 真是门恶心的语言!

  领我编程入门的师兄 baby,也是一个编程奇才,他对操作系统、编程语言、数据库均有透彻的了解,学习新技术只能用迅猛来形容,每次技术选型之后,他就会趴在办公室里敲敲打打几天,然后丢给我们一个用新语言实现的框架,告诉我们,用!一用之下,几乎没有 bug。这样的人,可称全栈。他们并不是在编程领域样样精通,而是在需要的时候能够在极短的时间内达到常人需要长时间练习才能达到的水准。

  正如我在书中写到,高手并不是懂得多,他们只是学得快而已。

  现在 baby 早有了自己的公司,估计技术也做的少了,现在想起他那训疾如风的键盘指法和闪电般的学习速度,还是让人一声叹息。

  整体来说,我觉得程序员们没必要去追逐什么「全栈工程师」,在工作和生活中,花 200% 的时间让自己在擅长的领域成为超越 80% 的人,然后,需要学什么就去学什么,一味追求大而全,反而会适得其反。

  之前推荐的公众号「刘炯」曾经写过一篇「想当全才的自我反省」,其中一段大意如下:  就像有人给自己设定目标要学英语、学乐器、学编程、学设计、学会计、学书法、学厨艺最终一事无成一样,我骨子里也希望自己做个「样样精通」的「全才」,然而事实上自己把时间更多的花在收集信息和焦虑上,反而没有将时间用在真正的技能学习上,最终获得了「样样稀松」的结果。

  这就如同很多游戏中的稀缺技能点一样,玩家永远加不满所有的技能树,如何有策略的使用有限的技能点来解决对应的问题,成了每个玩家必修的课程。

  现实生活中,亦是如此!

这篇关于到底什么样的程序员算全栈程序员的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140915

相关文章

【H2O2|全栈】关于HTML(4)HTML基础(三)

HTML相关知识 目录 HTML相关知识 前言 准备工作 标签的具体分类(三) 本文中的标签在什么位置中使用? 列表 ​编辑​编辑 有序列表  无序列表 自定义列表 表格 拓展案例 预告和回顾 后话 前言 本系列博客将分享HTML相关知识点。 这一期博客,我们来讲解列表和表格相关的标签。 本来想写表单的,但是博客内容比较多,我不想让博客太长了,所以放到

【H2O2|全栈】关于HTML(5)HTML基础(四)

HTML基础知识 目录 HTML基础知识 前言 准备工作 标签的具体分类(四) 本文中的标签在什么位置中使用? 表单(一) 表单标签 输入域标签 预告和回顾 后话 前言 本系列博客将分享HTML相关知识点。 这一期博客,我们来讲解表单相关的标签。 注意,本期表单中的大部分属性仅限于HTML4,如果想要了解更多关于HTML5中常用的表单功能,可以期待未来的HTM

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么? HTML是什么? 如何运行HTML文件? 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关  项目合作管理相关  后话 前言 本系列的博客将分享前端HTML的相关知识点。 本篇作为本系列的第一期博客,主要讲解H

【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】

Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? ​编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序和有序列表 ​编辑 任务清单 插入链接和图片 内嵌代码和代码块 表格 公式 其他 源代码 预

【H2O2|全栈】关于Photoshop | PS(4)

PS的一些杂谈(亖) 目录 PS的一些杂谈(亖) 前言 准备工作 图形工具 基本属性 混合选项 形状图层  文字工具 基本属性 进一步变化文字 组和图层 UI设计案例  预告和回顾 后话 前言 这一篇博客我将会写一下图形工具和文字工具有关的内容,涉及到锚点调节路径、自由变换和混合选项等内容。在本篇博客看完之后,是可以设置一些简单的LOGO和UI图标的。

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所