看到帖子里好多都是10+以上的全栈人才,所以想开一贴一起讨论下,你们所认为的全栈应该包含哪些技能呢?
从CS到BS,从windows到linux|macOS,从原生JS到VUE|REACT|FLUTTER,从TCP|UDP|MQTT到自定义报文,从ACCESS到RDBMS再到NOSQL,从LAN到WAN|SD-WAN|4G-AT,从本地到服务器|集群,从局部参数配置到OS内核优化调整,从运维到安全、从黑|白盒到冒烟|回归|安全|性能测试等。是否只要会前端VUE(不会原生JS)+后端开源项目GO|PYTHON|PHP|JAVA中的一个,就可以称全栈了呢?
讨论话题:
会全栈的都是牛马,或者当牛马的时候练出来的
我也是牛马
悲哀
如果涉及上述90%的,国内行情,个人看法,就应该转行了,不要再盯着技术,而是拓展业务,把技术给变现了
前端:js + vue
微信小程序
APP:Android原生(java&Kotlin)+Flutter双端
后端:Python或java
桌面端:winform
嵌入式:C++
目前是这一套技术栈,感觉现在靠AI,对于有些年头的开发者变成所谓的全栈还是比较容易的了
最后修改于
好像还少了数据库存储(SQLite、RDBMS);
AI除了大公司有实力(资金、资源、算法)外,剩下大多为套壳(外面加个restful api);AI可能只是方便查找(代替某些搜索入口),想要完全覆盖场景,在有线的资源下,不一定能够达到;否则prompt就要足够复杂以覆盖全场景,有这时间,可能自己通过相关文档等就已经解决了;
我来啦,我一般假装自己是 web 全栈【狗头保命】,因为我会写 web 前端和后端,移动端 app,微信小程序,对我只给微信写过小程序。
当然也技术方向也很小,
web 前端
比如,前端大点,如从 HTML、CSS、JavaScript 到 React、Vue、Angular 等等。到如今我主做 React 方向的,当然就最熟悉 Next.js 框架,熟悉这个框架的方方面面,我从 Next.js 12 开始用的,一直追着升级到现在的 15,早期是 Pages Router, 现在只用 App Router, 里面的路由,缓存,session, 认证,错误处理,图片组件,服务端组件,客户端组件,ISG, SSG, 导出为静态项目,Route Handler, OG 图片,Metadata,阻止客户端组件的预渲染,中间件,sitemap,favicon 唉嘛,就差跟 Vercel CEO Guillermo Rauch 坐下聊天了。妥妥成了一个框架 boy。当然纯 SPA 就用 Vite 初始化 React 项目。但这也不舒服,路由又是自己捯饬,又想用 Tanstack Router, 但又怕新人不会用,还纠结 tanstack 已经有 Tanstack Start 框架,唉嘛,好东西学到死都学不完。 Remix? 脑子里装不下了,实在装不下了。
Vue 这边很久没写了,写东西老得扫扫文档。Nuxt? 那个绿绿的文档看着太刺眼了,硬看硬看,看点基础的就能上手玩玩。没深入玩过方方面面。
Astro, Solid.js, Svelte 这些我只捯饬过些 hello world, 看过些视频,没见人在实际项目中用过。你看那什么 Runes 让 Sevelte 怎么样怎么样,island 让 Astro 怎么样怎么样,学不完学不完。
web 后端
再说 Web 后端,这除了 Node.js 这边的 Nest.js, Express.js, Koa.js, Egg.js, ThinkJS 还有呢?实际工作中我只用过 Nest.js 和 Express.js, 其它也是自己玩玩了解了解。
而 PHP 这边,我最熟悉的就是 Laravel 框架啦,跟熟悉 Next.js 一样,但还是,这个框架功能太太太多了,我熟悉的再多应还是不到皮毛,基础的路由,controller, model, migration, db seeding, 跟前端搭配的 starter kit(React 版), 还有 Spatie 家的 Laravel permissions, laravel media 啦,Laravel Cashier, Laravel Socialite 非常好用,人家写的这框架,就是非常非常好用,我只会用,就像我只会做红烧肉,但不会养猪。还熟悉早期用 Laravel 写的时候的 blade 模版,现在即使要 SEO 都不再用这个写用户端了,因为性能啦还是差那么一点。 做微信 h5 开发就要用 easywechat, 好用,不需要手动捯饬那个签名流程。
像 webman, 我太懒了,不爱一个功能一个功能安装,试过 webman,的确类似的写法,更大的吞吐量,但文档不漂亮,快赶上 thinkphp,uniapp 了,实在想提点 laravel 性能我就启动 frankenPHP 哈哈哈哈。。。 但其实只要用好 Laravel start kit,根本没有整页刷新,我连 loading 状态都不用加,体验起来是非常快的,取些数据你再慢也一秒内,超一秒了好好想想看看哪里没写好。
数据库
而数据库这边,我很早用过 mongodb 了,就在 compound.js 里用过好像,后来再没用,因为总要体现出数据间的关系,后面主要用的 MySQL。而其实我一直用的 ORM, 如最早的 Squelize.js, 再到后来用 Prisma.js 的 ORM 连接 PostgreSQL,或用 Laravel 的 Eloquent ORM 连接 MySQL, PostgresSQL 或 Sqlite,对我来说都没有特别的区别。只有有一个存了个什么 jsonb 的 PostgresSQL 里。可能因为我许多做法并不需要特定数据库,如我不在数据库层做枚举,哈哈哈,,那样加个类型又要迁移数据库,哈哈哈,,还是把枚举做到应用层。当然这也是从 Jeffrey Way 视频里学的。我看过他的许多视频,什么 learn php in 30 days, laravel bits, 还有另一个人的 Laravel news 的文章与视频。框架作者 Taylor Otwell 似乎很少录视频教程。
iOS 和 安卓 app
移动端 app, 我仍算是死守 React Native 派哈哈哈,,因为我在 Expo 出来时就开始用 Expo, 他们把这个 SDK 打造的非常稳定好用我不需要我折腾太多,而且他们完善了 iOS app 的打包签名上架(或进 TestFlight) 的流程,而且没强制消费,云端打包排队太长我本地打一样的,打完发上去,TestFlight 里一装,完美,超快测试。不是非要在 XCode 里点来点去点得人头晕目眩,太多步骤,烦死了。
最后打包个安卓版的,让产品经理慢慢一个一个商店上架去,他们去捯饬国内每个安卓商店的审核啥去,步骤太多还各种各样。
Flutter 我只练习过官网的几个例子。
微信小程序
微信小程序我从 WePY, 用到 mpvue, 试过 uni-app, 再到最后持续使用 Taro 2 再到 Taro 3, 最终就决定只用 Taro 3 就够了。我还做过对比,你看: https://github.com/shrekuu/mp-frameworks 你会发现,哇小程序框架可真多呀。其实纯框架最好用的应是支付宝做的那个 Remax 哈哈哈,但用的人太少了可能,生态不够大。生态? 就是没有足够多的 UI 组件库好吧。
TailwindCSS Yes!!!
CSS 这边要说嘛? 那说说,自从 TailwindCSS 出来我好像就基础不再写纯 CSS 了。更早时练习 Less, Sass 那时痴迷于 Sass 各种语法,特别喜欢的嵌套,光用嵌套就跟 HTML 结构对应起来,一个组件一个 css 文件,那时就比较好维护了。但你看现在, 不管网页,移动端 app 还是小程序,我都能把 TailwindCSS 整进去,甚至写 HTML 邮件我都能整进去,因为实在是太好用了,不用离开 HTML/JSX 就能控制样式布局,不用想哪里对应哪里,真的是太好用了太方便了。当然对 CSS 本身不熟悉的人可能没法脑补好那些 class 对应的 css。
Docker?
其它呢? docker? 我只会简单的 docker file, docker compose 文件编写,只会部署这个 Next.js, Laravel 项目,用些 nginx, chailab 的 PHP(版本多,打包了常用的扩展),还在多个机器上跑过 docker Swarm(跑完就看到人家说 Swarm 已死,我摔!),没有玩过 k8s。
Mac 上有些软件装起来真是气死人,如 ffmpeg 这个竟然要一万个依赖的样子, homebrew 装到天荒地老都装不完,只好在 docker hub 上找镜像用。
podman 只知道对比 docker 没有守护进程,也可以不要 sudo, 其它不清楚。没有上手玩过。
软件?以前因为要一起写 PHP 用的八国联军付费版的 PHPStorm 后来从 VSCode 出来就一直用这个 VSCode 宇宙最终 IDE. 现在自己花钱买 GitHub Copilot 辅助辅助。
最后修改于
感谢一起讨论。
web前端:早期时何等的纯粹,干净。原生js->jquery->angular->vue|react,原生的自己写http server就可以解析,到现在的导入一堆小文件(因为路径原因,手工删除文件时会失败),真正的所见即所得,一个记事本即可;个人观点,有没感觉现在前端越来越重,前端想一统江湖,直接业务处理、操作数据库?
web后端:语言没有好坏之分,即然存在就有它存在的道理。根据自己积累,深入掌握1~2种即可,没必要全部,总会诞生出新的语言,用的时候再看官方文档,应该也会很快掌握。
数据库:根据实际业务进行选型即可,我们最终的数据都会落入文件(数据库),能在数据库处理的,尽量在数据库处理(不谈存储过程)、或者高效的SQL进行处理,否则网络交互传输也需要时间
app:主要看app类型,如果是工具类(跟硬件设备交互)的,尽量用原生的开发,有些特殊硬件厂家提供so|lib库,有的可能需要你自己去写so库,网络通讯这块只要不是自定义报文协议,就相对简单些。如果app就是一些内容展示相关,则可以考虑使用所谓的跨平台开发。
我有Skynet Lua的需求,可以聊聊,可远程,报酬可谈
你在创业公司工作个几年,当然一定要注意多跳槽。我自己就是,刚开始干web,vuejs,reactjs,后面跳槽搞ios flutter,再跳槽搞后端,负责人,架构师……,技能来自于经历,经验来自于工作。