注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

Demo体验

Demo体验

场景Demo,开箱即用
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有

项目经理训练两年半,我决定回归做程序员了

23年因一次机缘巧合,我从程序员转岗为项目经理。这之前,我已在程序员岗位摸爬滚打了近5年,当时的自己似乎已经看到了技术生涯的天花板,尤其是前端和 Web 开发领域,那把35岁“达摩克利斯之剑”仿佛始终悬在头顶。于是,我头也不回地扎进了项目管理岗位,远离了熟悉的...
继续阅读 »

23年因一次机缘巧合,我从程序员转岗为项目经理。这之前,我已在程序员岗位摸爬滚打了近5年,当时的自己似乎已经看到了技术生涯的天花板,尤其是前端和 Web 开发领域,那把35岁“达摩克利斯之剑”仿佛始终悬在头顶。于是,我头也不回地扎进了项目管理岗位,远离了熟悉的编辑器、代码与熟悉的团队。


回过头来看,疫情以来,互联网行业确实进入了大规模收缩期,程序员裁员新闻频繁爆出,我一度还庆幸自己的选择:“看来转岗是对的?”


可两年半后,在项目管理岗位上逐渐摸索成长,我却越来越清晰地看到“真实的自己”——可能我对工作的真正热情依然在于编程、在于技术。


一、认“真”与乌托邦


如果二十岁出头的年纪,还可以坦然地追求理想、抱着点乌托邦的情怀,倒也无可厚非。但三十岁左右,面对现实生活压力,似乎早该学会“世俗圆滑”,甚至当一个愤青、表达不满,都会被人视作“不知所谓”、“单纯幼稚”。


然而,每次试图“再忍忍”,内心总会不平静,耳边总回响起中学时代背诵的诗句:“竹杖芒鞋轻胜马”、“三十功名尘与土,八千里路云和月”、“穷且益坚,不坠青云之志”……想想,也不过就是从头再来?


以前我一直认为“认真”是个褒义词,但现在别人一提起“认真”,心里就会一阵不适:



  • 认真=负责? 那是做好牛马的前提,是被消耗的好耗材。

  • 认真=老实? 脾气好、有教养,最适合被人拿枪使。

  • 认真 vs 苟着? 难道想要站着把钱挣了不成?


在项目管理工作里,我再也感受不到编程带给我的那种纯粹、干净与安静。很多时候,大环境之下个体无法改变什么,哪怕你再坚持原则,也不强过如“铁笔换木枪”,一瞬即逝。


所以,我最终还是决定回归代码,至少在技术世界里,纯粹依旧值得追求。


二、开源精神与自由


做项目经理时,我学习了 PMP,了解了职能型和矩阵型组织结构。现实告诉我,矩阵型的项目管理在落地执行时往往演变成职能部门之间的推诿扯皮,“要发展就要搞关系”似乎已成为铁律。


与之相比,代码世界却截然不同。编程圈的开源精神是开放的、普世对等且包容的,它不拘泥于等级资历,这才是它真正迷人的地方。这种去中心化的世界,能够带给我们真正的自由感。


正因如此,我更加明确地感受到,自己真正热爱的、追求的依旧是编程,是技术带来的自由与纯粹。


未来,不论环境如何变化,我都会坚定地回归代码。


立此帖为证。


作者:掘金安东尼
来源:juejin.cn/post/7507908812599296035
收起阅读 »

短信为何没落?

短信,从曾经的日常对话,变成了今天只在收验证码、收通知时才偶尔想起的工具。我们不再用它聊天,但它却以另一种方式,继续默默留在了每一部手机里——像一条永不熄灭的应急通道,安静又顽强。 为什么传统短信衰落了? 我想,原因显而易见: 体验落后:纯文本,沉闷乏味,与...
继续阅读 »

短信,从曾经的日常对话,变成了今天只在收验证码、收通知时才偶尔想起的工具。我们不再用它聊天,但它却以另一种方式,继续默默留在了每一部手机里——像一条永不熄灭的应急通道,安静又顽强。


为什么传统短信衰落了?


我想,原因显而易见:



  • 体验落后:纯文本,沉闷乏味,与今天充满表情包、短视频的社交体验格格不入。

  • 安全问题:垃圾信息与钓鱼链接充斥,带来隐私泄露和金融诈骗风险。

  • 替代者崛起:OTT应用(如微信等即时通讯)越过运营商,构建了更强大且丰富的通讯体验。



一句话总结:自第一代iPhone发布以来,短信从未进化过。


但近两年,5G消息的概念强势崛起:试图“复活”短信。


它被认为是短信的升级版,是一种长得更好看的短信,支持文本、图片、音频、视频、定位、支付、卡片应用等丰富媒介内容,如图。它试图成为新的“杀手级应用”,补齐传统短信缺失的智能与体验。



但问题来了 —— 对用户来说,这些体验在APP应用里早已稀松平常,“了无新意”。。。5G消息远远谈不上颠覆,只是跟上了过去的潮流。


思考


这里想问大家一句:短信最大的优势是什么?


—— 我认为可能是有一点:那就是 “强推送“ 。即只要拿到了手机号,不管你愿意不愿意,就能给你发短信!


—— 这个可以是正向积极的、比如,如果在地震台风来临时,谁也不想错过“被强推送”一条预警消息。或者:你订阅了关注金价走势的服务,每天早上9点,直接推送一条金价信息,也不会让人太反感尔尔。


—— 也可以是负面消极的,比如消息轰炸、低劣推销、骚扰信息的等。



本瓜认为:真正的变化不应该是“形式”,应该发生在基础设施层



现在的消息生态,并不是单一平台控制的,而是:运营商、手机厂商、MaaP平台、AI服务商、HUB厂商、SDK厂商、企业用户等多方共建。


多方参与虽然打破了垄断,但也带来了潜在的协调低效与体验分裂问题。



移动互联网的成功经验告诉我们:轻应用,才是黏住用户、构建生态的核心。


1、对用户而言:免安装、免更新、即用即走、无缝切换。—— 是好的!


2、对开发者而言:开发简单、成本低、快速迭代。—— 也是好的!


在App平台上,代表性的轻应用是小程序。而在5G消息体系里,对应的是Chatbot(聊天机器人) 。—— 就有点像把如今火爆的智能体加入到短信里。


虽然聊天机器人前端看似简单,但背后隐藏着巨大的开发挑战:不仅是UI,而是要设计对话剧本、逻辑分支;还有自然语言输入不确定,需要NLP、NLU技术精准理解;需要训练、调优,否则容易出错让用户失望等等。


对企业来说,想开发一个成熟Chatbot的难度和投入,远超表面。所以,这也是为什么现在你还没有开始在短信界面呼起各类机器人/应用。


未来企业很可能同时包含:



  • App:重应用,沉淀核心用户。

  • 小程序:轻应用,覆盖广泛场景。

  • Chatbot:对话应用,增强即时服务与主动触达能力:智能客服、营销互动



问题又来了: 要支撑这样分散、灵活、快速演化的格局,需要怎样的基础设施?



可能需要一套完善的 沙箱计划:即允许应用以轻量方式接入、运行、管理,同时保障数据隔离、安全合规。


作者:掘金安东尼
来源:juejin.cn/post/7503462035272073266
收起阅读 »

纯血鸿蒙 璀璨星河

华为最近可谓是加班加点,前段时间华为给出了鸿蒙系统的计划表,让大家都摩拳擦掌,想看看华为到底有几把刷子,这次的621HDC大会,就是华为给全世界的第一个交待。 最近在网上经常流传着这样一张图:大体意思就是:根据Counterpoint Research报告显示...
继续阅读 »

华为最近可谓是加班加点,前段时间华为给出了鸿蒙系统的计划表,让大家都摩拳擦掌,想看看华为到底有几把刷子,这次的621HDC大会,就是华为给全世界的第一个交待。


最近在网上经常流传着这样一张图:
image.png
大体意思就是:根据Counterpoint Research报告显示,今年一季度,鸿蒙在中国市场份额为17%,而苹果的iOS为16%。这意味着,鸿蒙在中国市场首次超越iOS,成为中国市场第二大智能手机操作系统。


这张图呢,可以说没问题,但也有问题,具体是什么问题呢,我们后面再说。


首先,我们要先来了解下,什么是「鸿蒙」。


对于一般用户来说,当前对鸿蒙可能没有什么概念,因为现在的华为手机上,跑的就是鸿蒙系统,但此鸿蒙,非彼之鸿蒙,当前市面上的所有在售华为设备,运行的都是「基于Android系统的鸿蒙系统」,也就是说,图中的鸿蒙系统,实际上就是华为的基于Android系统修改的鸿蒙系统。所以这图中的操作系统对比,实际上就是在偷换概念,这其实就是华为设备的占比。


那么为什么现在还在炒作什么国产新系统呢?这不妥妥的套壳吗?确实,现在的鸿蒙还是在套壳,但是今年以后的鸿蒙,可能就不是了。


这就是我们今天的主角——纯血鸿蒙。



鸿蒙采取的策略,实际上和当初的Android类似,先以Android系统为底,建立华为生态和用户群,再通过建立全新的操作系统,来和Android割裂,完整的建立自己的生态。



所以,现在的纯血鸿蒙,实际上就是「HarmonyOS NEXT」系统,这个系统,与现有Android系统完全不兼容,属于一个完整的自建操作系统,再也不是套壳了。


根据我多年的鸿蒙开发经验(特别是这3个月的),纯血鸿蒙确实博采众家之长,有点东西。


其实,做一个操作系统不难,难的是做一个生态,华为的投入可谓空前巨大,从开发工具链到社区,从硬件设备到软件开发,整体的投入都是前所未有的,这也体现了高层,对国产操作系统的信心和决心。


虽然现在纯血鸿蒙还处于初级阶段,但带着发展的眼光来看,确实是极具潜力的,根据我的经验来看:



  • 渲染系统吸取了各大平台的特点,这么多年以来,各大渲染体系该踩得坑都踩完了,现在华为可谓是一将功成

  • 响应式开发体系也做了很大改进,但是感觉设计有些过于复杂,颗粒度太细,上手成本较高,同时由于现在开发API还不稳定,变动较多

  • 开发生态逐渐完善,和苹果类似,华为又做硬件又做软件,所以它自己可以很方便的整合自家资源,它绝不仅仅是一个操作系统,更是一个生态平台,可以融合自己的AI大模型、多端平台共享、多端接续等等生态功能

  • 开发语言包容性强,js、c、TS、ArkTS、dart、kotlin等等不同的语言生态,都有社区对鸿蒙的支持,这些社区中,有很多都是华为的开发人员,在帮助社区共建,所以,各个不同的平台系统,都可以很快的用自己的技术栈,接入鸿蒙系统

  • API很丰富,但也是一把双刃剑,华为在对接很多开发者,为他们提供了很多便利的API,但是也由于快速迭代,API的设计可能缺少深思熟虑,有些API会有些冗余、随意

  • 整体架构来说,有很多Android的影子,也借鉴了很多Flutter的渲染机制,开发者在开发的时候,总能不在意的会心一笑


621之后,纯血鸿蒙中会有大量的APP上线,基本已经涵盖了日常使用功能,作为开发者,我们来看看这些常用的APP,看下它们都是用的哪些技术栈进行开发的。


Screenshot_20240621102104400.jpegScreenshot_20240621102132997.jpeg
Screenshot_20240621102240537.jpeg
Screenshot_20240621102352584.jpegScreenshot_20240621102402095.jpeg
Screenshot_20240621102422429.jpeg
Screenshot_20240621102437862.jpegScreenshot_20240621102447012.jpeg
Screenshot_20240621102500363.jpegScreenshot_20240621102510978.jpeg
Screenshot_20240621102524579.jpegScreenshot_20240621102535512.jpegScreenshot_20240621102545314.jpeg
Screenshot_20240621102609562.jpegScreenshot_20240621102622761.jpeg
Screenshot_20240621102641945.jpegScreenshot_20240621102656395.jpeg
Screenshot_20240621102713911.jpeg
Screenshot_20240621102735295.jpeg
Screenshot_20240621102750312.jpegScreenshot_20240621102804860.jpeg

这里我找了市场中已经上线的一些典型APP,利用纯血鸿蒙的开发者选项中的布局边界,来大致揣测下它们的技术方案。


从业务形态上来看,这些APP大致分为几种:



  • 信息流:这类的APP,其实就是纯粹堆UI,大部分都利用ArkTS进行开发,只要熟悉ArkTS语法,开发难度不大,但需要堆人力,因为很多组件都需要从零开始开发。

  • 自渲染:这类的APP,以视频、小说类为主,这些APP相对来说比较复杂,但是视频类,相对来说会好一些,比较大部分复杂的音视频处理,都在C层时处理了,所以上层业务,提供鸿蒙的适配方案就行了,而小说类的,文字渲染相关的API和刷新方案,都需要重新按照鸿蒙的架构思路来重新实现,所以开发难度会大一些。

  • 跨平台:通常基于Flutter的方案来实现,这里的典型就行闲鱼,现有业务可以直接移植过来,只需要在Channel层适配即可,如果公司当前有Flutter架构,那这是适配鸿蒙的最快方案。


总的来说,当前纯血鸿蒙的设备已经支持高刷,各大应用的完成度也很高,同时,由于时间紧任务重,很多营收类需求都没做,比如广告,所以这个版本应该是非常「纯净」的版本了,整体质量和体验都非常好。


当然,不得不说,现在的纯血鸿蒙依然是初级阶段,现在不管是开发上还是系统上,都还有很多问题,不过,正如那句话说的——「没有人能够熄灭漫天星光,每一位开发者,都是华为要汇聚的星星之火」。


image.png


欢迎大家关注我的公众号——【群英传】,专注于「Android」「Flutter」「Kotlin」
我的语雀知识库——http://www.yuque.com/xuyisheng


作者:xuyisheng
来源:juejin.cn/post/7382892371224494120
收起阅读 »

鸿蒙 PC 发布之后,想在技术上聊聊它的未来可能

最近鸿蒙 PC 刚发布完,但是发布会没公布太多技术细节,基本上一些细节都是通过自媒体渠道获取,首先可以确定的是,鸿蒙 PC 本身肯定是无法「直接」运行 win 原本的应用,但是可以支持手机上「原生鸿蒙」的应用,细节上无非就是 UI 兼容下大屏模式的支持,比如下...
继续阅读 »

最近鸿蒙 PC 刚发布完,但是发布会没公布太多技术细节,基本上一些细节都是通过自媒体渠道获取,首先可以确定的是,鸿蒙 PC 本身肯定是无法「直接」运行 win 原本的应用,但是可以支持手机上「原生鸿蒙」的应用,细节上无非就是 UI 兼容下大屏模式的支持,比如下图是来自 差评XPIN 的鸿蒙 PC 截图:





那么问题来了,HarmonyOS 「卓易通 」 作为生态过渡的丰富支持,甚至在应用商店都可以无缝衔接,那么鸿蒙 PC 是否也可以有类似的场景?



因为目前得到的消息是,鸿蒙 PC 不支持侧载 ,这个结论我也不保熟,只是在这个大条件下讨论,那么 鸿蒙 PC 是不是也可以有个 「W易通」?技术上是否可以支持?



当然,你要说鸿蒙 PC 和鸿蒙手机,本质它们是同源的,App 之间互通理论上没毛病,从这个角度看,好像又支持侧载?


1a187a9eafc3edd514f8e310f5ec8d3b.png


那「W易通」?技术上是否可以支持?答案上还真可以,从某些媒体上说的,通过定制 Wine 来兼容已有的 win 软件,这个或许是一条可行的路,但是其实我也并没有找到官方下图的说法和出处,但是不妨碍我们讨论可行性。



Wine 这个名字本身就揭示了它核心特性:“Wine Is Not an Emulator”(Wine 不是模拟器),它其实已经被应用很久了,例如:



  • Steam Deck 和 Proton,就是那个 Steam 的掌机,它用的就是为极致游戏定制的 Wine ,Proton 是一个为 Windows 游戏能在 Linux 上流畅运行而深度定制和优化的发行套件

  • CrossOver 和 Whiskey,在 macOS 上运行 win 游戏,也是 Wine 的定制


所以 Wine 确实是一个可行的途径,Wine 在实际场景里主要是充当一个兼容层,实时地将 Windows 应用的 API 调用转换为宿主操作系统(如 Linux 或 macOS)能够理解的等效 POSIX 调用 。


当然,这种设计也意味着 Wine 的兼容性直接取决于其对 Windows API 的重实现程度,所以 Wine 的核心就是重塑 Windows API ,在某种程度上镜像了 Windows 的结构,例如:



  • wineserver:在 Windows 中主要是由内核提供核心服务,在 Wine 中会由 wineserver 在用户空间实现 ,它的职责包括实现基本的 Windows 功能,如进程和线程管理、对象管理、进程间通信(IPC)、同步原语、将 Unix 信号转换为 Windows 异常,处理窗口管理和输入事件等

  • 核心 DLL 的重实现:Wine 提供了大量核心 Windows DLL 版本,例如 NTDLL.DLL(Windows NT 内核功能的核心接口)、KERNEL32.DLL(基础操作系统功能,如内存管理、文件 I/O)、GDI32.DLL(图形设备接口,负责 2D 绘图)、USER32.DLL(用户界面元素、窗口管理、消息传递)等 ,这些 Wine 实现的 DLL 通常以 Unix 共享对象(.so 文件)的形式存在,它们可以直接调用宿主操作系统的函数


另外 还有 WineD3D ,将 Direct3D 和 DirectDraw API 调用翻译成 OpenGL 调用的核心组件 ,另外还有 DXVK 这种专注于将 Direct3D API 调用高效地翻译成 Vulkan 调用的支持。



前面的 Steam 的 Proton 也是一个针对游戏优化的 vkd3d 分支,负责将 D3D12 调用翻译为 Vulkan ,而 macOS 上或者还需要比如 MoltenVK 将 Vulkan 转为 Metal ?



当然,翻译 API 的局限性就不用多说了,还有一些依赖底层驱动支持的场景,很难在通用性上做到完美,当时理论上做到部分应用通用的场景应该可以,甚至在游戏领域反而更有优势?


当然,还有另外一条途径就是直接跑虚拟机,或者说虚拟桌面,目前已经有不少人运行成功,比如就有博主用 Os-easy 虚拟机装上了Windows 11 :




事实上 Linux 上运行 Win 虚拟机一直以来就有,用户只需选择镜像文件并完成基础配置,同样也可以在鸿蒙 PC 上使用Windows系统。


安装完成后,用户可以在鸿蒙与 Windows 系统之间便捷切换,类似切换桌面的效果,这样也算是一种场景支持:



当然,虚拟桌面的割裂感会更重,但是在通用软件场景下会相对更好,但是性能也许会更差一下?


另外,目前也挺多觉得鸿蒙 PC 就是一个平板 PC 化的场景,其实这样也算是一个趋势?类似我前段时间一直在聊的 Android PC 化支持,目前 Android 桌面化已经集齐:



  • Linux 终端控制台支持

  • 桌面模式

  • 外部显示器支持

  • 窗口多任务,最小化,多实例支持

  • 尚未明确的 Desktop View

  • 外部显示器排列和切换

  • ·····


例如下方就是 Android 下的外部显示器排列和切换支持:



最后,貌似目前鸿蒙 PC 虽然能进终端,但是不开放 sudo 权限,apt 也没有?这部分能力不知道后续是否会开放,从 PC 角度看这部分能力还是有必要的:



比如小米这个 winplay 是不是也是 wine 的定制魔改?我个人感觉,鸿蒙 pc 上游戏通过 wine 体系支持可能会比虚拟桌面更好


a723d34463601e3adb5da2daa42c024.png


那么,对于鸿蒙 PC 场景,你有什么技术方向想聊的?


作者:恋猫de小郭
来源:juejin.cn/post/7503450078159470646
收起阅读 »

这只是一罐过期了七年的红牛……

可能是临近假期,昨天眼睛乱晃时,偶然间在我的办公桌角落上发现一罐红牛。当我看到它的第一眼,就想起了很多事情。我知道它已经过期很久了,我还能模糊地想起当年隔壁部门领导送给我们的那个场景,也还能想起早已离职的同事们相处的日常…… 这罐红牛啊,过期很久咯 但当我拿过...
继续阅读 »

可能是临近假期,昨天眼睛乱晃时,偶然间在我的办公桌角落上发现一罐红牛。当我看到它的第一眼,就想起了很多事情。我知道它已经过期很久了,我还能模糊地想起当年隔壁部门领导送给我们的那个场景,也还能想起早已离职的同事们相处的日常……


这罐红牛啊,过期很久咯


但当我拿过来仔细一看的时候,才有点感慨,我知道它过期很久了,但没想到已经过期快 7 年了。也就是说,我来这个公司已经快 9 年了。作为一个2016年软件工程985本科毕业的年轻人,守在一个工厂拿着远远远低于行业平均水平的死工资,居然已经快 9 年了。我甚至敏感到与这罐红牛“感同身受”。



  • 年轻时,无穷的精力和旺盛的斗志,对未来也是无限美好的憧憬,根本不需要红牛来提神。

  • 过几年,经历越来越多的挫败和不如意,发现事情越来越不受自己控制,一罐红牛能起什么用。

  • 后来啊,感觉自己前途和命运(身体与灵魂)都不属于自己、无法掌握,一罐红牛又算什么东西。

  • 现在啊,孙连城是对的,就应该多看星星,“胸怀宇宙”,相比之下一切都是小事,红牛本来就只是用来提神的。


可惜的是,这罐红牛过期快七年了,它还能再提神吗?就和薛定谔的猫一样,不在困倦的时候去喝掉这罐红牛,我根本不会知道它还能不能提神。但是呢,我不敢喝。



  • 如果只是想要提神,再买一罐没过期的就好了。但是这罐过期的红牛,再也回不到没过期了。

    • 就像我在这工厂呆了九年,也三十多了,再也回不到二十多岁的时候了。但永远都有充满无限精力、天真稚嫩的二十多岁的小伙子。



  • 或许只是我还把它遗忘在办公桌的角落,所以它还存在;换成别人,可能早就喝掉了;或者也放过期,但是也早扔掉了;罐子可能回收利用,继续发光发热,也可能埋在哪个角落,慢慢副食氧化……

    • 会不会也偶尔觉得自己“空有一身济世救人的才华和抱负却无处施展”?像个废物不被重视。



  • 既然已经放在角落那么多年了,我也打算继续放在那里。那个不起眼的角落,只会占那么小小的一点地方,我不会在意,别人更不会在意。

    • 我不知道我还能在这里待多久,到时候我会带它走吗?可能不会了吧,毕竟它也没什么用了。象征意义大于实际,就像我也不主动联系那些没什么交集、感情不深的老同学、前同事。




过期红牛.jpg


自怨自艾啊,都知道是没用的


我觉得“最近行情不太好”这个话术,我很久没有去听了,也可能是刻意没有去关注。原因倒也简单,之前还想着说不定好好准备换个“钱多事少离家近”的工作。后来就是“我先保住这份工”,什么事情到时候再说吧。现在我多“乐观”,不管什么事,到时候再说吧。


就像也偶尔看到什么统计数据,结婚登记人数越来越少,离婚登记人数越来越多,“或许大家都还在纳闷不知道为什么呢。”


这很难的,就像我表弟刚工作 3 年,就开始在担心“35 岁危机”。未雨绸缪、眼光长远一点问题没有, 但是呢:



  • 要命的是光担心肯定是一点用没有,因为你只是担心、忧虑这个情况,并没有想到应对策略,那真正面临的时候,还是无所适从。

  • 更要命的是,不管你担心与否、忧虑与否,这个“危机”一定存在。

  • 更更要命的是,你知道,但是解决不了。

  • 就像我表妹指着我对表弟所说:“你慌什么,到时候先死的是他。”这一点毛病没有,我是没几年就 35 了,而且我到现在也没有具体应对策略。但更更更要命的是 ,我死了并不能缓解我表弟的担忧,看着我毫无办法或许更加重他的忧虑。


那我还会担心吗?偶尔吧。毕竟就像以前所说的,我与自己和解了,认清了现实,接受了平凡而普通的自己。可惜的是自己看清楚了,好像并没有很大的用处,因为似乎现代人很难作为一个独立的个体而生存。简单说起来就是"帅哥/美女与金钱"(爱情和事业)。



  • 我一个月倒还想拿个几百万呢,但是老板不给我啊?什么,我为什么不去当老板?

  • 我也想相敬如宾、举案齐眉、儿孙满堂、本枝百世,可还是单身。什么,我为什么不去找对象?


八旬老头老太太经常打电话问我:“你要好久才找对象哦”、“你结婚了我们才放得下心哦”、“我们天天焦得瞌睡都睡不着啊”……


我是很难去回应这种期盼了,甚至有时候不知道他们是真关心我生活,还是因为“你大孙 30 多了还没结婚啊,好搞笑哦”太没面子。毕竟时代不一样了,我可能不接受但可以去理解他们的老思想,但他们却不理解也无法接受我们新时代,就好像他们真的觉得想找对象马上就找的到,想换工作马上就换得到,想长生不老喝口水就可以了一样。


说多了大家都不爱听,所以我一般只会阿巴阿巴。


与自己和解?我只是随口一说


偶尔我会觉得,大部分普通人的人生经历都是类似的,只有那些真正“我命由我不由天”的少数人才的成功,比较难以复制。这也是我认为“经验之谈”大部分时候都是有效的。


可惜的是,经验之谈往往只有个结果,每个人的真正经历的细节不太一样,每个人的理解能力不太一样,时代背景也不一样,导致处理过程可能就不通用了。我说“与自己和解”之后,我的人生畅快了很多,但有些陌生的朋友来和我交流的时候,我却爱莫能助,也只能提个结论。



  • 深情是不是舔狗?没钱是不是铁废物?

  • “事前同意不代表事后同意”到底是什么原理?

  • “我只是希望你上进”到底是什么意思?

  • “我真的不想耽误你”到底是不是一片好心?

  • “我真的希望你有更好的未来”是不是真心的祝愿?

  • ……


“乱花渐欲迷人眼”,很多时候我看不明白,我就不爱看,我就做个“逃避者”,你觉得可耻关我什么事呢。这个时代到底需不需要阿 Q 精神?“只有对社会没用的废物才会想着放假,我们这些栋梁之才一心做建设,根本不需要放假。”


……


这样的生活多累啊,但是作为人的话,本来就很复杂。就像我曾以为我可以大展宏图发光发热,但是我错了;也以为自己遇到了对的人,然后又错了……


事实上,那罐红牛没有思想,我摆在那里,它就在那里,而且一直在那里。它不会开心、不会难过,也不会发表长篇大论咋咋呼呼。而且在那已经过去的8年,不管它是否过期,它都没有意识,它根本不关心,而且其实我也TM根本就不在乎它,全都是我顾影自怜而已。


或许可以试着当一罐过期的红牛?


就像我记得去年四五月的时候,各个云平台的AI大模型API或大幅度降价或者免费,我就在想能不能借助这些资源做个什么东西出来,还给好几个平台充了钱。一年过去了,但还是不知道能拿来做什么,依旧和最初的想法一样,调用各个平台API进行聊天对话而已,其他富有创造性的想法,完全没有。甚至在年初DeepSeek爆火之后,像我充钱的零一万物、智谱AI啥的,都没有特别大的声音。


或许有能力的人,先有超凡的思想,然后又脱俗的能力,所以才是弄潮儿。一年过去了,我还是没有想到能借助AI浪潮搞点什么,最多是用上了cursor并逐渐接纳了它。


但是,不管我怎么看待AI浪潮,它都会发展。就像5G、Web3、元宇宙……你不管以后对它们的定义是什么,它们都有着自己的发展轨迹,可能有的生命周期长点,有的Y轴高点,有的依旧不被很多人看好……


虽然我不是“宇宙区长”,我的生命还有那么长,“人生在世屈指算,也就三万六千天”。但就算到了35岁,也才三分之一,到目前的法定退休也才二分之一,我才进社会多少年,那后面的那些年就不过了?


或许可以当一罐过期的红牛,就默默地待在角落,世间的美好,人性的险恶,都如过眼云烟,我自岿然不动。


或许我只是想当这一罐过期了 7 年、却还没被我丢掉的红牛,可以长久在无人关注的角落,享受着自己孤独的快乐。




最后,还是分享一下我最新版本调用云平台大模型API的聊天应用,万一正好有朋友需要呢。


桌面主页面预览:


screenshot-home-desktop.png


移动端截图:


screenshot-mobile.jpg


若有兴趣,更具体内容可访问github查看:Sanotsu/SuChat-Lite


以上,感谢垂阅。


作者:小流苏生
来源:juejin.cn/post/7498292516492476450
收起阅读 »

不容易,35岁的我还在小公司苟且偷生

前言 前几天和前同事闲时聚餐,约了两个月的小聚终于达成了,程序员行业聚少离多,所幸大家的发量还坚挺着。 期间不可避免地聊到了自己的公司、行业状况以及对未来的看法,几杯老酒之后,大家畅所欲言,其中一位老哥侃起了他的职业生涯,既坎坷又无奈,饭后想起来挺有代表性的,...
继续阅读 »

前言


前几天和前同事闲时聚餐,约了两个月的小聚终于达成了,程序员行业聚少离多,所幸大家的发量还坚挺着。

期间不可避免地聊到了自己的公司、行业状况以及对未来的看法,几杯老酒之后,大家畅所欲言,其中一位老哥侃起了他的职业生涯,既坎坷又无奈,饭后想起来挺有代表性的,征得他同意故记录在此。

以下是老哥的历程。



cold.jpg


程序员的前半生


我今年35岁,有房有贷有妻女有老父母。


出生在90年代的农村,从小中规中矩,不惹事不喧哗不突出,三好学生没有我,德智体美没有全面发展。学习也算努力,不算小题做题家,因为只考了个本科。


大学学费全靠助学贷款,勤工俭学补贴日用,埋头苦干成绩也只在年级中等偏下水平。有些同学早早就定下了大学的目标,比如考研、比如出国、比如考公,到了大三的时候大家基本都有了自己的目标。而我的目标就是尽早工作,争取早日还完贷款,因此早早就开始准备找工作。

也许是上天眷顾,不知道怎么就被华为看重了(那会华为还没现在的如日中天,彼时是BAT的天下),稀里糊涂的接受了offer,没想到却是改变了后面十年的决定。


2013年,深圳的夏天阳光明媚,热气扑鼻,提着一个简单的箱子进入了坂田基地。

刚开始,工作上的一切都很新鲜,每个人都在忙碌,虽然不知道他们在忙什么,但感觉很高级的样子。同期入职的同事都比较厉害,很快就适应了工作,而自己还是没完全应对工作内容,于是下班之后继续留在公司学习,顺便蹭饭。

就这样,很快就一年过去了,自己也慢慢熟悉了工作节奏,但是加班也越来越多了。对于自己来说,为了过节点,6点是晚饭时间,9点是下班时间,12点正式下班。

平凡的日子没什么值得留恋,过一天、一个月、一年、四年都没什么两样,四年里学习到了不少的知识,也数了很多次深圳凌晨的路灯数。


作为深漂,没有遇到深圳爱情故事,也对高昂的房价绝望,于是决定回到二线城市,成为一名蓉漂。
2017年,还是和四年前一样的行李箱,出现在了老家的省会城市,只是那时的我没有了助学打款,怀里也攒下了一些血汗钱。

那时互联网行业发展还是如火如荼,前端的需求量也很大,也得益于华为公司发展越来越好,自己的华为经历很快就拿到了几个offer,选了一家初创公司,幻想着能有一番成就。


2018年底,眼看着房价越长越高,某链中介不断地灌输再不买明天就是另一个价了,错过这个村就没这个店了,也许是想有个家,也许是想着父母能到省会里一起住,拿出自己做牛马几年的积蓄加上父母一辈子辛苦攒的小十万的养老钱购买了城区里的新房,那会儿的价格已经比前两年涨了一倍多,妥妥的高位站岗,不过想着自己是刚需也不会卖,因此咬咬牙掏出了全部的积蓄怒而背上了三十年的房贷。


房子的事暂时落定了,全身心的投入到工作中,没想到老板只想骗投资人的钱,产品没弄好投资人不愿跟进了,坚持了三年,期间各种断臂求生,最终还是落了个司破人走的境地。


2020年,30岁的我第一次被动失业了,幸运的是也找到了另一半。为了尽可能节省支出,房子装修的事我们都是亲力亲为,最后花了十多万终于将房子装好了,虽然很简单但毕竟是自己在大城市里的第一套房子,那一刻,感觉十年的付出都是值得的。

背着沉重的房贷,期望能找到一份薪资稍微过得去的工作,于是在简历上优势那行写了:“可加班”。依稀记得有些HR对我进行了灵魂拷问:结婚了吗?有小孩了吗?你都30岁了还能加班吗?。我斩钉截铁地说:只要公司有需要,我定会全力以赴!


2022年,我们的孩子出世了,队友辞去了工作全心全意带小孩,而我更加努力了,毕竟有了四脚吞金兽,不得不肝。

虽然工作很努力,但成果一般,不是公司的技术担当,也不会是技术洼地。


2023年的某一天,和之前的364天一样的平淡,在座位上解Bug的我突然感觉到一阵心悸,呼吸不畅,实在不行了呼唤同事叫了120,去医院一套检查下来没发现什么大问题。医生询问是不是工作压力太大,平时加班很多?我说还好,平时也就加班到9点。医生笑了笑说你这种年轻人我见多了,都是压力大的毛病,平时工作不要久坐盯着屏幕多站起来走走。他让我回家多休息,回去后观察了几天还是偶尔会有心悸,再去了另一个医院进行检查,也是没有明确的诊断结果,只是说可能是这个问题,又可能是另一个问题。

过了1个月后,身体上的问题不见好转,我辞去了工作。


2023年末,找了一家小公司,也就是我现在的公司,工资没有涨,仔细算起来还变相下降了。

还是做的业务需求,也没有领导什么人,管好自己就行,直属上级还是个工作几年的小伙。这家公司主要的特点是不加班,技术难度不高,能做多少就是多少,前提是要报风险,领导也不会强迫加班。


就这样到了2024,神奇的是我已经很久没有心悸的感觉了,不知道是不加班还是心态转变的原因。
家里的小朋友也长大了,会说话了。我现在每天下班最温馨的的是她开着门期待我回家的那一刻,她的期盼的眼神就是我回家的动力。


公司在2024年也裁了不少人,领导也找我谈过问问我的想法,我说:我还是能胜任这份工作的。领导说:公司觉得你年级大了一些,工资虽然不是最高,但不太符合行情,你懂的。我说:我懂,可以接受适当的降薪。
就这样,我挺过了2024,然而过了一周领导走了。


2025年,我35周岁了。
现在的我已经彻底接受自己的平庸的事实了。在学生时代,从来都不出色,也不会垫底,就是那类最容易被忽略的人。在工作时代,不是技术大牛,也不是完全的水货,就是普普通通的程序员。


如果说上半生吃到了什么红利,只能说入坑了计算机这行业,技术给我带了收入,有了糊口的基础。没进股市,却被房价狠狠割了一道。


35岁的我,没有彻底躺平摆烂,也没有足够奋发进取。

35岁的我,有着24年的房贷,还好61岁的时候我还在工作,应该还能还房贷。

35岁的我,不吃海鲜不喝酒,尿酸500+。

35岁的我,人体工学椅也挽救不了腰椎间盘突出。

35岁的我,头发依然浓密,只是白发越来越多。

35岁的我,已经不打游戏,只是会看这各种小说聊以慰藉。

35岁的我,两点一线,每天挤着地铁,看众生百态。

35岁的我,早睡早起,放空自己。

35岁的我,暂时还没有领取毕业大礼包,希望今年还能苟过。

35岁的我,希望经济能够好起来,让如我一般平凡的人能够有活下去的勇气。


诸君,下一年再会~祝你平安喜乐,万事顺遂!


太极分两仪,有程序员也有程序媛:30岁的程序媛,升值加薪与我无缘


作者:小鱼人爱编程
来源:juejin.cn/post/7457567782470385705
收起阅读 »

中年程序员,看不惯大公司,去小公司了

我想多些技术传奇,但是为啥总是那么多曲折的世俗故事,这也是别扭极了。 我博客这儿有技术方案,也好多IT行业的狗血故事。盘点了一下,都快成系列短剧了。 再往前,故事更多。而且总是引发着网友的讨论,以及成千上万的关注量。 今天这个故事,讲的是我放弃了大公司,...
继续阅读 »

我想多些技术传奇,但是为啥总是那么多曲折的世俗故事,这也是别扭极了。



我博客这儿有技术方案,也好多IT行业的狗血故事。盘点了一下,都快成系列短剧了。



再往前,故事更多。而且总是引发着网友的讨论,以及成千上万的关注量。



今天这个故事,讲的是我放弃了大公司,去了小公司的故事。


刚辞职离开的公司,是超过500人的企业,不缺钱,很土豪。再之前的公司也都是几百人的公司,最次也是新三板挂牌。而现在,我却入职了一家不到10个人的小公司。


我没疯。


咋说呢?我从大公司干了十多年,又能怎样呢?无非就是混日子,混工资。但是,随着年龄的增长,这种状态还能维持多久呢?我并不想混一天是一天。


很多朋友说,你怎么不继续去大公司?目前的大环境,大公司稳定,抗风险能力强。


但是,我刚辞职的这家就是挺大的公司,其实也并不“稳定”。


我依然是修炼不够,同时不愿躺平之心游丝尚存。



上一份工作,我以为找到了职业生涯的终极归宿,因为它太契合我了。可以说,它需要我,我也需要它。


我做教育信息化10年了,从手机到平板,从客户端到服务端,从硬件到软件,从团队管理到技术方案,再到后来将人工智能融入教育领域。说实话,即便如此,我想找份称心如意的工作依然不容易。因为,一个行业待久了,技能窗口变得既深又窄。比如试卷的电子化和批阅,我就研究了3年,可以说做到了行业领先。


但是,并没有几家公司需要这类冷门的技能。


同样,公司这边也面临同样的问题:找一个经验丰富的业内人,也很难。


我需要一个平台,让我继续研究教育领域的人工智能,我有信心让他成为行业领先。而公司需要一个员工帮它打造专业领域的业务,它也有能力供给我可观的收入。


因此,我俩一拍即合。


这家公司规模大,资金链充足,福利待遇又好。我一度认为,我的职业生涯终于可以稳定下来了,这是个好平台,我立志干到退休。


但是,我错了。


有一天,突然一个同事找到我,说要跟我谈谈。


这个同事不是行政不是HR,也不是我的领导,工作上和我也没有交集。离下班还有1分钟,给我发钉钉让我下班别走。



我当然不惯着他,我问他什么事情。他回复说,等他写完代码。


我说,我还有事,要去车站接人,请尽快。


他叫我去会议室,他告诉我说,我这个岗位是因为有临时需求才招聘的,现在我把活干完了,他也能接手,我就可有可无了。


我问什么意思,要裁我吗?


他说不是,现在只有他能救我,他一句话,我就能留,另一句话,我就得走。


第一次谈话,就这么结束了。算是一个下马威。


第二天,我去找我的直属领导。我问昨天找我谈话的那个白胖子什么角色,他说的话可不可信。


领导说,一半可信,一半不可信。


可信之处在于他是新来高管老郭身边的红人,老郭对他言听计从。不可信之处是他什么都不懂,一动代码就捅娄子,根本接不了我写的AI项目。


后来,我也见识到白胖子的能力,就是特别自信,他知道fastjson是阿里的开源项目,所以它笃定fastapi也必定是阿里开源的。这一点让老郭非常欣赏,因为白胖子总是有肯定的回答。而其技术只会说:可能……也许……大概……不敢保证……


有一次白胖子专门设计陷害一个老实同事,结果得到了老郭的大力支持。这一举动让其他同事既不满又无奈,更多的是害怕。而白胖子则以此示威,更加自信。


后来,白胖子又找我谈话。


他说他不想找我,但是老郭老问,他不得不找我。


他找我的主要目的是跟我谈我该怎么被安排的问题。他说,我现在很尴尬,原因是我的工作很差。主要体现在负责的项目太少,因为目前我手头就一个从0到1自研AI的项目。


我很震惊,手敲一个从0到1的自研AI项目,而且我只报了1个月的工期,保证保质保量地完成,这还不够炸裂吗?!做完了,就是公司的自主知识产品,可以申请专利的那种!这可是一个大项目,类似的项目,我上家公司投入几十万都没干成,后来我用2个月时间做了出来,当时我还受到了集团董事长的接见。


而在这里,我分析需求做定制开发,居然被谈话,理由是活太少?!


他说,你看看别人:小张,这个月干了5件事:修改A项目首页的弹窗文案,将“你好”改为“您好”;给B项目一个500行代码的类加了35条注释;C项目实现了登录功能,代码提交量为1500行……


你说说,人家手里5个项目,而你1个项目,这是5倍的差距。


我说,郭总也这么看吗?白胖子说,当然,郭总多厉害,肯定知道5大于1,小学生都知道。


那怎么办……我问他。他说,我早就说过了,现在只有我能救你。你要有空,我们先吃个饭聊聊,合适的话,我叫上郭总再一起吃个饭……


我说,如果不合适呢?他说,我现在站在个人角度给你聊,要是站在公司角度……


“公司角度怎么样?”


“现在就可以走流程了!你个人能和法人玩得起吗?”


我说,我再想想。


后来,他又找我。



这次,我留了个心眼,打开了手机录音。他还是哪些话,基本就是打压和威胁,只不过更重了一些。


这次我跟他顶嘴了,我说要谈离职也是人事跟我谈,你既不是人事也不是我领导,你没有资格。


最后不欢而散。


回到座位后,我听到从远处传来郭总的声音:怎么这么过分……那怎么能行……简直是不像话……


次日,我已经不打算在这干了。理由是小白胖子并没有什么可怕的,这种人我见多了。但是你一个集团高管居然受制于他,这就奇葩了。


我就把录音发给了HR总监,面谈了一会儿。总监说,我们了解下情况。


我感觉这类情况很严重,没想到公司会这么对待员工。如果不是公司的意思,那么个人行为更恶劣。


结果,HR将情况告知了郭总,让郭总找我聊聊。


我原来以为只是白胖子的个人想法,因为一个花十几万猎头费聘来的大集团高管,不至于境界那么低,偏听偏信,一点技术上的判断力都没有。但是,后来跟郭总一聊发现,他的想法完全受白胖子影响。换句话说,郭就是个傀儡,他也不了解该如何工作,完全听白胖子的。也就是郭当皇帝拿工资,任命白胖子为常务皇帝干活。


郭说,现实情况就是你可有可无。如果你足够听话,我肯定会保你。如果不听话,那么他只能重新招人。


这还有什么理由待下去呢?我提出了辞职。


一开始,白胖子一派很开心,马上就批准我的辞职。后来,他们开始紧张了起来。


据说,白胖子原计划将我搞走后,引入他的认识一个熟人进来。



但是他的人来面试之后,履历不匹配,还要价太高,远超出我的薪资,公司没有同意。结果,“人傻、钱多、速来”的换人计划落空,我又被搞走了,导致AI项目无人接手了。


现在,他们赶紧启动招人,并且尽量拖着不让我走。


这个公司离职交接很快,这是几十年的传统。你一旦提出离职,不管何种岗位,是否有交接人,三两天必定办完手续走人。


但是,我破纪录了。我被卡了半个多月,愣是不给我办离职手续。一催就说,法律规定30天才能走。



这就矛盾了,前期你说我可有可无,是个可怜虫,现在又不让我走。


后来,我就催。我说没活了,还留我干什么?结果他们给我安排改bug的工作。我的AI项目识别率99%,他们测出那识别不了的1%算bug,让我修改。



改不出来,就不办手续。


搞得我都想留下来了,留下来让你们辞退我得了,还能拿赔偿。
最后,多方运动,终于办完了手续。
就在最后运维、财务、人力全部都签完字了,还是不给离职证明,说要改bug到满意为止。



从业这么多年来,没有经历这么恶心的事情。


最后,总算是走了。


一个月后,发了离职工资,金额不对。我找公司专门负责工资核算的员工,打电话不接,加微信不通过。托其他同事的关系,才要到了工资条。后来,他们居然还想问我工作上的问题。



这就是大公司,以及大公司里的人情世故。


后来,也听到很多同事的吐槽,说公司如何如何。



一入职白胖子就会鼓动新人去请领导吃饭,表示站队。我就是没有站队,导致被针对。


还有,一动代码就捅娄子的白胖子,曾经动过一次代码,结果捅了大篓子。导致集团追责,技术部全体员工都被扣了工资。因为白胖子通过口若悬河的说辞,让自己完全撇清了关系。因此部门领导扣了全体同事的,唯独没扣白胖子的。结果,同事找到了Git代码提交记录,发现完全就白胖子自己一个人的疏忽造成的。这就是“集体闹绩效事件”。但是,即便集体闹,也没什么用。


我最反感的是即便大家都知道此人横行霸道,但是大家依然无能为力。


因为这个公司太大了,管事的人太多了,导致都管不了,也改变不了。现实情况是只有老板能管,但是老板很信任他建立的体系。


如果有人把白胖子的事迹告诉老板,那老板会狠批告密者,这叫打小报告,是严重违纪。因为公司有七八个部门,大约上百人专门做人员的评价工作,他们每天的工作就是进行风气整治和文化的净化。


但是,这些部门都知道白胖子的事迹,就算都觉得不对,谁来下这个手?肯定不是自己!这是得罪用人部门的事情。那就等老板知道了,老板发了话,大家才抢着干。但是老板又不让打小报告,永远不会知道。那就是用人部门说了算。用人部门又听白胖子。


所以,最后的结果就是白胖子没人能管得了。


在一个很大的体系里,最大的成本就是管理成本,也就是让这个体系能运转的成本。得有200人做服务才能支撑另外200人能正常上下班。


我的另一个感觉就是,大公司的反应速度太慢了。


我从0到1做一个同样需求的AI项目,我在10人企业只需要1个月,在100人企业需要3个月,而在这里,可能1年都干不完。因为周边的东西太多了。会有太多的部门卡你,有功都来抢,有锅都来甩。开不完的罗圈会,写不完申请,以及数不清的明枪暗箭。咱们是技术人,不是朝堂上的政治家。


我实在是不愿意浪费时间在这些人身上,我更愿去研究AI,研究教育。


而小公司就不一样了。可以直面老板,可以直面客户,可以直面技术。行动迅速敏捷,效率高。


如今的市场变化很快,需要快速响应,需要快速迭代,需要快速试错。新模式的爆发速度,让人猝不及防。


跟着小公司老板有很多可以学习的地方,会亲历一个想法从诞生到落地,这些我全程都会亲历,这很有可能就是我的以后。


随着年龄的增长,越来越不愿意待在能养老的地方,反而愿意去折腾,去挑战。因为剩下的时间不多了。


目前入职了一家小公司,不用打卡,不用写各种汇报材料,不用请领导吃饭,同事间关系简单,老板有活力,有想法,有干劲。中午吃完饭,会去园区里走走,晒晒太阳,听听鸟叫,高效率工作,大家也经常和老板有那种面红耳赤的讨论,这在集团企业内是不敢想的,更有一种独立人的自主感。我所写的代码,客户、同事和自己都满意,这是我非常喜欢的。


我一直是跟着自己的感觉走,从不委屈自己的内心。我一个老领导生病了,心脑血管方面的问题。术后,医生不让他抽烟喝酒。后来,他轻度抑郁。医生开始让他每周不能超过2顿酒,每天不超过3支烟。他问医生,为什么现在又可以了?医生说,相比于抑郁症,抽烟喝酒的伤害更小一些。心情对人体的影响,胜过肉体的伤害。工作十多年,我几乎都是裸辞。找工作也基本不内推,走网上投简历。每次也都找的挺好,下一家总能解决上一家的问题。当然,新一家也会有新的问题,但每次都是迈上一个新台阶。干这行,能进步就好。


不委屈自己的内心,也不委屈自己的能力。一切都有解决方案,未知的变化胜过已知的不变。


期望我现在的公司越来越好。也祝原来的公司蒸蒸日上。


另外,我相信白胖子以后肯定比我混得好,甚至我相信他去另一家公司依然能混得风生水起,但是这并不影响我坚守我自己内心的信念。


这就是各有各的道。我老领导经常召集众兄弟给他帮忙,我们多数也是友情出演。他经常感慨,自己也狠不下心去干一些坑蒙拐骗的活,即便他知道别人干项目就是“要么坑客户,要么坑自己”,他也依然选择自己吃点亏。不然他也能混的风生水起。但是,也正是因为他这么做,他才能召集起来我们这一众兄弟。我们本就不是耍心机的人,因此才愿意向他靠拢。他要变了,虽然我们也很一般,那他身边该换人了。


都有各自的活法,无所谓好坏之分。


作者:TF男孩
来源:juejin.cn/post/7496709980680863744
收起阅读 »

WC!一键微信聊天记录MCP!老板监工神器!

作者:前端开发爱好者 上班经常摸鱼的小伙伴们要注意了,老板们的监工神器来了! ChatLog 是一款开源的聊天记录分析工具,能够帮助用户高效解析、可视化和挖掘聊天数据中的关键信息。 它支持从本地数据库文件获取微信、QQ、Telegram 等主流聊天工具的聊天...
继续阅读 »

作者:前端开发爱好者


上班经常摸鱼的小伙伴们要注意了,老板们的监工神器来了!


ChatLog 是一款开源的聊天记录分析工具,能够帮助用户高效解析可视化挖掘聊天数据中的关键信息。


图片


它支持从本地数据库文件获取微信QQTelegram 等主流聊天工具的聊天记录,并通过智能分析数据可视化等功能,帮助用户更好地管理和利用这些数据。


无论是个人社交分析团队协作优化,还是商业场景的客户对话洞察,ChatLog 都能提供强大的支持。


ChatLog 核心特点



  • 智能分析:自动提取聊天记录中的高频词情感倾向活跃时段等关键指标,帮助用户快速了解聊天内容的核心信息。

  • 多平台支持:兼容微信QQTelegram 等主流聊天工具导出的数据格式,满足不同用户的需求。

  • 数据可视化:生成词云时序活跃图关系网络图等,直观呈现聊天特征,让复杂的数据一目了然。

  • 隐私保护本地化处理数据,无需上传云端,确保信息安全。用户可以放心使用,无需担心隐私泄露。

  • 自动化报告:一键生成分析报告,支持导出 PDF/Excel,便于分享与存档。


如何快速使用


安装 ChatLog


ChatLog 提供了两种方式安装,一种是直接下载预编译版直接安装,另外一种就是下载源码方式安装



go install github.com/sjzar/chatlog@latest

对于大部分人来说,直接使用 预编译版 就能满足大部分需求,除非你需要做二次开发的可以下载源码本地运行


图片


执行 ChatLog 启动 Terminal UI 界面。


图片


使用 ↑ ↓ 键选择菜单项,按 Enter 确认选择,按 Esc 返回上级菜单,按 Ctrl+C退出程序。


MCP 集成指南


运行 ChatLog,完成数据解密并开启 HTTP 服务


以 ChatWise 使用 MCP SSE 为例,


在 URL 中填写 http://127.0.0.1:5030/sse,并勾选 动执行工具,点击 查看工具 即可检查连接 chatlog 是否正常:


图片


测试功能是否正常:


图片


更多 MCP 集成指南 查看https://github.com/sjzar/chatlog/blob/main/docs/mcp.md


“牛马”开始慌了?


在日常工作中,微信等工具已成为“牛马”日常沟通的重要工具。


海量的聊天记录中蕴含着大量有价值的信息,却往往难以高效利用。


图片


ChatLog 的出现,无疑为“牛马”提供了一个强大的工具,可以更高效地管理和分析微信聊天记录。


老板会不会用这个工具来分析我们的聊天记录?


随着 ChatLog 这样的工具出现,不少 “牛马” 开始担心:


老板会不会用这个工具来分析我们的聊天记录?以后摸鱼的时间是不是都没了?


图片


但实际上,ChatLog 的出现更多是为了帮助我们更好地管理自己的聊天记录,提高工作效率。


它可以帮助我们快速总结群聊内容,提取聊天记录中有用的信息,从而更好地完成工作任务。


例如:



  • 快速查找聊天内容:通过关键词搜索,快速定位到重要的聊天记录。

  • 每周工作总结:自动生成聊天记录的总结报告,帮助我们快速回顾本周的工作重点。

  • 提取关键信息:从大量聊天记录中提取关键信息,比如客户的需求、项目进展等,方便我们进行后续的工作安排。


总之,ChatLog 是一款功能强大的开源聊天记录分析工具。


它不仅支持多种主流聊天工具的数据格式,还提供了智能分析、数据可视化和自动化报告生成等功能。



作者:独立开阀者_FwtCoder
来源:juejin.cn/post/7496033842748571698
收起阅读 »

理想正式官宣开源!杀疯了!

最近,新能源汽车制造商「理想汽车」面向业界搞了一个大动作,相信不少同学也看到了,那就是: 正式宣布开源「理想星环OS」操作系统,并且欢迎各位开发者参与验证开源组件的功能和性能。 作为一名开发者和理想车主,说实话第一眼看到这个信息时还是挺意外的,万万没想到,如今...
继续阅读 »

最近,新能源汽车制造商「理想汽车」面向业界搞了一个大动作,相信不少同学也看到了,那就是:


正式宣布开源「理想星环OS」操作系统,并且欢迎各位开发者参与验证开源组件的功能和性能。


作为一名开发者和理想车主,说实话第一眼看到这个信息时还是挺意外的,万万没想到,如今汽车制造商也开始玩开源这一套了。



「理想星环OS」是理想汽车历时3年所研发的汽车操作系统,在车辆中担任“中央指挥官”这一角色,向下管理车辆硬件,向上支撑应用软件。



具体来说,「理想星环OS」包含如下四个组成部分,用于高效调度全车资源并确保汽车功能稳定运行。



  • 辅助驾驶OS(大脑):用于处理复杂的思维过程,以确保辅助驾驶又快又好地工作。

  • 智能车控OS(小脑):用于控制车辆“肢体”,快速执行各种车辆基础控制命令。

  • 通信中间件(神经系统):负责车内各个模块(如刹车、屏幕、雷达)间的高效可靠通信。

  • 信息安全系统(免疫系统):负责数据加密保护以及身份认证和权限管控等信息安全的保障。


星环OS主要组成部分


早在今年3月份的时候,理想汽车CEO李想就曾在2025中关村论坛年会上宣布过,理想汽车自研整车操作系统 ——“理想星环OS”将会开源,而这一承诺终于在最近开始逐步向外兑现。



按照理想官方发布的开源计划时间轴来看,「理想星环OS」的开源将会分为三个阶段来逐步落地。



  • 第一阶段主要是开源星环OS 0.1.0版本,包含安全实时RTOS以及通信总线Lite。

  • 第二阶段开源星环OS 1.0.0版本,包含完整的智能车控系统以及智能驾驶系统基础能力,时间节点为今年的6月30号左右。

  • 第三阶段开源则将会包括完整的智能驾驶系统以及虚拟化引擎,时间节点定在了2025年的7月后。



并且理想承诺,星环OS将会采用宽松型的Apache License,既不会通过开源来收取费用,也不会干涉代码的使用方式,更不会控制使用者的数据。


按照官方的说法,第一阶段的开源目前已经正式兑现,代码已经托管于国内的Gitee平台之上。


出于好奇,我也特地去Gitee平台上搜了一下。


果然,理想汽车已经在Gitee平台上创建了一个名为「HaloOS」的开源组织,里面包含了一阶段开源相关的多个代码仓库和文档仓库。



具体来看,目前的开源代码主要是 智能车控OS(VCOS)通信总线lite(VBSlite) 两大部分,并且其开源仓库划分得非常细,文档是文档,代码是代码,配置是配置,示例是示例。



文档仓库我们以智能车控OS(VCOS)文档为例,其专门搞了一个文档仓库和详细文档说明,并且附有详细的快速跳转链接,大家可以感受一下这个文档仓库的组织风格,还是非常便于开发者使用的。



docs
├── OVERVIEW.md # 项目概述
├── README.md # 文档结构简介(即本文)
├── _static/image # 文档中用到的图片资源
├── api_reference # API参考文档
├── configuration_reference # 配置项参考文档
├── key_technical # 关键技术说明
├── porting # 芯片移植文档
├── quick_start # 快速入门指南
└── user_manual # 开发者手册与详细说明
├── components # 功能组件使用说明
├── kernel # 内核模块文档
└── studio # Studio集成开发环境相关文档

而代码仓库这一块,我们以通信总线lite(VBSlite)工程核心组件之一的MVBS代码仓库为例,仓库说明里给出了详细的代码架构组织,大家也可以感受一下。


mvbs
├── README.md # 这个是MVBS仓库的readme
├── build.mk # 用于构建的makefile文件
├── CMakeLists.txt # cmake编译脚本
├── posix_aux # 为linux和windows平台提供扩展支持库
├── include
│ ├── mcdr # 序列化接口
│ ├── mvbs # MVBS头文件集合
│ │ ├── adapter # 适配层头文件
│ │ ├── core # MVBS内部核心的实体定义和操作
│ │ ├── diag # 诊断相关的头文件
│ │ ├── rte # RTE接口文件
│ │ ├── rtps # RTPS协议元素定义文件
│ │ ├── sections # 用于支持内存layout
│ │ └── utils # 常用的工具文件
│ └── rpc # RPC头文件
└── src
├── adapter # 适配层实现
│ ├── auto # 基于VCOS 适配层的参考实现
│ └── posix # 基于POSIX提供的适配层实现
├── core
│ ├── diag # 诊断工具的实现
│ ├── discovery # 实体发现协议的实现
│ ├── entities # MVBS内部实体的实现
│ ├── include # 提供给MVBS内部的头文件
│ ├── messages # 报文组装的实现
│ ├── mvbs # MVBS内部接口层的实现
│ ├── netio # 网络接口的封装实现
│ ├── qos # E2E和WLP的实现
│ ├── storages # CacheChange和History的实现
│ ├── transport # Transport的实现
│ └── utils # 常用工具的实现
├── mcdr # 序列化库的实现
├── rpc # RPC的实现
└── rte # RTE接口的实现

再看一下具体代码,函数和代码组织都比较宽松,是我个人比较喜欢的风格,另外关键步骤或关键字段设有代码注释,阅读起来也便于理解。



并且仓库里还给出了非常详细的快速入门开发者手册,内容我看了一下,内容甚至从安装 git-repo 工具开始,确实给得非常详细。



追了其中几个比较核心的代码仓库后我们会发现,这几个核心项目源码都是基于C语言来实现的,这也再次说明了 C 语言在某些关键系统中不可撼动的核心地位



大家感兴趣的话也可以上去学习学习相关的代码,研究通了以后想进新能源智能车企做核心系统研发那不就是分分钟的事情了。



众所周知,这两年新能源智能汽车领域的竞争也进入到白热化阶段了,各家新能源车企都在不断地进行产品优化和技术摸高,这个趋势在未来很长一段时间内想必还会继续保持。


按照理想官方的说法,此次开源的主要目的是促进行业合作,旨在破解行业“重复造轮子”的困局,同时通过生态的共建来实现车企之间、车企与其他厂商之间的互利共赢,最终普惠到每个用户。


当然不管他们怎么去说,作为一名开发者我们都清晰地知道,开源的背后其实也是生态的建设和博弈,说实话这一步,理想在新能源车企阵营里走得还是非常超前的。


最近这两年,我自己一直都挺关注新能源汽车市场的,线下也试驾和体验过诸多品牌的新能源汽车产品,也切实感受到了这几年技术和产品的飞速迭代。希望国产智能新能源汽车能持续崛起,为用户带来更多技术普惠和感动人心的好产品。



注:本文在GitHub开源仓库「编程之路」 github.com/rd2coding/R… 中已经收录,里面有我整理的6大编程方向(岗位)的自学路线+知识点大梳理、面试考点、我的简历、几本硬核pdf笔记,以及程序员生活和感悟,欢迎star。



作者:CodeSheep
来源:juejin.cn/post/7503810377554984998
收起阅读 »

待业的两个月,让我觉得独立开发者才是职场的归宿。

前言 今年2月中旬左右因为公司运营的问题,具体原因是缺少版权。毕竟现在的大环境有些刚性的产品,没有版权轻易入场即使可以赚钱,那么这个钱终于不是自己的。 在接到待业通知的时候,既不意外也不慌张。 不意外,是因为工作几年之后都是老江湖,公司能不能支棱起来都是很明...
继续阅读 »

前言


今年2月中旬左右因为公司运营的问题,具体原因是缺少版权。毕竟现在的大环境有些刚性的产品,没有版权轻易入场即使可以赚钱,那么这个钱终于不是自己的。


在接到待业通知的时候,既不意外也不慌张。



  • 不意外,是因为工作几年之后都是老江湖,公司能不能支棱起来都是很明显的状态。不论多大的公司,什么时候开始人力扛把子,抓考勤、搞制度,距离凉不远了

  • 不慌张,是因为从3年前就已经开始准备副业了。最近两年更是经常搞到凌晨1~2点才睡,接到待业通知的时候,被动收益已经是薪资的1.5~2倍的水平了。毕竟,给人打工终究不过是为人做嫁衣,寄人篱下罢了。


未雨绸缪


找方向


都知道短视频是红利,所以基本上短视频已经玩过了。某音现在还有1800多粉丝,头条、UC、百度家号,基本上累计粉丝也有几百个,也写出过几篇10w+的爆款文章


wechat_2025-04-21_170709_618.png


wechat_2025-04-21_170535_331.png


后来发现这个赛道并不好做,1是花费的时间和收入不成比例,2是竞品太多。想脱颖而出难上加难。


尝试过发现,还是得用自己的专业知识变现。1是轻车熟路,2是清楚获量和变现模式,相当于短视频的红海不如给自己打工写自己的App。


经常自我反思,做了那么多产品,应付了那么多需求,有多少是真的为了服务用户?有多少不过是为了应付KPI?有多少不过是满足产品经理的梦?,所以很早之前就开始研究自营产品。 第一年基本上是0收入,勉强把开发账号的688赚回来了。


后来认识了一些志同道合同僚,有想法、有技术,所以一拍即合!王侯将相宁有种乎?


对于一款成功的产品,无法满足三个核心词之一。高频、刚需,痛点,三者得一者得天下!


高频:常见的比如社交、游戏(大型网游、小型休闲)、影视、音频等。


刚需:常见的比如教育、办公打卡、宝宝起名等。


痛点:常见的比如电子衣橱、月子餐、自媒体工具


能落地


这里的能落地从两个方面阐述,1是从产品方向,2是从人的方向。如果是单枪匹马打天下,那大可不用考虑第二点。


产品维度


无论从什么角度切入独立开发者,都要想清楚产品给谁用?赚谁的钱?怎么赚?很多项目出师未捷身先死,大多数并没有找到自己的用户群体,更不用谈赚钱这件事了。


简单来说:准备好了再出发,而不是头脑发热想一出是一出。


人的维度


第一点:谋事在人成事在天,为什么要把人提出来?因为很多常见的合作都需要基于对项目的认可,如果不认可自己正在做点事情,那和打工的心态一样,混日子得过且过。这种很容易消极怠工,也容易半路腰斩


第二点:要有专业的技术能力,确保能为合作保驾护航。因为只有这样才能保障产品正常推进,保证项目平稳落地。


与君共勉


当品尝过自由的味道,大抵很难再适应被束缚的生活。 认清自己的方向和定位,找到适合方向和机遇,毕竟一辈子能够遇到的机遇屈指可数。毕竟现在的大环境,想打工都是一件奢侈的事情,更不要想提高福利待遇了,不过是痴人说梦罢了。


职场终究不过是赚钱赎身,换取早日恢复自由自身的过渡!那些在职场内卷的同行们,没必要,除非你的老板有胖东来的福利待遇。


遵守规则,方得长治久安,最后祝大家大吉大利,今晚过审!


作者:iOS研究院
来源:juejin.cn/post/7495570300123267084
收起阅读 »

程序员危矣!别想着35岁以后还能送外卖

马上35了,没想到公司没能坚持到我35岁下岗,自己先不行了。HR说,我也很想 N+1,可是老板还没来得及跟小姨子跑路,手里的钱只够买一张票给小姨子了,现在就在办公室等着大家去揍他。老板说随便揍,但是要赔医药费和管饭,他已经一天没吃饭了,只需要给他点份外卖就行。...
继续阅读 »

马上35了,

没想到公司没能坚持到我35岁下岗,

自己先不行了。


HR说,我也很想 N+1,

可是老板还没来得及跟小姨子跑路,

手里的钱只够买一张票给小姨子了,

现在就在办公室等着大家去揍他。

老板说随便揍,

但是要赔医药费和管饭,

他已经一天没吃饭了,只需要给他点份外卖就行。


想着之前领了几年的窝囊费,现在是时候反哺一下了。

于是点了2份杨铭宇黄焖鸡,给自己也点一份,

吃饱了跟老板复盘下他怎么是把公司干垮的,

顺便让他见识下我的组合拳。


结果外卖小哥出门的时候不但不帮我带走垃圾,

还脱下黄马褂往地上一扔,说脑子不干了!

我莫名其妙,

我是要找老板算账,又没惹他,他这是怎么了。

他留下三个字潇洒而去:东哥在召唤!


看到新闻我似乎理解了:


老板见我给他送去外卖很是感动,

说小王啊,以后你就是我王哥,

我有一个东山再起的计划,等我吃饱了我跟您讲,

我打断他:你的饼都喂不饱自己,还是赶紧把你王哥工资发了,

不然一会儿你身上会有很多痛点。


老板说授人以鱼不如授人以渔,

工资给你花了就没了,不如我送你一辆电动车,

刚好刚刚的外卖骑手不干了,

这正是你黄袍加身的好时机,我看好你,你可要好好把握啊!

你看你,也快35了吧?

毕业干的几个项目大部分都流产了,甚至公司都黄了。

你这简历都不好写,

怎么竞争的过应届生?

现在工作也不好找,

送外卖才是最佳职业归宿,

穿黄色衣服又不是绿色的,有什么不能接受的?

实在不行也可以穿蓝色,或者红色的,

东哥最近也在招人,我给你内推下?

好歹也算进了大厂你说是不是!

今天你请我吃黄焖鸡,兄弟我非常感动,

我要送你一辆电动车,

让你以后天天能送黄焖鸡……


等等,

我不是来揍他的吗?

怎么又被PUA了?


不过话说回来,

大龄程序员找不到工作怎么办?

外卖骑手能不能干?

东哥的召唤是不是一个机会?


经过我不依赖 deepseek 的深度思考,

得出以下结论:

程序员危矣,

外卖骑手只是商业大佬开疆拓土的马前卒。


表面上是维护外卖骑手的权益,

实际上骑手只是商业竞争中的一枚棋子。


未来低空经济下的外卖行业并没有骑手参与的环节,

无人机派送成本微乎其微,甚至一路上还能给企业带点广告收入。


如今各位互联网大哥争夺的骑手,

短短几年又会成为被抛弃的对象。

别人真正要的不是骑手,

而且分食外卖蛋糕的刀叉。


商家处境也好不到哪里去,

当年轻人都习惯了预制菜,

廉价机器人都可以胜任预制菜的加热,

无人机派送,全程无人工参与,又卫生又快。


谁说京东只能送快递了?

投入的无人机要充分利用起来啊,

超市闪送、外卖到家,对它来说无缝接入啊。

只是你点外卖不会去他那里下单这让东哥很头疼,

占据市场后,降本增效的第一步就是针对骑手,

其次就是商家,为什么商家可以用预支包官方不能呢?

官网机器人餐厅将是又一次降本增效的尝试。


当所有的成本都将被压缩为电力成本,

这收益可能不比超级电商少吧,

何况收益模式可以随时定制:

无人机空中文字广告、

取餐点对点视频广告、

用户充值黄金会员免看一分钟广告。


几年后,

曾经的外卖小哥放下手中的砖,

吃着从无人机上取下午餐,

会发现还是熟悉的互联网味道,

而自己曾经就是这外卖商业帝国最底层的一块砖……

收起阅读 »

只写后台管理的前端要怎么提升自己

本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情可以做的更好,于是有了这篇文章。 写优雅的代码 一道面试题 大概两年以前,面试美团的时候,面试官让我写一道代码题,时间单...
继续阅读 »

本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情可以做的更好,于是有了这篇文章。


写优雅的代码


一道面试题


大概两年以前,面试美团的时候,面试官让我写一道代码题,时间单位转换。具体的题目我忘记了。


原题目我没做过,但是我写的业务代码代码里有类似的单位转换,后端返回一个数字,单位是kb,而我要展示成 KBMB 等形式。大概写一个工具函数(具体怎么写的忘记了,不过功能比这个复杂点):


function formatSizeUnits(kb) {
let units = ['KB', 'MB', 'GB', 'TB', 'PB'];
let unitIndex = 0;

while (kb >= 1024 && unitIndex < units.length - 1) {
kb /= 1024;
unitIndex++;
}

return `${kb.toFixed(2)} ${units[unitIndex]}`;
}

而在此之前,是一个后端同学写的代码(说起来,后台管理系统前端人力不够后端帮忙写好像是常规操作,后端总觉得写前端简单,而我只能说你们那代码写的,一言难尽……),如下:


function formatSizeUnits(kb) {
var result = '';

if (kb < 1024) {
result = kb + ' KB';
} else if (kb < 1024 * 1024) {
result = (kb / 1024).toFixed(2) + ' MB';
} else if (kb < 1024 * 1024 * 1024) {
result = (kb / 1024 / 1024).toFixed(2) + ' GB';
} else {
result = (kb / 1024 / 1024 / 1024).toFixed(2) + ' TB';
}

return result;
}

虽然功能都一样,但是我写在面试的时候写了上面的代码得到了面试官的赞扬,也因此非常顺利的通过了面试。而如果我写成了下面的样子,估计不会有这种效果。


如何提升代码质量


想提升代码质量,最理想的是靠 code review ,但实际上这玩意在大多数公司根本就不存在。其次就只能多看看大佬们写的代码,但是一来后台管理本来就没太大难度很少有大佬,二来很多时候一个后台管理系统就一两个人负责。


还好现在有了各种 AI 工具,可以非常方便的优化自己的代码了。


还是上面的问题,看看 GPT 给的答案


// 提问:写一个工具函数,对文件大小的单位进行转换,加注释
// 回答:下面是一个JavaScript工具函数,它接受文件大小、初始单位、目标单位和小数位数,然后返回目标单位下的文件大小。

/**
* 将文件大小从一个单位转换为另一个单位。
*
* @param {number} size 文件大小。
* @param {string} fromUnit 初始单位('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')。
* @param {string} toUnit 目标单位('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')。
* @param {number} [decimalPoint=2] 结果保留的小数位数,默认为2。
* @return {string} 转换后的文件大小,带单位。
*/

function convertFileSize(size, fromUnit, toUnit, decimalPoint = 2) {
// 定义单位与字节之间的转换关系
const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
// 获取初始单位和目标单位的索引
const fromIndex = units.indexOf(fromUnit);
const toIndex = units.indexOf(toUnit);

// 如果单位不在列表中,抛出错误
if (fromIndex === -1 || toIndex === -1) {
throw new Error('Invalid units');
}

// 计算初始单位与目标单位之间的转换系数
const exponent = toIndex - fromIndex;
// 计算结果大小
const resultSize = size / Math.pow(1024, exponent);

// 返回格式化后的结果
return parseFloat(resultSize.toFixed(decimalPoint)) + ' ' + toUnit;
}

// 示例使用
console.log(convertFileSize(1, 'GB', 'MB')); // 输出: 1024.00 MB
console.log(convertFileSize(1, 'MB', 'KB')); // 输出: 1024.00 KB
console.log(convertFileSize(1, 'KB', 'B')); // 输出: 1024.00 B
console.log(convertFileSize(1, 'MB', 'GB', 5)); // 输出: 0.00098 GB

还能说什么,我只能说 NB!(经评论区提示,此段代码可能有问题,建议大家在使用AI工具时,重点是借鉴思路,直接使用代码需要谨慎~)


我现在每次写大段逻辑之后都习惯拿给 AI 看看,有什么更好的实现方式,或者用什么设计模式。AI 是非常低成本且高效提升代码质量的工具。


学会封装


一个功能用到了好多次,为什么不封装成组件?一个组件用到了好几个项目,为什么不单独写个npm包?差不多的项目创建了好几个,为什么不封装成脚手架?


你说,没时间,没必要,复制粘贴反而更快。


那你就完全没理解,这么做不一定是为了让工作更快完成,而是可以让你在年年终述职时更有话说(你就算写了一百个表单表格没有写一个脚手架更值得炫耀),如果不会写可以问问 AI。


而当你真正开始封装组件,开始写工具库了,你会发现你需要思考的确实比之前多了。


关注业务


对于前端业务重要吗?


相比于后端来说,前端一般不会太关注业务。就算出了问题大部分也是后端的问题。


但是就我找工作的经验,业务非常重要!


如果你做的工作很有技术含量,比如你在做低代码,你可以面试时讲一个小时的技术难点。但是你只是一个破写后台管理,你什么都没有的说。这个时候,了解业务就成为了你的亮点。


一场面试


还是拿真实的面试场景举例,当时前同事推我字节,也是我面试过N次的梦中情厂了,刚好那个组做的业务和我之前呆的组做的一模一样。



  • 同事:“做的东西和咱们之前都是一样的,你随便走个过场就能过,我在前端组长面前都夸过你了!”

  • 我:“好嘞!”


等到面试的时候:



  • 前端ld:“你知道xxx吗?(业务名词)”

  • 我:“我……”

  • 前端ld:“那xxxx呢?(业务名词)”

  • 我:“不……”

  • 前端ld:“那xxxxx呢??(业务名词)”

  • 我:“造……”


然后我就挂了………………


如何了解业务



  1. 每次接需求的时候,都要了解需求背景,并主动去理解


    我们写一个表格简简单单,把数据展示出来就好,但是表格中的数据是什么意思呢?比如我之前写一个 kafka 管理平台,里面有表格表单,涉及什么 cluster controller topic broker partition…… 我真的完全不了解,很后悔我几年时间也没有耐下心来去了解。


  2. 每次做完一个需求,都需要了解结果


    有些时候,后台管理的团队可能根本没有PM,那你也要和业务方了解,这个功能做了之后,多少人使用,效率提高了吗?数据是怎样的?


  3. 理解需求,并主动去优化


    产品要展示一千条数据,你要考虑要不要分页,不分页会不会卡,要不要上虚拟表格?


    产品要做一个可拖拽表单,你要考虑是否需要拖动,是否需要配置。


    其实很多时候,产品的思维可能会被局限在竞品的实现方式,而前端可以给TA更多选项。在和产品沟通的时候,你不仅是沟通页面的实现,也更能理解业务。



关注源码


说到源码, Vue,React 这些基本是每次必问,也有太多大佬们的总结我就不多说了。


除此之外,我想大家每次面试应该都会被问,你写了什么亮点的项目,困难的项目,你会说什么?哦,都是表单表格,都用 Element UI 实现的,没什么难度。那估计你面试也就到这里了。


那说什么,后台管理就这些啊?!


如果你用了 Element UI 你可以说写了什么自定义 Element UI 表单组件,Element UI 表单源码是什么原理,怎么通信的?用了 Axios 可以说 Axios 的原理,它的拦截器怎么实现的?用了编辑器 diff 那你知道 diff 算法是什么吗?用了 ECharts 那你知道他底层是用什么绘制的吗?用了 husky ?husky的原理是什么?用了Vite,它为什么快?是怎么打包的?写过插件吗?


可能有人觉得我离谱,事实上上面每一个问题都是我在面试中真实被问到的。当然,如果全部去了解,肯定不现实,每个人的精力有限,不可能每个用到的每个工具每个库都去了解原理,不过只要有一两个你去了解过,就可以在面试中引导面试官来问,要学会表现出你擅长的点


至于怎么读源码?以前我不知道,现在嘛…… 为什么不问问神奇的 ChatGPT 呢?



讲一下 Axios 源码中,拦截器是怎么实现的?


Axios 的拦截器实现基于 Axios 的核心原理,即 Axios 实例是一个包含请求和响应拦截器堆栈的对象。当发出请求或接收响应时,Axios 会遍历这些拦截器,并按照添加的顺序执行请求拦截器,以及按照相反的顺序执行响应拦截器。


在 Axios 的源码中,拦截器是通过一个 AxiosInterceptorManager 实例来管理的,它维护了一个拦截器数组。每个拦截器都是一个包含 fulfilledrejected 函数的对象。这两个函数分别对应于拦截器成功处理和拦截器处理出错的情况。


以下是 Axios 拦截器管理器的一个简化版本,展示了其核心实现思路:


class InterceptorManager {
constructor() {
this.handlers = []; // 存储拦截器的数组
}

use(fulfilled, rejected) {
this.handlers.push({
fulfilled: fulfilled,
rejected: rejected
});
return this.handlers.length - 1; // 返回拦截器的ID
}

eject(id) {
if (this.handlers[id]) {
this.handlers[id] = null; // 移除拦截器
}
}

forEach(fn) {
this.handlers.forEach((h) => {
if (h !== null) {
fn(h);
}
});
}
}

在发送请求或接收响应时,Axios 会创建一个 promise 链,并通过 forEach 方法将拦截器中的 fulfilledrejected 函数添加到这个链中。这样,每个拦截器都可以对请求或响应进行处理,然后将结果传递到链的下一个拦截器,或者在出错时结束链的执行。


axios.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
chain.unshift(interceptor.fulfilled, interceptor.rejected);
});

axios.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
chain.push(interceptor.fulfilled, interceptor.rejected);
});

在 Axios 的完整实现中,这个拦截器机制被集成到了 Axios 的请求发送和响应处理流程中。通过这种方式,Axios 可以在发送请求之前和接收响应之后,但在用户定义的 .then.catch 执行之前,插入自定义的逻辑。


请注意,这里提供的代码只是为了说明 Axios 拦截器的实现原理,并不是 Axios 源码的完整复制。如果你对 Axios 的拦截器实现细节感兴趣,建议查看 Axios 的官方 GitHub 仓库中的源码。



前端基建


当我们工作时间久了面试难免会遇到这些问题,前端工程化,前端监控,工作流,部署,性能等等。其实我们在工作中绝大部分时间都在写代码,对于这些不是所有人都有机会接触到,不过这些和所做的业务无关,是我们提升自己很好的一个思路。


技术选型


技术栈选 Vue 还是 React?Vue 选 Vue2 还是 Vue3?组件库选 ElementUI 还是 Ant Design?微前端有没有使用过?打包工具用 Vite 还是 Webpack?有那么多表单怎么实现的,有没有什么表单配置化方案,比如Formily?


对于我这种菜鸡,我这种只写简单的表单表格的人,这些都……无所谓……


image.png

不过为了应对面试我们还是需要了解下未选择技术栈的缺点,和已选择技术栈的优点(有点本末倒置…但是常规操作啦)


Vue 你可以说简单高效轻量级,面试必会问你为什么,你就开始说 Vue 的响应式系统,依赖收集等。


React 你可以说 JSX、Hooks 很灵活,那你必然要考虑 JSX 怎么编译, Hooks 实现方式等。


总体而言,对于技术选型,依赖于我们对所有可选项的理解,做选择可能很容易,给出合理的理由还是需要花费一些精力的。


开发规范


这个方面,在面试的时候我被问到的不多,我们可以在创建项目的时候,配置下 ESlintstylelintprettiercommitlint 等。


前端监控


干了这么多年前端,前端监控我是……一点没做过。


image.png

前端监控,简单来说就是我们在前端程序中记录一些信息并上报,一般是错误信息,来方便我们及时发现问题并解决问题。除此之外也会有性能监控,用户行为的监控(埋点)等。之前也听过有些团队分享前端监控,为了出现问题明确责任(方便甩锅)。


对于实现方案,无论使用第三方库还是自己实现,重要的都是理解实现原理。


对于错误监控,可以了解一下 Sentry,原理简单来说就是通过 window.onerrorwindow.addEventListener('unhandledrejection', ...) 去分别捕获同步和异步错误,然后通过错误信息和 sourceMap 来定位到源码。


对于性能监控,我们可以通过 window.performancePerformanceObserver 等 API 收集页面性能相关的指标,除此之外,还需要关注接口的响应时间。


最后,收集到信息之后,还要考虑数据上报的方案,比如使用 navigator.sendBeacon 还是 Fetch、AJAX?是批量上报,实时上报,还是延迟上报?上报的数据格式等等。


CI/CD


持续集成(Continuous Integration, CI)和 持续部署(Continuous Deployment, CD),主要包括版本控制,代码合并,构建,单测,部署等一系列前端工作流。


场景的工作流有 Jenkins、 Gitlab CI 等。我们可以配置在合并代码时自动打包部署,在提交代码时自动构建并发布包等。


这块我了解不多,但感觉这些工具层面的东西,不太会涉及到原理,基本上就是使用的问题。还是需要自己亲自动手试一下,才能知道细节。比如在 Gitlab CI 中, Pipeline 、 Stage 和 Job 分别是什么,怎么配置,如何在不同环境配置不同工作流等。


了解技术动态


这个可能还是比较依赖信息收集能力,虽然我个人觉得很烦,但好像很多领导级别的面试很愿意问。


比如近几年很火的低代码,很多面试官都会问,你用过就问你细节,你没用过也会问你有什么设计思路。


还有最近的两年爆火的 AI,又或者 Vue React的最新功能,WebAssembly,还有一些新的打包工具 Vite Bun 什么的,还有鸿蒙开发……


虽然不可能学完每一项新技术,但是可以多去了解下。


总结


写了这么多,可能有人会问,如果能回到过去,你会怎么做。


啊,我只能说,说是一回事,做又是另一回事,事实上我并不希望回到过去去卷一遍,菜点没关系,快乐就好,一切都是最好的安排。


image.png

作者:我不吃饼干
来源:juejin.cn/post/7360528073631318027
收起阅读 »

你见过的最差的程序员是怎样的?

我见过的最差程序员,差到让整个团队崩溃 作为一名在嵌入式领域摸爬滚打近十年的老兵,我见过太多奇葩程序员了。但要说最差的,非"赵工"莫属。 初见赵工 那是我从机械调剂到电子部门的第二年,公司接了个重要项目,需要开发一款基于STM32的工业控制系统。领导从总部借来...
继续阅读 »

我见过的最差程序员,差到让整个团队崩溃


作为一名在嵌入式领域摸爬滚打近十年的老兵,我见过太多奇葩程序员了。但要说最差的,非"赵工"莫属。


初见赵工


那是我从机械调剂到电子部门的第二年,公司接了个重要项目,需要开发一款基于STM32的工业控制系统。领导从总部借来一位"资深嵌入式专家"——赵工。


初见赵工时,他西装革履,一副成功人士模样。"我做过BAT核心项目,对单片机开发了如指掌",他面试时的豪言壮语,让领导对他寄予厚望。


"独特"的编码风格


接手项目的第一周,赵工就展示了他的"实力":


void Do_Something(void)
{
u8 a;
u8 b;
u8 c;
u8 i;
u8 j;
u8 k;
a=1;
b=2;
if(a==1)
{
for(i=0;i<10;i++)
{
if(b==2)
{
k = i + 1;
//do something here
}
}
}
}

没错,这就是他的编码风格——变量命名全是单字母,没有注释,缩进混乱,函数名毫无意义。当我问他这些变量代表什么意思时,他瞪了我一眼:"代码就是写给机器看的,能运行就行,哪那么多讲究?"


"高效"的调试方法


赵工的调试方法更是"高效"。有一次系统死机,排查原因时,他直接往代码里塞了几十个printf:


printf("here1\n");
if(temp > 50) {
printf("here2\n");
control_valve();
printf("here3\n");
}
printf("here4\n");

任何正常程序员都会使用条件断点或日志系统,但他偏要用这种原始方法。更可怕的是,调试完成后,这些垃圾代码常常被他忘记删除,留在生产代码中。


"革命性"的存储管理


记得有次他在处理EEPROM存储时,创造了这样的"杰作":


// 存储用户配置
void save_config(void)
{
// 直接从0地址开始写,不管有没有其他数据
EEPROM_Write(0, (uint8_t*)&global_config, sizeof(global_config));
}

// 加载配置
void load_config(void)
{
// 没有任何校验,直接读取
EEPROM_Read(0, (uint8_t*)&global_config, sizeof(global_config));
}

没有地址规划,没有数据校验,没有版本管理。当我提醒他这会导致数据混乱时,他不以为然:"又不是大型系统,用不着那么复杂。"


结果可想而知,产品一上线,用户配置经常莫名其妙丢失或混乱。


"高级"的内存管理


在一个需要处理大量传感器数据的模块中,他写出了这样的代码:


void process_sensor_data(void)
{
// 每次分配固定大小,用完不释放
uint8_t *buffer = malloc(1024);

// 处理数据...

// 没有free操作
}

这个函数每分钟会被调用几十次,内存泄漏严重。当系统运行几小时后必然崩溃。我指出这个问题时,他竟然说:"单片机会自动回收内存的,不用担心。"


我当时就懵了,这种基础常识都不懂,他是怎么通过面试的?


"创新"的版本控制


提到版本控制,赵工也有独到见解。公司用Git管理代码,他却坚持用自己的方式:



  1. 从不写commit信息,或者就写个"update"

  2. 本地修改后直接push到master分支

  3. 代码出问题了,就复制整个项目文件夹重命名为"project_backup_0415"


有一次他把整个主分支代码弄坏了,急得团队其他成员直冒冷汗。当问他为什么不用分支开发时,他理直气壮:"那太麻烦了,我一个人开发用不着那些东西。"


"高超"的团队协作


赵工的团队协作能力堪称一绝。记得有次我接手他的一个模块进行扩展,打开代码后惊呆了:


// 神秘函数
void xyz(void)
{
u16 m = get_value();
if(m > 30)
{
op();
}
else if(m <= 30 && m > 20)
{
op2();
}
else
{
if(flag)
{
op3();
}
}
}

完全看不懂这函数是干什么的!没有文档,没有注释,变量名全是缩写,函数名毫无意义。我只好硬着头皮找他问。


他却说:"代码写出来就是给机器看的,你看不懂是你水平问题。再说了,这是我的核心竞争力,如果写得太清楚,公司还要我干嘛?"


这种"核心竞争力"理论让我哭笑不得。在我看来,真正的核心竞争力是创造价值的能力,而不是制造混乱的能力。


灾难的项目结局


最后这个项目如何收场?你们猜到了。


原定三个月的项目拖了半年,客户不断投诉系统不稳定。在一次重要演示中,系统当场崩溃,客户大怒。公司损失了一个重要客户,也赔了一大笔违约金。


赵工却毫不愧疚,反而抱怨环境问题:"肯定是测试环境不对,我本地运行得好好的。"


最终,他被公司礼貌地送回了总部,项目由我和另外两位同事重构。我们花了两个月才把这烂摊子收拾干净。


反思:什么造就了"最差程序员"


回想这段经历,我总结赵工这类"最差程序员"的特质:



  1. 技术傲慢:自以为是,不接受批评,拒绝学习新知识

  2. 基础薄弱:缺乏编程基本素养,连最基础的内存管理、代码规范都不遵守

  3. 自私封闭:视代码为个人财产,故意设置理解障碍

  4. 责任推卸:问题永远是别人的,从不反思自己

  5. 短视功利:只关心眼前能跑,不考虑长期维护


这种程序员不仅技术差,更可怕的是态度差。他们像一颗定时炸弹,迟早会给团队和产品带来灾难。


与之对比:什么是好程序员


我27岁进入世界500强外企时,遇到一位让我敬佩的技术主管李工。他的代码风格截然不同:


/**
* @brief 处理温度传感器数据并控制阀门
* @param temperature 当前温度值(摄氏度)
* @return 操作是否成功
* @note 当温度超过临界值时,会自动关闭阀门
*/

bool processTempAndControlValve(float temperature)
{
// 安全检查
if (!isSensorValid(SENSOR_TEMP)) {
logError("Temperature sensor not valid!");
return false;
}

// 温度过高,关闭阀门
if (temperature > CRITICAL_TEMP_THRESHOLD) {
logWarning("Critical temperature detected: %.2f°C", temperature);
return closeValve(VALVE_MAIN);
}

// 正常温度范围
return true;
}

他的代码:



  1. 命名清晰,一看就懂

  2. 有完善注释和文档

  3. 考虑异常情况

  4. 模块化,便于测试和维护

  5. 遵循团队代码规范


更重要的是,他从不吝啬分享知识。每周五下午,他都会组织技术分享会,讲解嵌入式Linux的各种难点。正是在他的影响下,我开始自学Linux,并在28岁时开始写技术公众号分享所学。


职场启示:远离"赵工",培养好习惯


这些经历让我深刻认识到,成为好程序员不仅关乎技术,更关乎态度和习惯。这也是我30岁创业后,在培训和咨询中一直强调的核心理念。


在我的小公司里,我们有严格的代码审查制度,无论资历高低,代码必须符合规范才能合并。有位刚入职的年轻人抱怨:"写那么多注释太浪费时间了!"我给他看了赵工项目的代码和我们后来重构的对比,他立刻理解了。


好的编程习惯就像复利,短期看不到效果,长期却能造就天壤之别。这也是我从嵌入式开发一路走来的深刻体会。


结语


如果你在团队中遇到了"赵工"式的程序员,请保持警惕,远离这种技术债务制造机。如果你担心自己可能有类似倾向,请反思并改变,这对你的职业生涯至关重要。


真正的编程高手,不仅代码写得好,更能让团队变得更好。就像我在二线城市靠技术和分享积累第一个百万时所感悟的:技术能力决定下限,协作能力决定上限。


作为一个从机械转行到嵌入式的非科班程序员,我深知基础扎实和态度端正的重要性。希望每位程序员都能远离"最差",走向更好的自己。


你们遇到过什么样的奇葩程序员?欢迎在评论区分享,我们一起吐槽一下。


另外,想进大厂的同学,一定要好好学算法,这是面试必备的。这里准备了一份 BAT 大佬总结的 LeetCode 刷题宝典,很多人靠它们进了大厂。



刷题 | LeetCode算法刷题神器,看完 BAT 随你挑!


有收获?希望老铁们来个三连击,给更多的人看到这篇文章


推荐阅读:



欢迎关注我的博客:良许嵌入式教程网,满满都是干货!


作者:良许Linux
来源:juejin.cn/post/7489488440113692724
收起阅读 »

当上小组长的第3天,我裁掉了2年老员工

前言 这周末和上上公司的小伙伴小酌一杯,获悉了两则消息,一则好消息,一则坏消息。 好消息是他晋升了,当了个小组长,管了4个人。 坏消息是他需要优化掉组内一个人。 征得本人同意,本文以他的视角来回顾这个魔幻的一周。 职业之殇 20年刚毕业那会,怀着满腔热情进入了...
继续阅读 »

前言


这周末和上上公司的小伙伴小酌一杯,获悉了两则消息,一则好消息,一则坏消息。

好消息是他晋升了,当了个小组长,管了4个人。

坏消息是他需要优化掉组内一个人。

征得本人同意,本文以他的视角来回顾这个魔幻的一周。


职业之殇


20年刚毕业那会,怀着满腔热情进入了某互联网公司,成为了人见人爱的前端CV仔,一心想要造出几个叫得上名字的轮子,也幻想着某天别人称呼我为轮子哥。



good.gif


人在怀揣梦想的时候感觉总有使不完的劲,工作中捣鼓了一些轮子,也在公司内部使用了,虽然有些Bug,但瑕不掩瑜,没有哪个轮子出来就是完美的,慢慢优化就是了。

然而天不遂人愿,公司因为一些不可说的原因,业务没法继续开展,它倒闭了,算上上一份实习的公司,这已经是我干垮的第二家公司了。

后来同事们戏称:"XX,你没当成轮子哥,却成了垮司哥"

我:"..."



sleep.gif


突然晋升


23年的行情你们是知道,还好前端的中级岗位还算比较多。

是的,我又入职了新公司。

前端有十个人,只有一个领导,姑且叫B吧。

与我同一年入职的还有2个小伙伴,其中一个是C。


平淡的日子没啥可留恋的,今天就是昨天复刻。

前几天下午,B突然钉钉发消息给我,还DING了一下,让我到会议室聊一下。

当时感觉挺诧异的,平时虽然也有消息往来,但从来没有单独约谈过,难道有什么坏消息?难道要干掉我了?思绪百转千回。


进了会议室就看到B正襟危坐面对着Mac笔记本,让我做到他对面,他的键盘声时不时想起。



B:是这样子的,你来公司快两年了,这段时间你的产出也是有目共睹的,技术也不错。现在团队内人也比较多,我一个人忙不过来,因此我向领导推荐你当前端的小组长,这事你觉得如何?

我:额,有点突然,可我之前没管过人呢?

B:凡事都有第一次,而且这次你管的人也不多,我们分成两个组,一个是我带,另一个是你带。你只需要管住你底下的4个人就好。

我:那我管哪几个人呢?

B:某某某...,这几个平时相处怎么样?

我:哦哦,这几位老哥我都是比较熟,平时也经常一起吃饭什么的,还好说话。

B:嗯,你回去先考虑一下,确定了明天就会发正式通知。

我:好的。



当B说出让我到小组长的瞬间,其实我已经接受了,没啥好考虑的,毕竟我之前没当过,也跃跃欲试。

接下来的几天,因为这事开心了不少,感觉每天都不一样...



image.png


裁员广进


过了三天,周五下午,又是B找我到会议室聊。



B:通知下来,组织架构变了,角色切换得咋样了?

我:还好啊,还是在做以前的事。

B:你现在是小组长了,算是管理了,管、理需要并进。

B:组内的同事工作了解的怎么样了?

我:还好吧,我们平时工作都有交集,大概知道他们在弄什么。

B:你觉得C怎么样,我需要真实的想法?

我:C和我同一年来的,工作年限比我长,技术也可以啊。

B:C技术比你如何?

我:额,各有千秋吧,侧重点不一样。

B:C招进来的时候工资比较高,但他的工资没有匹配他的产出,你看平时他也不怎么加班,很多时候到点就走,不像其他的同事有干劲,感觉他的积极性、主动性都不怎么强。

我:听说C的媳妇最近怀孕了,父亲也因病住院了,可能比较忙。

B:我们不说理由,只管结果,上头最近在盘点人力,前端需要走一个人,这个名额我倾向落到C,你找他谈谈。公司的底线是赔1个月,不能再多。

我:但他的绩效没问题啊,不是应该n+1吗?

B:他去年Q4得的是E,今年Q1再给一个E,两个E就可以因为绩效低而少给赔偿,之前其它部门也是有这种先例,Q1的E我倾向给他背,你来操作一下,理由要写的有理有据。

我:4月就准备发年终奖了(普遍1个月),是不是发了之后再让他走。

B:不可能,就是要在年终发之前给他赔偿,你只管通知他,具体会有人事去说。

我:...



走出会议室,我的心情是拔凉拔凉的,心想:资本果然是邪恶的,充满了算计。

整个下午我都在犹豫怎么和C开口,代码都没写几行。

犹豫着告诉了他这条消息,他会不会周末就过不好。

犹豫着告诉了他这条消息,他会不会记恨我,毕竟经常一起吃饭也互加了微信好友。

犹豫着告诉了他这条消息,组内的其他同事怎么看我...


最终我还是将B的想法告诉了C,全程我没怎么敢看C的眼睛,我怕看到他失落的眼神。

没想到的是C听到这消息还很平静,只说了一句:



公事公办,好聚好散



尘埃落定


我不知道C的周末怎么过的,我也不知道C最终和人事咋谈的,但结局已注定,C肯定要走。

期间我和B也争取了。



我:C还是比较有经验的,有些疑难问题还得靠他,而且平时对待工作也是蛮负责的。

B:我们不看态度,只看结果,他性价比不高。现在的疑难问题问AI就可以了,他走了我们再招一个新人,哪怕是实习生也可以在AI的帮助下胜任工作,还解决了一半多的成本。

我:C手里还有负责的比较重要的工作怕是不好分出来。

B:这会就要体现出你水平的时候了,该怎么平稳交接,我只要一个结果,记住必须是正向的结果。管理管理,就是管和理,既要管人(管人的行为),也要理人(修理人,让他走)。在公司工作就是要以公司的利益为准。我就是一个比较纯粹的人,只对事不对人,只做对团队对公司有益的事,其他的放第二位。

我:心想:泥马,价值观都出来了,我还能说啥...



经过这事,把刚当上小组长的喜悦心情基本冲没了,有时候我在想:



人和人都是有差距的,屁股决定脑袋,不要轻信别人,也不要总是试图说服别人。




image.png


你在工作过程中会遇到哪些冲击三观的事?说出来让大家涨涨姿势。


作者:小鱼人爱编程
来源:juejin.cn/post/7487210421209186355
收起阅读 »

IT外传:老技术部的困境

它像一个锈迹斑斑的铁柱,挪了它,会立马塌一片房。不挪它,又不敢在上面推陈出新。如今是一边定钉子加固,一边试探着放一把椅子,太难了…… 年会如期进行,在今年严峻的经济形势下,公司今年的营收和利润,相比去年都有大于30%的增长。这主要得益于老板有个原则:员工要比...
继续阅读 »

它像一个锈迹斑斑的铁柱,挪了它,会立马塌一片房。不挪它,又不敢在上面推陈出新。如今是一边定钉子加固,一边试探着放一把椅子,太难了……



年会如期进行,在今年严峻的经济形势下,公司今年的营收和利润,相比去年都有大于30%的增长。这主要得益于老板有个原则:员工要比公司挣得多。也就是今年公司增幅10%,员工收入也要比去年增10%。但是,这个增长不是针对所有人,而是那些挣钱的部门


老板拉来一堆现金,在年会现场分发。张三,3万;李四,13万;王五25万。销售1部,10万;客服2部,5万……很遗憾,IT研发部,不管是团队还是个人,都榜上无名。


不得不说,确实存在这么一个现象,销售类的岗位是盈利部门,像行政、人力、财务这类属于成本部门。而研发类的岗位,则视情况而定。可以是盈利部门,也可以是成本部门。


这个技术部几十个人,其中老员工很多。这里说的老员工,一方面是指在公司待得久,入职七、八年的大有人在。另一方面,年龄也都很大,40岁的也不在少数。公司很重视老员工,常将入职10多年的立为榜样,这让新员工入职后,感到不可思议以及安全感十足。


很多技术部老人看到发奖金,都会很失落。他们说,每年都这样,热闹是别人的,和自己没关系,连保洁、保安都有个“勤勤恳恳奖”,而程序员啥都没有。干技术没有前途。


作为刚入职的员工,我了解的不是很多,不过也稍微有点旁观者的视角。


公司对于技术部很有成见。各个部门也都有意见,尤其是老板。首先体现在系统的脆弱性上,基本上每年在最关键的营销活动时,服务都会宕机。每次宕机,老板都很着急,事后想让技术部避免此类情况再次发生。而技术部每次都有理由,也会提出新的解决方案。 老板配合技术部,从云服务器改为自建机房,从自建机房又迁移上云服务。


我来公司后,经历过两次宕机。第一次是一个大型活动,技术部说本来是没事的,结果因为运营人员在活动还没结束,就登上后台去查看汇总数据。这个汇总,会导致大量实时计算,结果数据库就顶不住了,停服务也停不掉,死机后数小时才重启成功。


领导说既然是数据库差,那就买数据库。技术部讨论后,感觉不能买。买多少?如果买了之后,还出现问题,那么就会处于舆论的被动面


第二次,不算是宕机,只是限流。就是很多人来访问,将一部分人挡在外面。体现在app上是一直弹出500错误、服务器内部错误的提示。弄得营销人员都不敢推广了。来了很多人,进不了门,错失很多客源,浪费了营销成本


后来,技术部又开始总结。原因是APP在一个页面调用了12个不同的接口,而且还有一个接口被连续调用了35次。这导致数据库压力加大,直接100%。幸好禁止用户访问,才没有崩溃。


技术部总监很着急。但是这个总监是App开发出身,不了解服务端。服务出问题了,他就去找后端开发。后端开发者感觉,架构设计是你总监的事情。我就算干好了,那也是你的功劳。因此不优化是本分,优化是情分,有些消极和抵触。


让各个部门吐槽的,还有跟技术部提需求。技术部一直说活多,排不开,响应不了需求。但是,很明显多数人,看起来并不忙,也没有人加班。于是,这几个业务部门领导一碰头,发现都没有开发他们的需求。那他们忙什呢?其实需求提到总监那里,当总监去安排任务时,结果安排不下去,各个组都说自己很忙。最后,总监就向上反馈说自己部门的人都很忙。实际上,可能是几个组长很忙,忙的很烦,不愿接需求,而组员并没有事情做。


整体情况就是这样,老技术们,感觉自己很辛苦,老板也不加钱。不加钱,我没有优化系统的动力,而且你也没有具体的详细策略,出架构那不是我的职责。老板感觉技术部问题频出,系统不稳定,不愿加钱。你干出成绩我才加钱,比如做到今年不宕机,原来需要100万的成本,通过你们技术研发,成本降低到50万。这才叫成绩。


技术:不加钱,我没法努力。老板:干不好,怎么加钱? 两者陷入如此的循环。


老板为了解决技术部的问题,就经常给技术部换领导。因为你告诉老板,宕机的原因是一个接口被调用30多次,他听不懂,也没有解决方案。要钱、要人都好办,你说接口调用太多,他懵了。他只能找一个能对得上话的人去解决。技术部内部是找不出来的,他认为如果存在这样的人,问题就不会发生了。实际上,技术部里的人,都觉着自己能解决,但是前提得加钱。多少钱办多少事,否则我就静止不动,装傻充愣。


结果,就空降了很多领导,换一个不出成果,换一个还是没有起色。但是,每一任领导都会推翻上一位的设计。比如云服务有问题,那我们就自己建机房。下一任领导来了,听说自己的机房不行?我们上云服务不就解决了!这就造成技术部架构经常变,也没有什么积累。更严重的是,员工也倦了,变来变去,反反复复,再有新的改革措施,大家也不愿认真执行了


并且,在这个过程中,业务还是不断积累和发展的。这也堆积了形形色色的病态业务系统。而这些系统,只有老员工能掌握,里面的机关埋伏,根本没有文档,全在他们的脑子里。想改什么东西,复杂不复杂,里面到底怎么个逻辑,老技术说啥就是啥。你想维持生命,又不能让老员工过于动荡,否则会导致业务断层。


倒是也会新来一些空降的技术领导。所有的空降领导,都能发现问题所在。问题大家都知道,实习生都看得出来。 比如缺乏技术领导力,团队没有激励机制,缺乏考核流程,技术债积累严重,技术体系稳定性缺失,业务混乱,人员消极等等。


但新领导也只能做一些表面上的改善。比如,基层管理说员工都不听他的,多次强调要交周报,底下员工就是不交,导致自己不知道他们每周都在干什么。空降领导说,周报写不好,扣工资,看他们交不交。稳定性缺失?把稳定性纳入考核,谁写的代码不稳定,扣工资。说一直忙还不加班?压缩工期,原定10天的任务,让6天干完,这不就忙起来了。 对于系统BUG多,领导说好解决,发现bug,按照数量扣工资,肯定就没有bug了。


实际上这是一种从末端治理的方案,是对洪水的围堵而非疏通。软件系统的配合是复杂的,更需要从源头开始治理。 发现bug扣程序员的工资,属于问题倒推的行为。Bug需要界定是哪方产生的,是单纯代码逻辑问题,还是产品规则问题,还是用户操作方式问题,或者是偶然问题。领导说:那就扣所有参与成员的工资,这样大家都会紧绷一根弦,谁都会为了没有bug而努力。


另外,功能还有复杂和简单之分。一个简单的版本,比如修改个提示语,可能产生不了bug。但是,如果是一项复杂的业务,比如写一个机器人对战,可能会有很多bug。还有,考核是不是应该和职级和工资挂钩?月薪2万的人和月薪5000的,干同一项任务,是不是应该有不同的要求。领导说:有意见?有意见可以去没意见的地方工作。


这又是一个新的轮回,让过于散漫的老技术部,又开始变得剑拔弩张起来。他们将面临新的技术架构,考核体系,工作方式。至于这一轮能给公司带来什么,或许只有时间才能给出答案。


而这个老技术部门的困境,到底能不能走出来,又该如何走出来?



本故事纯属虚构,如有雷同,实属巧合。



作者:TF男孩
来源:juejin.cn/post/7470751370653499427
收起阅读 »

离职转AI独立开发半年,我感受到了真正的生活

离职转AI独立开发半年,我感受到了真正的生活 我的新产品:code.promptate.xyz/ 开场白:一个不被理解的决定 2022年12月的最后一天,我收拾了自己的小盒子,里面装着我在这家互联网公司工作的所有痕迹:一个定制水杯,几本技术书籍,和一摞写满代...
继续阅读 »

离职转AI独立开发半年,我感受到了真正的生活


我的新产品:code.promptate.xyz/


开场白:一个不被理解的决定


photo-1580927752452-89d86da3fa0a.jpeg


2022年12月的最后一天,我收拾了自己的小盒子,里面装着我在这家互联网公司工作的所有痕迹:一个定制水杯,几本技术书籍,和一摞写满代码思路的便利贴。HR部门的小姐姐看着我签完最后一份文件,表情有些复杂:"小张,你才来半年就走,真的想好了吗?这个时候辞职,外面行情不好..."


我点点头,没多解释。如何向别人解释我这个2000年出生的"孩子",毕业仅仅半年就对光鲜的互联网工作心生倦意?如何解释我不想再每天凌晨两点被产品经理的消息惊醒,然后爬起来改几行代码?如何解释我想追求的不只是一份体面的工资和一个看起来不错的头衔?


当我走出公司大楼,北京的冬风刮得我脸生疼。我的储蓄只够支撑我半年,而我计划做的事情——成为一名AI独立开发者——在大多数人眼中无异于天方夜谭。"你疯了吧?现在的独立开发者,有几个能养活自己的?"这是我最好朋友听到我计划时的反应。


事实证明,他错了。我也曾经错了。而现在,当我坐在自己选择的咖啡馆,以自己喜欢的节奏工作,看着用户数突破10,000的后台数据,我知道这半年的挣扎、焦虑和不安都是值得的。


职场困境:我在互联网大厂的日子


回想起入职的第一天,一切都充满希望。校招拿到知名互联网公司的offer,年薪30万,比许多同学高出不少。父母骄傲地向亲戚们宣布他们的儿子"找到了好工作"。


然而现实很快给了我当头一棒。


我被分到一个负责内部工具开发的小组。领导在入职第一天就明确告诉我:"小张,我们这个组不是核心业务,资源有限,但任务不少,你得做好加班的准备。"


第一个月,适应期,我每天工作10小时,感觉还能接受。到了第二个月,一个重要项目启动,我开始习惯每天凌晨回家,第二天早上9点又准时出现在公司。最夸张的一次,我连续工作了38个小时,只为了赶一个莫名其妙被提前的deadline。


# 当时的我就像这段无限循环的代码
while True:
wake_up()
go_to_work()
coding_till_midnight()
get_emergency_task()
sleep(2) # 只睡2小时

工作内容也让我倍感挫折。作为一名热爱技术的程序员,我希望能够参与有挑战性的项目,学习前沿技术。但现实是,我大部分时间都在做重复性的维护工作,修复一些简单但繁琐的bug,或者应对产品经理们不断变化的需求。


我感到自己正在成为一个"代码工具人",一个可以被随时替换的齿轮。我的创造力,我对技术的热情,我想为这个世界带来一些改变的梦想,都在日复一日的996中渐渐磨灭。


转折点:AI浪潮中看到的希望


2022年底,ChatGPT横空出世。作为一个技术爱好者,我第一时间注册了账号,体验了这个令人震惊的产品。我记得那天晚上,我熬夜到凌晨三点,不断地与ChatGPT对话,测试它的能力边界。


"这太不可思议了,"我对自己说,"这将改变一切。"


随后几周,我利用所有空闲时间(其实并不多)研究OpenAI的API文档,尝试构建一些简单的应用。我发现,大语言模型(LLM)并不像我想象的那样遥不可及,即使是一个普通开发者,只要理解其工作原理,也能基于它创造出有价值的产品。


同时,我开始关注独立开发者社区。我惊讶地发现,有不少人依靠自己开发的小产品,实现了不错的收入。虽然他们中的大多数人都经历了长期的积累,但AI技术的爆发似乎提供了一个弯道超车的机会。


这个想法越来越强烈,直到有一天晚上,当我又一次被加到一个紧急项目里,领导发来消息:"小张,这个需求很紧急,今晚能上线吗?"


我望着窗外的夜色,突然感到一阵前所未有的清晰。


我回复道:"可以,这是我在公司的最后一个项目了。"


第二天,我提交了辞职申请。


技术探索:从零开始的AI学习之路


辞职后的第一个月,我给自己制定了严格的学习计划。每天早上6点起床,先锻炼一小时,然后开始我的"AI课程"。


首先,我需要理解大语言模型的基本原理。虽然我有编程基础,但NLP和深度学习对我来说仍是比较陌生的领域。我从《Attention is All You Need》这篇奠定Transformer架构的论文开始,通过各种在线资源,逐步理解了当代大语言模型的工作机制。


# 简化的Transformer注意力机制示例
def scaled_dot_product_attention(query, key, value, mask=):
# 计算注意力权重
matmul_qk = tf.matmul(query, key, transpose_b=True)

# 缩放
depth = tf.cast(tf.shape(key)[-1], tf.float32)
logits = matmul_qk / tf.math.sqrt(depth)

# 添加掩码(可选)
if mask is not :
logits += (mask * -1e9)

# softmax归一化
attention_weights = tf.nn.softmax(logits, axis=-1)

# 应用注意力权重
output = tf.matmul(attention_weights, value)

return output, attention_weights

然后,我需要掌握如何有效地利用OpenAI、Anthropic等公司提供的API。这包括了解Prompt Engineering的技巧,学会如何构建有效的提示词,以及如何处理模型输出的后处理工作。


我还深入研究了向量数据库、检索增强生成(RAG)等技术,这些对于构建基于知识的AI应用至关重要。


Similarity(A,B)=ABA×B=cos(θ)Similarity(A, B) = \frac{A \cdot B}{|A| \times |B|} = \cos(\theta)


这个余弦相似度公式成为了我日常工作的一部分,用于计算文本嵌入向量之间的相似性。


同时,我不断实践、不断失败、不断调整。我记得有一周,我几乎每天睡眠不足5小时,只为解决一个模型幻觉问题。但与公司工作不同的是,这种忙碌源于我的热情和对问题的好奇,而非外部压力。


产品孵化:从创意到实现


学习的同时,我开始思考自己的产品定位。在观察市场和分析自身技能后,我决定开发一款面向内容创作者的AI助手,我将其命名为"创作魔法师"。


这个产品的核心功能是帮助博主、自媒体人和营销人员高效创作内容。与市面上的通用AI不同,它专注于内容创作流程:从选题分析、结构规划、初稿生成到细节优化和SEO改进,提供全流程支持。


产品开发过程中,我遇到了许多挑战:



  1. 技术架构选择:作为独立开发者,资金有限,我需要在功能与成本间找平衡。最终我选择了Next.js + TailwindCSS搭建前端,Node.js构建后端,MongoDB存储数据,Pinecone作为向量数据库存储文档嵌入向量。

  2. 模型优化:为了降低API调用成本,我设计了一套智能路由系统,根据任务复杂度自动选择不同的模型,简单任务用更经济的模型,复杂任务才调用高端模型。

  3. 用户体验设计:没有设计团队,我自学了基础UI/UX知识,参考优秀产品,反复调整界面直到满意。

  4. 运营与推广:这对我这个技术人来说是最大挑战。我学会了编写有吸引力的产品描述,设计落地页,甚至尝试了简单的SEO优化。


最艰难的时刻是产品上线后的第一个月。用户增长缓慢,每天只有个位数的新注册。我开始怀疑自己的决定,甚至一度考虑放弃,重新找工作。


转机:从10个用户到10,000用户


转机出现在上线后的第二个月。一位拥有20万粉丝的自媒体创作者使用了我的产品,对效果非常满意,在他的平台上分享了使用体验。这篇分享在创作者圈内引起了不小的反响。


24小时内,我的注册用户从原来的不到200人猛增至1500多人。服务器一度崩溃,我熬夜进行紧急扩容和优化。这次意外的曝光让我意识到,产品定位是正确的,市场需求确实存在。


接下来,我调整了运营策略:



  1. 主动联系内容创作者,提供免费试用,换取真实反馈和可能的推荐。

  2. 根据用户反馈快速迭代产品功能,每周至少发布一次更新。

  3. 建立用户社区,鼓励用户分享使用技巧,相互帮助。

  4. 编写详细的使用教程和最佳实践指南,降低用户上手难度。


// 用户增长追踪系统的一部分
function trackUserGrowth() {
const date = new Date().toISOString().split('T')[0];

db.collection('metrics').updateOne(
{ date: date },
{
$inc: {
newUsers: 1,
totalImpressions: userSource.impressions || 0
},
$set: {
lastUpdated: new Date()
}
},
{ upsert: true }
);
}

三个月后,用户数突破5,000;半年后,达到10,000。更令人欣慰的是,付费转化率远超我的预期,达到了8%左右,而行业平均水平通常在2-3%。


我分析了成功原因:



  1. 产品聚焦特定痛点:不追求通用性,而是深入解决内容创作者的具体问题。

  2. 及时响应用户需求:独立开发的优势是决策链短,能快速调整方向。

  3. 社区效应:用户之间的口碑传播形成了良性循环。

  4. 个性化服务:我经常亲自回复用户问题,提供定制化建议,这在大公司很难做到。


财务自由:从赤字到收支平衡


谈到收入模式,我采用了"免费+订阅"的策略:



  • 基础功能完全免费,足以满足普通用户的需求

  • 高级功能(如批量处理、高级模板、深度分析等)需要订阅

  • 提供月度计划(49元)和年度计划(398元,约33元/月)


最初几个月,收入微乎其微。我记得第一个月的收入仅有287元,而我在公司的月薪是25,000元。差距之大,让我一度怀疑自己的决定。


但随着用户增长,情况逐渐改善。第三个月收入突破5,000元,第四个月达到12,000元,第六个月——也就是我离职半年后,月收入达到了23,500元,基本与我原来的工资持平。


考虑到我现在的生活成本降低了(不需要租住在北京市中心的高价公寓,不需要每天通勤),实际上我的生活质量反而提高了。


更重要的是,这些收入是真正属于我的,不依赖于任何公司的评价和KPI。我建立了自己的"被动收入引擎",它可以在我睡觉时继续为我工作。


生活平衡:找回被工作吞噬的自我


收入只是故事的一部分。对我来说,最大的变化是生活方式的改变。


在互联网公司工作时,我的生活可以用一句话概括:工作即生活。我几乎没有个人时间,健康状况逐渐恶化,社交圈萎缩到只剩同事,爱好被束之高阁。


成为独立开发者后,我重新掌控了自己的时间:



  • 合理作息:我不再熬夜加班,保持每天7-8小时高质量睡眠。

  • 定期锻炼:每天至少运动一小时,半年下来体重减轻10kg,体脂率降低5%。

  • 地点自由:我可以在家工作,也可以去咖啡馆,甚至尝试了几次"工作旅行",边旅游边维护产品。

  • 深度学习:不再为了应付工作而学习,而是追随个人兴趣深入研究技术。

  • 重拾爱好:我重新开始弹吉他,参加了当地的音乐小组,结识了一群志同道合的朋友。


这种生活方式让我找回了工作的意义——工作是为了更好的生活,而不是生活为了工作。我的创造力和工作热情反而因此提升,产品迭代速度和质量都超出了预期。


技术反思:AI时代的个人定位


在这半年的独立开发经历中,我对AI技术和个人发展有了更深的思考。


首先,大模型时代确实改变了软件开发的范式。传统开发模式是"写代码解决问题",而现在更多的是"设计提示词引导AI解决问题"。这不意味着编程技能不重要,而是编程与AI引导能力的结合变得越来越重要。


# 传统开发方式
def analyze_sentiment(text):
# 复杂的NLP算法实现
words = tokenize(text)
scores = calculate_sentiment_scores(words)
return determine_overall_sentiment(scores)

# AI时代的开发方式
def analyze_sentiment_with_llm(text):
prompt = f"""
分析以下文本的情感倾向,返回'正面'、'负面'或'中性'。
只返回分类结果,不要解释。
文本: {text}
"""

result = llm_client.generate(prompt, max_tokens=10)
return result.strip()

其次,我认识到技术民主化的力量。曾经需要一个团队才能完成的项目,现在一个人借助AI工具也能完成。这为独立开发者创造了前所未有的机会,但也意味着差异化和创新变得更加重要。


最后,我发现真正的核心竞争力不在于熟悉某项技术,而在于解决问题的思维方式和对用户需求的理解。技术工具会不断更新迭代,但洞察问题和设计解决方案的能力将长期有效。


写给迷茫的年轻人


回顾这半年的经历,我想对那些和当初的我一样迷茫的年轻人说几句话:



  1. 公司经历有价值,但不是唯一路径:在大公司工作能积累经验和人脉,但不要把它视为唯一选择。如果环境压抑了你的创造力和热情,寻找改变是勇敢而非逃避。

  2. 技术浪潮创造机会窗口:AI等新技术正在重构行业,为个人提供了"弯道超车"的机会。保持开放心态,持续学习,你会发现比想象中更多的可能性。

  3. 找到可持续的节奏:成功不在于短期的爆发,而在于长期的坚持。设计一种既能推动目标实现又不会消耗自己的工作方式,才能走得更远。

  4. 用户价值胜过技术炫耀:最成功的产品往往不是技术最先进的,而是最能解决用户痛点的。专注于创造真正的价值,而不仅仅是展示技术能力。

  5. 享受过程,而非仅追求结果:如果你只关注最终目标而忽视日常体验,即使达到目标也可能感到空虚。真正的成功包含了对过程的享受和个人成长。


未来展望:持续进化的旅程


现在,我站在新的起点上。"创作魔法师"只是我旅程的第一步,我已经开始规划下一个产品,瞄准了另一个我认为有潜力的细分市场。


与此同时,我也在考虑如何扩大团队规模。虽然独立开发有其魅力,但有些想法需要更多元的技能组合才能实现。我计划在未来半年内招募1-2名志同道合的伙伴,组建一个小而精的团队。


技术上,我将继续深入研究大模型的微调和部署技术。随着开源模型的进步,在特定领域微调自己的模型变得越来越可行,这将是我产品的下一个竞争优势。


生活方面,我正计划一次为期两个月的"数字游牧"之旅,边旅行边工作,探索更多可能的生活方式。


路上会有挑战,也会有挫折,但我不再惧怕。因为我知道,真正的自由不在于没有困难,而在于面对困难时仍能按自己的意愿选择前进的方向。


当我在咖啡馆工作到黄昏,看着窗外的夕阳,我常常感到一种难以言喻的满足感。这种感觉告诉我,我正在正确的道路上——一条通往真正生活的道路。


如果你也在考虑类似的选择,希望我的故事能给你一些启发。记住,每个人的路都不同,重要的是找到属于自己的节奏和方向。


在这个AI加速发展的时代,机会前所未有,但终究,技术只是工具,生活才是目的。


作者:aircrushin
来源:juejin.cn/post/7486788421932400652
收起阅读 »

好人难当,坏人不做

好人难当,以后要多注意了,涨点记性。记录三件事情证明下: 1. 免费劳动 之前和一个同学一起做一个项目,说是创业,不过项目做好了,倒是他家店铺自己用起来了,后来一直让我根据他家的需求进行修改,我也一一的改了,他倒是挺感谢我的,说是请吃饭。不过也一直没请,后面都...
继续阅读 »

好人难当,以后要多注意了,涨点记性。记录三件事情证明下:


1. 免费劳动


之前和一个同学一起做一个项目,说是创业,不过项目做好了,倒是他家店铺自己用起来了,后来一直让我根据他家的需求进行修改,我也一一的改了,他倒是挺感谢我的,说是请吃饭。不过也一直没请,后面都一年多过去了,还让我免费帮他改需求,我就说没时间,他说没时间的话可以把源码给他,他自己学着修改,我就直接把源码给他了,这个项目辛苦了一个多月,钱一毛也没赚到,我倒是搭进去一台服务器,一年花了三百多吧。现在源码给他就给他了吧,毕竟同学一场。没想到又过了半年,前段时间又找我来改需求了。这个项目他们家自己拿着赚钱,又不给我一毛钱,我相当于免费给他家做了个软件,还要出服务器钱,还要免费进行维护。我的时间是真不值钱啊,真成义务劳动了。我拒绝了,理由是忙,没时间。


总结一下,这些人总会觉得别人帮自己是理所当然的,各种得寸进尺。


2. 帮到底吧


因为我进行了仲裁,有了经验,然后被一个人加了好友,是一个前同事(就是我仲裁的那家公司),然后这哥们各种问题我都尽心回答,本着能帮别人一点就帮别人一点的想法,但是我免费帮他,他仲裁到手多少钱,又不会给我一毛钱。这哥们一个问题接一个,我都做了回答,后来直接要求用我当做和公司谈判的筹码,我严词拒绝了,真不知道这人咋想的,我帮你并没有获得任何好处,你这个要求有点过分了,很简单,他直接把我搬出来和公司谈判,公司肯定会找我,会给我带来麻烦,这人一点也没想这些事。所以之后他再询问有关任何我的经验,我已经不愿意帮他了。


总结一下,这些人更进一步,甚至想利用下帮自己的人,不考虑会给别人带来哪些困扰。


3. 拿你顶缸


最近做了通过一个亲戚接了一个项目,而这个亲戚的表姐是该项目公司的领导,本来觉得都是有亲戚关系的,项目价格之类开始问了,他们没说,只是说根据每个人的工时进行估价,后面我们每个人提交了个人报价,然后还是一直没给明确答复,本着是亲戚的关系,觉得肯定不会坑我。就一直做下去了,直到快做完了,价格还是没有出来,我就直接问了这个价格的事情,第二天,价格出来了,在我报价基础上直接砍半。我当然不愿意了,后来经过各种谈判,我终于要到了一个勉强可以的价格,期间群里谈判也是我一个人在说话,团队的其他人都不说话。后来前端的那人问我价格,我也把过程都实话说了,这哥们也要加价,然后就各种问我,我也啥都告他了。后来这个前端在那个公司领导(亲戚表姐)主动亮明身份,她知道这个前端和那个亲戚关系好,然后这个前端立马不好意思加价了,并且还把锅甩我头上,说是我没有告诉他她是他姐。还说我不地道,我靠,你自己要加价,关我啥事,你加钱也没说要分我啊,另外我给自己加价的时候你也没帮忙说话啊,我告诉你我加价成功了是我好心,也是想着你能加点就加点吧,这时候你为了面子不加了,然后说成要加价的理由是因为我,真是没良心啊。后面还问我关于合同的事情,我已经不愿意回答他了,让他自己找对面公司问去。


总结一下,这些人你帮他了他当时倒是很感谢你,但是一旦结果有变,会直接怪罪到你头上。


4. 附录文章


这个文章说得挺好的《你的善良,要有锋芒》


你有没有发现,善良的人,心都很软,他们不好意思拒绝别人,哪怕为难了自己,也要想办法帮助身边的人。善良的人,心都很细,他们总是照顾着别人的情绪,明明受委屈的是自己,却第一时间想着别人会不会难过。


也许是习惯了对别人好,你常常会忽略自己的感受。有时候你知道别人是想占你便宜,你也知道别人不是真心把你当朋友,他们只是觉得你好说话,只是看中了你的善良,但是你没有戳穿,你还是能帮就帮,没有太多怨言。


你说你不想得罪人,你说你害怕被孤立,可是有人在乎过你吗?


这个世界上形形色色的人很多,有人喜欢你,有人讨厌你,你没有办法做到对每一个人好,也没办法要求每一个人都是真心爱你。所以你要有自己的选择,与舒服的人相处,对讨厌的人远离,过你自己觉得开心自在的生活就好,没必要为了便利别人,让自己受尽委屈。


看过一段话:善良是很珍贵的,但善良要是没有长出牙齿来,那就是软弱。


你的善良,要有锋芒,不要把时间浪费在不值得的人身上。对爱你的人,倾心相助,对利用你的人,勇敢说不。


愿你的善良,能被真心的人温柔以待。


作者:一线大码
来源:juejin.cn/post/7455667125798780980
收起阅读 »

如何优雅的回复面试官问:“你能接受加班吗?”

面试官问:“你能接受加班吗?”我脑袋嗡的一声,余音绕梁三日不绝于耳。 那一刻,我简直觉得自己像被突然砸中脑袋,脑袋里嗡的一声,余音绕梁三日。作为一个职场小白,这种问题简直颠覆了我对面试的认知。于是,我一时心血来潮,脱口而出一句:“领导抗揍吗?” 结果,大家猜到...
继续阅读 »

面试官问:“你能接受加班吗?”我脑袋嗡的一声,余音绕梁三日不绝于耳。


那一刻,我简直觉得自己像被突然砸中脑袋,脑袋里嗡的一声,余音绕梁三日。作为一个职场小白,这种问题简直颠覆了我对面试的认知。于是,我一时心血来潮,脱口而出一句:“领导抗揍吗?” 结果,大家猜到了,面试是上午结束的,Offer是当天中午凉的。


是牛是马


如何巧妙回答


“我认为加班是工作中不可避免的一部分,尤其是在一些特殊项目或紧急情况下。我非常热爱我的工作,并且对公司的发展充满信心,因此我愿意为了团队的成功付出额外的努力。当然,我也注重工作效率和时间管理,尽量在正常工作时间内完成任务。如果确实需要加班,我也会根据公司合理的安排,积极的响应。”


作为一名资深的面试官,今天面对这个问题,坐下来和大家聊聊应该怎么回答呢?面试官究竟喜欢怎样的回答?让我们深入分析一下。


面试官的心理


在职场中,想要出色地应对面试,需要具备敏锐的观察力和理解力。学会细致入微地观察,善于捕捉每一个细微的线索,这样才能在面试中游刃有余。懂的察言观色,方能尽显英雄本色。


请在此添加图片描述


面试官的考量点



  • 评估工作稳定性


面试官提出“能否接受加班”的问题,旨在深入了解求职者的职业稳定性和对加班安排的适应性。这一评估有助于预测求职者入职后的表现和长期留任的可能性。工作稳定性是企业考量员工的关键指标之一,通过这一问题,面试官能够洞察求职者的职业发展规划及其对未来工作的期望。



  • 筛选合适的候选人


通过询问加班的接受度,面试官筛选出那些愿意为达成工作目标而投入额外时间和精力的候选人。这种筛选方式有助于确保团队的整体运作效率和协作精神。合适的候选人不仅能快速融入团队,还能显著提升工作效率。因此,面试官借此问题寻找最匹配岗位需求的员工。



  • 了解求职者的价值观


面试官还利用这个问题来探查求职者的价值观和工作态度,以此判断他们是否与公司的文化和核心价值观相契合。员工的价值观和态度对公司的长远发展起着至关重要的作用。通过这一询问,面试官能够确保求职者的个人目标与公司的发展方向保持一致,从而促进整体的和谐与进步。


考察的问题的意义


要理解问题的本质……为什么面试官会提出这样的问题?难道是因为你的颜值过高,引发了他的嫉妒?


请在此添加图片描述



  • 工作态度


面试官通过询问加班的接受度,旨在评估求职者是否展现出积极的工作态度和强烈的责任心。在许多行业中,加班已成为常态,面试官借此问题了解求职者是否愿意在工作上投入额外的时间和精力。积极的工作态度和责任心是职场成功的关键因素,通过这一问题,面试官能够初步判断求职者是否适应高强度的工作环境。



  • 岗位匹配度


特定岗位因其工作性质可能需要频繁加班。面试官通过提出加班相关的问题,旨在了解求职者是否能适应这类岗位的工作强度。由于不同岗位对工作强度的要求各异,面试官希望通过这一问题确保求职者对即将承担的角色有明确的认识,从而防止入职后出现期望不一致的情况。



  • 抗压能力


加班往往伴随压力,面试官通过这一问题考察求职者的抗压能力和情绪管理技巧。抗压能力对于职场成功至关重要,面试官借此了解求职者在高压环境下的表现,以判断其是否符合公司的需求。



  • 公司文化


面试官还利用这个问题来评估求职者对公司加班文化的接受程度,以此判断其价值观是否与公司相符。公司文化对员工的工作体验和满意度有着深远的影响,面试官希望通过这一问题确保求职者能够认同并融入公司文化。


回答的艺术


“知己知彼,百战不殆。”在面试中,回答问题的关键在于展现出积极和正向的态度。


请在此添加图片描述



  • 积极态度


在回答有关加班的问题时,表达你对工作的热爱和对公司的忠诚,强调你愿意为了团队的成功而付出额外的努力。这种积极的态度不仅展示了你的职业素养和对工作的热情,还能显著提升面试官对你的好感。


例如:“我非常热爱我的工作,并且对公司的发展充满信心。我相信为了实现公司的目标和团队的成功,适当的加班是可以接受的。”



  • 灵活性和效率


强调你在时间管理和工作效率上的能力,表明你在确保工作质量的同时,会尽可能减少加班的需求。灵活性和效率是职场中极为重要的技能,面试官可以通过这个问题了解你的实际工作表现。


例如:“我在工作中注重效率和时间管理,通常能够在规定的工作时间内完成任务。当然,如果有特殊情况需要加班,我也会全力以赴。”



  • 平衡工作与生活


适当地提到你对工作与生活平衡的重视,并希望公司在安排加班时能够充分考虑到员工的个人需求。平衡工作与生活是职场人士普遍关注的问题,面试官通过这个问题可以了解你的个人需求和期望。


例如:“我非常重视工作与生活的平衡,希望在保证工作效率的同时,也能有足够的时间陪伴家人和进行个人活动。如果公司能够合理安排加班时间,我会非常乐意配合。”



  • 适度反问


在回答时,可以适当地向面试官询问关于公司加班的具体情况,以便更全面地了解公司的加班文化和预期。这样的反问可以展现你的主动性和对公司的兴趣,有助于获取更多信息,做出更加明智的回答。


例如:“请问公司通常的加班情况是怎样的?是否有相关的加班补偿或调休安排?”


最后


所谓士为知己者死,遇良将则冲锋陷阵,择良人则共谋天下。在职场这场没有硝烟的战争中,我们每个人都是一名战士,寻找着属于自己的知己和良将。当面试官提出挑战性问题时,我们不仅要展示自己的能力和才华,更要表现出对工作的热爱和对公司的忠诚。


面对“你能接受加班吗?”这样的问题,我们应以积极的态度、灵活的思维和对工作与生活平衡的重视来回应。这样的回答不仅能展示我们的职业素养,还能让我们在众多求职者中脱颖而出,赢得面试官的青睐。


正如士为知己者死,我们在职场中也要找到那个能理解我们、支持我们的知己;遇良将则冲锋陷阵,我们要在优秀的领导下发挥自己的潜能,为公司的发展贡献力量;择良人则共谋天下,我们要与志同道合的同事共同努力,实现职业生涯的辉煌。


总之一句话,在面试中展现出积极向上的形象,不仅能为我们的职业生涯加分,更能让我们在职场上找到属于自己的价值和归属感。让我们以这句话为指引,勇敢地迎接职场的挑战,书写属于自己的辉煌篇章。


作者:不惑_
来源:juejin.cn/post/7457211584709066792
收起阅读 »

工作7年了,才明白技术的本质不过是工具而已,那么未来的方向在哪里?

前言 Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。 五一过去了,不知道大家有没有好好的放松自己呢?愉快的假期总是这么短暂,打工人重新回到自己的岗位。 我目前工作7年了,这几年来埋头苦干,学习了很多技术,做了不少系统,也解决过不少线...
继续阅读 »

前言


Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。


五一过去了,不知道大家有没有好好的放松自己呢?愉快的假期总是这么短暂,打工人重新回到自己的岗位。


我目前工作7年了,这几年来埋头苦干,学习了很多技术,做了不少系统,也解决过不少线上问题。自己虽然在探寻个人IP与副业,自己花了很多时间去思考技术之外的路该怎么走。但转念一想,我宁愿花这么多时间去探索技术之外的路线,但是却从没好好静下来想一下技术本身。


技术到底是什么,你我所处的技术行业为什么会存在,未来的机会在哪里。


因此,我结合自己的工作经历,希望和大家一起聊聊,技术的本质与未来的方向,到底在哪里,才疏学浅,如果内容有误还希望你在评论区指正。


背景


行业现状


互联网行业发展放缓,进入调整阶段,具体表现为市场需求、用户规模、营收利润、创新活力等方面的放缓或下降。


一些曾经风光无限的互联网公司也遭遇了业绩下滑、股价暴跌、裁员潮等困境,你是不是也曾听过互联网的寒冬已至的言论?


其实互联网本身,并没有衰败或消亡,而是因为互联网高速发展的时代过去了。



  1. 中国经济增速放缓、消费升级趋势减弱、人口红利消失等因素的影响,中国互联网市场的需求增长趋于饱和或下降。

  2. 用户规模停滞,智能手机普及率饱和,互联网用户规模增长趋于停滞,由增量市场变为存量市场,互联网获客成本越来越高。

  3. 监管政策收紧,互联网行业规范和监管愈加严格,更加注重合规,因此互联网行业也会收到影响。


供需环境


供需环境变化,应届生要求越来越高,更加注重学历。


社招更是看中学历的同时,开始限制年龄。招聘更看重项目经验,业务经验。五年前,你只要做过一些项目,哪怕不是实际使用的,也很容易拿到offer。而现在企业在看中技术能力的同时,还会关注候选人对与行业的理解,以及以往的工作经验。


技术的本质


先说结论,技术的本质是工具。 我把过去几年的认知变化分成了四个阶段,给大家展示一下我对于技术的认知成长过程。


第一阶段


技术就是应用各类前沿的框架、中间件。


刚毕业时,我就职于一家传统信息企业。谈不上所谓的架构,只需要Spring、Mysql就构建起了我们的所有技术栈。当然,微服务框架更不可能,Redis、MQ在系统中都没使用到。


此时互联网企业已经开始快速发展,抖音诞生区区不过一年。


一线城市的互联网公司,都已经开始使用上了SpringBoot、微服务,还有各类我没有听说过的中间件。


工作环境的闭塞,让我对各类技术有着无限憧憬,因为很多当下难以解决的问题,应用一些新技术、新架构,就能立刻对很多难题降维打击。


举个例子,如果你使用本地缓存,那么集群部署时,你一定要考虑集群的缓存一致性问题,可这个问题如果用上分布式缓存Redis,那么一致性问题迎刃而解。


所以那个时候的我认为,技术就是应用各类中间件,只要用上这些中间件、框架,我就已经走在了技术的前沿。


第二阶段


技术对我而言就是互联网。
半年后,我摆脱传统行业,来到了一个小型互联网公司,用上了不少在我眼中的新技术。


但任何新技术,如果只停留在表面,那么对于使用者来说,就是几个API,几行代码,你很快就会感到厌倦,发现问题也会焦虑,因为不清楚原理,问题就无从排查。


很快,所谓的“新技术”,就不能给我带来成就感了。我开始羡慕那些互联网行业APP,无时无刻都在畅想着,如果我做的产品能够被大家看到并应用,那该是多么有意思的一件事情。


于是我又认为,技术就是做那些被人看见、被人应用的网站、APP。


第三阶段


技术就是高并发、大流量、大数据。
当自己真正负责了某一个APP的后端研发后,很多技术都有机会应用,也能够在AppStore下载自己的APP了,没事刷一刷,看到某一个信息是通过我自己写的代码展示出去,又满足了第二阶段的目标了。


那么我接下来追求的变成了,让更多的人使用我做的产品,起码让我的亲人、朋友也能看到我做的东西。


当然,随之而来的就是日益增长的数据规模和大流量,这些无时无刻都在挑战系统的性能,如何去解决这些问题,成为了我很长一段时间的工作主线。


应对高并发、大流量,我们需要对系统作出各种极致性能的优化。


为了性能优化,还需要了解更多的底层原理,才能在遇到问题时有一个合理的解决方案。


所以,我认为技术就是高并发、大数据,做好这些,才算做好了技术。


第四阶段


经过了传统企业,到互联网公司,再到互联网大厂的一番经历,让我发现技术的本质就是工具,在不同阶段,去解决不同的问题。


在第一阶段,技术解决了各类行业的数据信息化问题,借助各类中间件、架构把具体的需求落地。


在第二阶段、第三阶段,技术解决了业务的规模化问题,因为在互联网,流量迅猛增长,我需要去用技术解决规模化带来的各类的问题,做出性能优化。


当然,技术在其他领域也发挥着作用,比如AI&算法,给予了互联网工具“智能化”的可能,还有比如我们很难接触到的底层框架研发,也就是技术的“技术”,这些底层能力,帮助我们更好的发挥我们的技术能力。


未来机会


大厂仍是最好的选择


即使是在互联网增速放缓、内卷持续严重的今天,即使我选择从大厂离职,但我依然认为大厂是最好的选择。


为什么这么说,几个理由



  • 大厂有着更前沿的技术能力,你可以随意选择最适合的工具去解决问题

  • 大厂有着更大的数据、流量规模,你所做的工作,天然的就具备规模化的能力

  • 大厂有先进的管理方法,你所接触的做事方法、目标管理可能让你疲倦,但工作方法大概率是行业内经过验证的,你不会走弯路,能让你有更快的进步速度


数字化转型


如果你在互联网行业,可能没有听说过这个词,因为在高速发展的互联网行业,本身就是数字驱动的,比如重视数据指标、AB实验等。但在二线、三线城市的计算机行业或者一些传统行业,数字化转型是很大的发展机会。


过去十年,传统行业做的普遍是信息化转型,也就是把线下,需要用纸、笔来完成工作的,转移到系统中。


那什么是数字化转型?



我用我自己的理解说一下,数字化转型就是业务流程精细化管理,数据驱动,实现降本增效。



我目前所在的公司的推进大方向之一,就是数字化转型。因为许多行业的数字化程度非常低,本质而言,就是把数字驱动的能力,带给传统企业,让传统企业也能感受到数字化带来的发展可能。


举个例子,比如一个餐饮系统数字化转型后,一方面可以把用户下单、餐厅接单、开始制作、出餐、上餐线上化,还可以和原材料供应系统打通,当有订单来时,自动检测餐饮的库存信息,库存不足及时提供预警,甚至可以作出订单预测,比如什么时间点,哪类餐品的点单量最高。


当然,数字化转型与互联网有着极大的不同,在互联网行业,你只需要坐在工位,等着产品提出需求就可以了。但是传统行业,你需要深入客户现场,实地查看业务流程,与用户交谈,才能真正的理解客户需求。


或许这样的工作并不炫酷,还需要出差,但在互联网行业饱和的今天,用技术去解决真实世界的问题,也不失为一个很好的选择。


AI&智能化


随着AI快速发展,各类智能化功能已经遍布了我们使用的各类APP,极客时间有了AI自动总结,懂车帝有了智能选车度搜索问题,有时候第一个也会是AI来给我们解答。



任何行业遇上AI都可以再做一遍。



抛开底层算法、模型不谈,但从使用者角度来说,最重要的是如何与行业、场景结合相使用。但是想要做好应用,需要你在行业有着比较深的沉淀,有较深的行业认知。


当然,智能化也不仅限于AI,像上面餐饮系统的例子,如果能够实现订单预测、自动库存管理,其实也是智能化的体现。


终身学习


技术能力


持续精进专业技术能力,相信大家对此都没有疑问。


对于日常使用到的技术,我们需要熟练掌握技术原理,积累使用经验,尤其是线上环境的问题处理经验。


第一个是基础。比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。


第二你需要有全面的互联网技术相关知识。从底层说起,你起码得深入了解mysql,redis,nginx,tomcat,rpc,jms等方面的知识。


第三就是编程能力,编程思想,算法能力,架构能力。


在这个过程中,打造自己的技能树,构建自己的技术体系。


对于不断冒出的新技术,我们一方面要了解清楚技术原理,也要了解新技术是为了解决什么问题,诞生于什么背景。


业务能力


前面说到技术是一种工具,解决的是现实世界的问题,如果我们希望更好的发挥技术的作用,那么就需要我们先掌握好业务领域。


互联网领域
如果你想要快速地入门互联网领域的业务,你可以使用AARRR漏斗模型来分析。


AARRR这5个字母分别代表 Acquisition、Activation、Retention、Revenue 和 Refer
五个英文单词,它们分别对应用户生命周期中的 5 个重要环节:获取(Acquisition)、激活(Activation)、留存(Retention)、收益(Revenue)和推荐(Refer)。


AARRR 模型的核心就是以用户为中心,以完整的用户生命周期为指导思想,分析用户在各个环节的行为和数据,以此来发现用户需求以及产品需要改进的地方。


举一个简单的例子,我们以一个互联网手游 LOL来举例:
获取就是用户通过广告、push等形式,了解到了游戏并注册或者登陆。
激活就是用户真正的开始游戏,比如开始了一场匹配。
留存就是用户在7天、30天内,登陆了几次,打了几把比赛,几天登陆一次,每日游戏时常又是多少。
收益,用户购买皮肤了,产生了收益。
推荐,用户邀请朋友,发送到微信群中,邀请了朋友一起开黑。


如果你所在的行业是C端产品,那么这个模型基本可以概括用户的生命周期全流程。


传统行业
传统行业没有比较通用的业务模型,如果想要入手,需要我们从以下三个角度去入手



  1. 这个行业的商业模式是什么,也就是靠什么赚钱的?比如售卖系统收费,收取服务费等

  2. 行业的规模如何?头部玩家有哪些?它们的模式有哪些特色?

  3. 这个行业的客户是谁、用户是谁?有哪些经典的作业场景?业务操作流程是什么样的?


如何获取到这些信息呢?有几种常见的形式



  1. 权威的行业研究报告,这个比较常见

  2. 直接关注头部玩家的官网、公众号、官媒

  3. 深入用户现场


我们以汽车行业来举例
商业模式:整车销售、二手车、汽车租赁等,细分一点,又有传统动力和新能源两种分类。
规模:如下图


头部车企:传统的四大车企一汽、东风、上汽、长安,新势力 特斯拉、蔚小理


经典场景:直接去4S店体验一下汽车销售模式、流程


说在最后


好了,文章到这里就要结束啦,我用我自己工作几年的不同阶段,给你介绍了我对于技术的本质是工具的思考过程,也浅浅的探寻了一下,未来的发展机会在哪里,以及我们应该如何提升自己,很感谢你能看到最后,希望对你有所帮助。


不知道你对于技术是怎么看的,又如何看待当下的市场环境呢?欢迎你在评论区和我分享,也希望你点赞、评论、收藏,让我知道对你有所收获,这对我来说很重要。也欢迎你加我的wx:Ldhrlhy10,一起交流。


本篇文章是第33篇原创文章,2024目标进度33/100,欢迎有趣的你关注我~


作者:东东拿铁
来源:juejin.cn/post/7365679089812553769
收起阅读 »

我在团队内部提倡禁用单元测试

先说结论: 在绝大部分的业务前端开发中,写单元测试的收益非常小,但是带来的维护成本却非常大,请不要再写单元测试感动自己,为难同事了。 现在很多单元测试的教程都是那种很简单的比如,测个 1+1=2,这需要测吗?下面这段代码已经出现过很多次了,纯纯的误导人。 co...
继续阅读 »

先说结论:
在绝大部分的业务前端开发中,写单元测试的收益非常小,但是带来的维护成本却非常大,请不要再写单元测试感动自己,为难同事了。


现在很多单元测试的教程都是那种很简单的比如,测个 1+1=2,这需要测吗?下面这段代码已经出现过很多次了,纯纯的误导人。


const sum = (a,b) => a+b
it('1+1=2',()=> {
expect(sum(1,1)).toBe(2)
})

稍微上点复杂度,来写个组件的单测,比如一个用户信息展示组件,叫 UserInfoBlock,支持设置头像的大小,点击名字支持跳转到个人主页,组件代码大致长这样


interface UserInfoBlockProps {
name: string
size: 16 | 24
id: string
icon: string
}
export const UserInfoBlock:FC<UserInfoBlockProps> = (props) => {
const navigate = useNavigate()
return <div
class='xxxxxx'
style={{width: props.size}}
onClick={() =>
{navigate(`/user/${props.id}`)}}>
<img src={props.icon}/>
{props.name}
</div>

}

然后开始给组件写单测,先测头像大小的功能


import { UserInfoBlock, UserInfoBlockProps } from './user-info-block'
import { fireEvent, render, screen } from '@testing-library/react'
describe('UserInfoBlock 组件单测', () => {
const userInfo:UserInfoBlockProps = {
name: '张三',
icon:'https://xxx.png',
id:'abcd1234',
size: 16
}
const userInfoLarge:UserInfoBlockProps = {
name: '张三',
icon:'https://xxx.png',
id:'abcd1234',
size: 24
}
describe('展示默认头像大小', () => {
const component = render(<UserInfoBlock {...userInfo}/>)
it('img 标签的宽度为 16px', () => {
expect(screen.getByTag('img').style.width).toBe(16)
})
})
describe('展示large头像大小', () => {
const component = render(<UserInfoBlock {...userInfoLarge}/>)
it('img 标签的宽度为 24px', () => {
expect(screen.getByTag('img').style.width).toBe(24)
})
})
})


接下来测一下跳转,因为用了 react-router,所以在渲染组件的时候必须包裹一下 RouterProvider


...
describe('点击可以跳转', () => {
const component = render(<MemoryRouter>
<UserInfoBlock {...userInfoLarge}/>
</MemoryRouter>

)
fireEvent.click(component.div)
it('url 会变成 user/abcd1234', () => {
expect(location.pathname).toBe('user/abcd1234')
})
})
...

这个组件的测试就写完了,看起来挺有用,但实际没啥用。


首先这个测试的收益不高,因为这是一个很简单的组件,五分钟写完,但是写这个测试需要翻倍的时间,因为需要构造数据,之前没有经验不知道要加 MemoryRouterjestlocation 对象不方便,还要 mock 一下。等把这一套搞完了才能跑通,这就好像你疯狂锻炼,练出麒麟臂,就是为了举自拍杆举的稳一点。如果组件内要发请求,要做的准备工作就更加多了。


其次,user/abcd1234是什么,断言这个没用,因为别人改了链接,你的测试也一样会过,应该断言成功的打开了用户主页,比如断言一个必定会存在的文字expect(screen.getByText('用户详情')).toBeInDocument()这才能证明真的打开了用户主页。


1+1 什么时候不等于 2。头像设置 16px,什么时候不会是 16 px。什么时候点击不跳转到用户主页。肯定是有人修改了这里的业务逻辑才会这样,只有在做产品需求,代码优化的时候才会去改以前的代码。那么这时,这段测试对接手这段代码的人就是负担。


假设我接到需求,用户主页url 变了,改成 user?id=xxx。我心想这个简单,一秒钟解决,提了 pr 发现测试挂了,然后我就得把测试也改一下。


如果一段测试代码在我每次修改需求的时候都要改,甚至有的时候还会为了便于测试在业务代码中留一些后门,那这个测试就是纯纯的副作用。


大家肯定深有体会,一般一个模块自己不会出问题,但是多个模块组合起来就很容易出问题了,所以测试的重点不应该是一个组件内部各种细节,而应该测这个组件在被使用的地方是否正确。


举个例子,比如在一个列表里面,使用头像为 24px 的用户组件,然后有一天出 bug 了,说这里变成 16 了。那这会是组件的 bug 吗,这肯定是使用的地方没有用对。所以应该要测试的是这里。如果有个测试断言了在列表中用户头像必须为 24px,即使没有组件的单测,这个组件也不会被改坏,因为上层已经覆盖到了。


什么是好的测试?



  1. 我认为好的测试是稳定的测试,不仅不需要经常修改,甚至还能扛住代码重构。比如你把项目从 react 完全迁移到了 vue,测试都能跑过。

  2. 好的测试是可以当作项目文档的,组内来新人了,不需要给他介绍过多,有问题让他自己看测试用例就能理解业务。


那么怎么写出这样的测试呢?答案就是写集成测试,集成测试说白了就是一个超级大的单测,之前测试 render 的是一个组件,现在直接 render(<App/>),将路由跳转,请求 mock,fake数据库等等都统一处理。可以将上面写的测试简单的改为


import { creatAppContext, AppContext } from './app-test-context'
describe('S: 测试头像组件', () => {
let _:AppContext
beforeEach(() => {
- = creatAppContext()
})
describe('W: 去用户列表也', () => {
beforeEach(() => {
_.click(screen.getByText('查看用户列表'))
})
it('T: 列表页有十个用户,用户头像是 24px', ()=>{
expect(screen.getAllByTestid('user-item').length).toBe(10)
expect(screen.getAllByTestid('user-item')[0].img.style.width).toBe(24)
})
describe('W: 点击第一个用户', () => {
beforeEach(() => {
_.click(screen.getAllByTestid('user-item')[0])
})
it('T: 打开了用户主页', () => {
expect(screen.getByText('用户详情')).toBeInDocument()
})
})
})
})

关于怎么写好测试可以展开的点实在太多了,就不过多阐述,想要了解的朋友可以查看我的主页,之前专门出过一些列文章详细的讲这些事情。


作者:阿古达木
来源:juejin.cn/post/7478515057510154255
收起阅读 »

8年程序员本以为到头了,没想到柳暗花明...

讲一个这两年发生在我身上的故事,一个从程序员到AI产品负责人,一个选择大于努力的故事: 回到2022年,作为一个8年的前端程序员的我,在一家行业头部的企业中勤勤恳恳,兢兢业业。每天与代码为伴,沉浸在React的世界里,整日优化、升级、写框架、写工具,解决点疑难...
继续阅读 »

讲一个这两年发生在我身上的故事,一个从程序员到AI产品负责人,一个选择大于努力的故事:


回到2022年,作为一个8年的前端程序员的我,在一家行业头部的企业中勤勤恳恳,兢兢业业。每天与代码为伴,沉浸在React的世界里,整日优化、升级、写框架、写工具,解决点疑难杂症,改改BUG,后来甚至成为了React的contributor。


我的生活和工作都很稳定,技术能力也得到了领导和团队的认可。


但内心深处却隐隐感到一种不安——前端技术的发展似乎进入了瓶颈期,我的职业生涯也仿佛停滞不前。


随着时间的推移,我开始面临两个无法回避的问题:



  1. 个人能力无法进一步提升:前端技术的更新速度放缓,框架和工具趋于成熟,我能做的事情越来越少了。

  2. 薪资增长停滞:薪资似乎已经到达了行业的天花板,如果我不能做更多的事情,也再难有突破。


自己是否已经走到了职业生涯的尽头?


面对这个问题,我一度陷入迷茫。跟其他程序员一样,我也尝试学习新的技术栈来缓解心中的这份焦虑,更底层的语言比如Rust、更宽的技术栈比如three.js、学学区块链、学学算法。


shu3.jpg
但是随之而来的就是,这些东西我学了之后除了做做demo、写写小工具之外,我好像做不了什么大事,我没有动力向着更深的内容走下去,这反而更加加深了我的焦虑。


那时候我32岁,每天都在担心中年危机。担心三年之后我凭什么和体力更好的、钱更少的、拥有同样技术栈的年轻人竞争?【虽然三年后的今天,并没有这样的年轻人出现】


幸运的是,2022年年底,chatGPT爆火全球。一夜之间,所有人都在讨论GPT,我也不例外,按照惯例,我再次把学习AI加入了我的日程。


当时体验了chatGPT之后,我两眼放光,我觉得,只要我努力学习这个技术,我一定可以像当初选择前端开发一样,再次进入一个程序员的风口,于是报课、买书、找行业大佬交流。


就这样过来两三个月......


你以为怎么了?我柳暗花明了? 这是一个前端程序员逆袭转战AI年薪百万的故事? 很不幸,这并不是。


事实是三个月之后,我再次陷入了困境:AI的底层技术,一我根本学不会,二我学了好像也没有用武之地。总不能跟老板说:给我几千万美金我给你撸个大模型?


dw.jpg


世界再次灰暗下来......


可是,天无绝人之路,就在我已经准备放弃的时候,我在某个产品群里看到了这样一句话:


ltjl.jpg


“???,这居然没人知道?”


过去三个月的高强度学习,在我看来在业务中找到嵌入AI的场景,甚至为了AI单独新增功能都是非常容易的事情。


AI时代已经来了,GUI到LUI是必然发生的事情,所有企业的产品都将会经历加入AI的功能或者逻辑。如果必须有一人主导这件事情的话,那为什么不能是我?


“汽车干掉马车之后,所有的司机都是之前的马车司机么?”


“计算器干掉算盘之后,所有的会计都是之前的师爷么?”


“安卓干掉塞班之后,所有的安卓工程师都是之前的塞班工程师么?”


既然都不是,那么AI带来全新的交互体验,必须是传统产品去做么?显然不是,这玩意,谁先干算谁的啊。


gds.jpg


我决定接受这个挑战,开始把视野放到应用层。开始研究产品的逻辑,尝试找到AI技术与业务需求的结合点。


不会怎么办? 学呗,这流程咱熟,报班、买书、找大佬交流。


shu1.jpg


shu2.jpg


一边学,我就一边结识了一些志同道合的伙伴,我们一起讨论、尝试、失败、再尝试。


经历过那一年的朋友应该知道,国内大模型的能力远远没有广告上说的那些效果,底层能力的限制一度成为我们思路中最大的卡点。


不过,我们也总结整理了一大批不同的产品中,不训练自己的大模型的情况下,能够结合AI的逻辑,这里简单放几个例子。



  • TOB的管理系统,新用户没办法很好的知道产品中有什么功能,可以直接通过AI助手来唤起、使用对应功能。【我很喜欢这个,典型的GUI升级LUI的场景】

  • 产品售卖,通过AI + 埋点的技术,实时分析用户的行为,在恰当的时机向用户推送VIP折扣。

  • 电商详情页浏览助手。【页面上的AI助手,也是这两年很多产品已经落地了的选择】

  • TOC的评论页面,AI拥有很好的控评能力

  • 智能问答产品,【我们认为是受到冲击最大的产品,跟AI比起来,现在市场上所有的智能问答产品,都不够智能。都应该被重做升级!】

  • 多模态能力会带来的全新产品。【情感陪伴是目前最为广泛且收益较快的赛道。】


不扯远了,说回我自己。


我的转机出现在我们自己的领导也开始说要结合AI,升级产品能力。


ddn.jpg


我以最快的速度,做好agent流程的思维导图、MVP(最小可行性产品)。 开会,给领导布道,说服领导们相信我的这套设计。


因为之前就进行过AI相关的内容分享,所以这一步比较容易。一顿操作猛如虎之后,终于获得了领导认可,接到了协助产品负责AI升级的任务,升级过程其实遇到了非常多的困难。


再次吐槽一下那一年的国产大模型,流程稍微多一点,响应时间就巨慢,流程少了,大模型的理解能力又不足。


有时候一个提示词一调就是半天,我甚至一度都要放弃了。不过好在最终我们选择了曲线救国,采用大模型+小模型,配合多专家 + RAG + 变种function call组合的架构,我们在23年底也做出了不错的东西。


上线之后,客户表示了满意。领导表示了满意。团队表示了满意。


水到渠成,后来一切就按部就班了,24年我又虚线负责了两个AI产品的升级和功能迭代。从确定需求是否适用AI实现,到方案选型,到设计agent流程,到功能上的交互设计,组织团队最终交付。


今年开始实线负责多个产品,有了自己的团队负责大模型方向的新产品设计和落地,也有需要横向拉通的部门,负责协助规划旧产品AI方向的升级和产品中AI需求的挖掘。


柳暗花明,未来可期。


结语


虽然我是前端转型到AI产品负责人的,但是如果你问我AI一定会代替掉程序员么?


我的回答是:不会,但是AI一定会让这个岗位所需要的人数减少,无论你是初级岗还是高级岗。


我们要做的就是抓住新的机会、占据有利位置、执行下去,然后等待时代的洪流将我们高高托起。


你看deepseek这不就来了? 我前面两年所做的事情,因为deepseek的出现,再次被抬高了一个维度,这就是时代,选择大于努力。



如果大家对“程序员如何转型AI产品负责人”感兴趣,可以点个赞。如果大家喜欢,后面我再多多分享转型细节。



文章更新列表


# 序员转型,带领团队落地AI产品的全流程


# 30行代码,随时进行云端DeepSeek能力评估!


# 5000字长文,AI时代下程序员的巨大优势!


作者:华洛
来源:juejin.cn/post/7469263585287651340
收起阅读 »

10年深漂,放弃高薪,回长沙一年有感

大明哥是 2014 年一个人拖着一个行李箱,单身杀入深圳,然后在深圳一干就是 10 年。 10 年深漂,经历过 4 家公司,有 20+ 人的小公司,也有上万人的大厂。 体验过所有苦逼深漂都体验过的难。坐过能把人挤怀孕的 4 号线,住过一天见不到几个小时太阳的城...
继续阅读 »

大明哥是 2014 年一个人拖着一个行李箱,单身杀入深圳,然后在深圳一干就是 10 年。


10 年深漂,经历过 4 家公司,有 20+ 人的小公司,也有上万人的大厂。


体验过所有苦逼深漂都体验过的难。坐过能把人挤怀孕的 4 号线,住过一天见不到几个小时太阳的城中村,见过可以飞的蟑螂。欣赏过晚上 6 点的晚霞,但更多的是坐晚上 10 点的地铁看一群低头玩手机的同行。


10 年虽然苦、虽然累,但收获还是蛮颇丰的。从 14年的 5.5K 到离职时候的 xxK。但是因为种种原因,于 2023年 9 月份主动离职离开深圳。


回长沙一年,给我的感觉就是:除了钱少和天气外,样样都比深圳好


生活


在回来之前,我首先跟我老婆明确说明了我要休息半年,这半年不允许跟我提任何有关工作的事情,因为在深圳工作了 10 年真的太累,从来没有连续休息超过半个月的假期。哪怕是离职后我也是无缝对接,这家公司周五走,下家公司周一入职。


回来后做的第一件事情就是登出微信、删除所有闹钟、手机设置全天候的免打扰,全心全意,一心一意地陪女儿和玩,在这期间我不想任何事情,也不参与任何社交,就认真玩,不过顺便考了个驾-照。


首先说消费。


有很多人说长沙是钱比深圳少,但消费不比深圳低。其实不然,我来长沙一年了,消费真的比深圳低不少。工作日我一天的消费基本上可以控制在 40 左右,但是在深圳我一天几乎都要 80 左右。对比


长沙深圳
5+5+
15 ~ 2525 ~ 35
10 ~ 15,不加班就回家吃25 ~ 35,几乎天天加班

同时,最近几个月我开始带饭了,周一到超时买个百来块的菜,我一个人可以吃两个星期。


总体上,一个月消费长沙比深圳低 1000 左右(带饭后更低了)。


再就是日常的消费。如果你选择去长沙的商城里面吃,那与深圳其实差不多了多少,当然,奶茶方面会便宜一些。但是,如果你选择去吃长沙的本土菜,那就会便宜不少,我跟我朋友吃饭,人均 50 左右,不会超过 70,选择美团套餐会更加便宜,很多餐馆在支持美团的情况下,选择美团套餐,两个人可以控制在 30 ~ 40 之间。而深圳动不动就人均 100+。


当然,在消费这块,其实节约的钱与少的工资,那就是云泥之别,可忽略不计。


再说生活这方面。


在长沙这边我感觉整体上的幸福感比深圳要强蛮多,用一句话说就是:深圳都在忙着赚钱,而长沙都在忙着吃喝玩乐加洗脚。我说说跟我同龄的一些高中和大学同学,他们一毕业就来长沙或者来长沙比较早,所以买房就比较早,尤其是 16 年以前买的,他们的房贷普遍在 3000 左右,而他们夫妻两的工资税后可以到 20000,所以他们这群人周末经常约着一起耍。举两个例子来看看他们的松弛感:



  • 晚上 10 点多喊我去吃烧烤,我以为就是去某个夜市撸串,谁知道是开车 40+公里,到某座山的山顶撸串 + 喝酒。这是周三,他们上班不上班我不知道,反正我是不上班。

  • 凌晨 3 点多拉我出来撸串


跟他们这群人我算是发现了,大部分的聚会都是临时起意,很少提前约好,主打就是一个随心随意。包括我和同事一样,我们几乎每个月都会出来几次喝酒(我不喜欢喝酒,偶尔喝点啤酒)、撸串,而且每次都是快下班了,某个人提议今晚喝点?完后,各回各家。


上面是好的方面,再说不好的。


长沙最让我受不了的两点就是天气 + 交通。


天气我就不说了,冬天冻死你,夏天热死你。去年完整体验了长沙的整个冬天,是真他妈的冷,虽然我也是湖南人,但确实是把我冻怕了。御寒?不可能的,全靠硬抗。当然,也有神器:火桶子,那是真舒服,我可以在里面躺一整天。


交通,一塌糊涂,尤其是我每天必经的西二环,简直惨不忍睹,尤其是汽车西站那里,一天 24 小时都在堵,尤其是周一和周五,高德地图上面是红的发黑。所以,除非特殊情况,我周一、周五是不开车的,情愿骑 5 公里小电驴去坐地铁。


然后是一大堆违停,硬生生把三车道变成两车道,什么变道不打灯,实线变道,双黄线调头见怪不怪了,还有一大群的小电驴来回穿梭,对我这个新手简直就是恐怖如斯(所以,我开车两个月喜提一血,4S点维修报价 9800+)。


美食我就不说了,简直就是吃货的天堂。


至于玩,我个人觉得长沙市内没有什么好玩的,我反而喜欢去长沙的乡里或者周边玩。所以,我实在是想不通,为什么五一、国庆黄金周长沙是这么火爆,到底火爆在哪里???


还有一点就是,在深圳我时不时就犯个鼻炎,回了长沙一年了我一次都没有,不知道什么原因。


工作


工资,长沙这边的钱是真的少,我现在的年收入连我深圳的三分之一都没有,都快到四分之一了。


当然,我既然选择回来了,就会接受这个低薪,而且在回来之前我就已经做好了心理建设,再加上我没有房贷和车贷,整体上来说,每个月略有结余。


所以,相比以前在深圳赚那么多钱但是无法和自己家人在一起,我更加愿意选择少赚点钱,当然,每个人的选择不同。我也见过很多,受不了长沙的低工资,然后继续回深圳搬砖的。


公司,长沙这边的互联网公司非常少,说是互联网荒漠都不为过。大部分都是传统性的公司,靠国企、外包而活着,就算有些公司说自己是互联网公司,但也不过是披着互联网的羊皮而已。而且在这里绝大多数公司都是野路子的干法,基建差,工作环境也不咋地,福利待遇与深圳的大厂更是没法比,比如社保公积金全按最低档交。年假,换一家公司就清零,我进入公司的时候,我一度以为我有 15 天,一问人事,试用期没有,转正后第一年按 5 天折算,看得我一脸懵逼。


加班,整体上来说,我感觉比深圳加班得要少,当然,大小周,单休的公司也不少,甚至有些公司连五险一金都不配齐,劳动法法外之地名副其实。


同时,这边非常看重学历,一些好的公司,非 985 、211 不要,直接把你门焊死,而这些公司整体上来说工资都很不错,40+ 起码是有的(比如某银行,我的履历完美契合,但就是学历问题而被拒),在长沙能拿这工资,简直就是一种享受,一年就是一套房的首付。


最后,你问我长沙工资这么低,你为什么还选择长沙呢?在工作和生活之间,我只不过选择了生活,仅此而已!!


作者:大明哥09
来源:juejin.cn/post/7457175937736163378
收起阅读 »

努力工作,你已经是很了不起的成年人了

1、像潮水一样的焦虑 "我二十三岁,靠自己的努力,全款小米Su7 Ultra。" "二十七岁,工作之余,副业一个月赚两万。" "用 DeepSeek 做副业,三天赚了九千" 对的,这些是目前互联网上短视频、问答平台、公众号里再常见不过的文案,衬托之...
继续阅读 »

1、像潮水一样的焦虑



"我二十三岁,靠自己的努力,全款小米Su7 Ultra。"




"二十七岁,工作之余,副业一个月赚两万。"




"用 DeepSeek 做副业,三天赚了九千"



对的,这些是目前互联网上短视频、问答平台、公众号里再常见不过的文案,衬托之下:



仿佛早上挤地铁四号线、一边走路一边吃热干面、坐在格子间里连喝一口水都要见缝插针、晚上加班结束要迈着飞快的脚步去赶最后一班地铁的你,是一个恬不知耻正在迈向中年的你,像是一个混吃等死毫无作为的废物。



凌晨你回到出租屋,打开朋友圈,看到的却是这样那样的焦虑:



三十天写作训练营、素人短视频日入八百、宝妈靠手作实现财务自由。



这些标题像便利店门口的霓虹灯,在深夜里闪烁得格外刺眼,仿佛在质问每个失眠的成年人:你的人生怎么还没开张?


你躺在床上,闭上眼睛的时候还在脑海里反复复盘着:“我这领个死工资也不是个事儿啊,什么时候能搞个副业,也实现一下财务自由。赚够两百万存款的时候,我要把辞职信拍到领导的脸上。”


在焦虑、自责、懊恼之余,你是否忘了什么事情?


你是否忘了,你其实是一个:


经过完整的高等教育,每天算上通勤,为工作付出超过12小时时间,没有沾染赌毒行为,勤勤恳恳态度认真的年轻人。工作之余,你唯一的爱好可能就是下班后躲在出租屋里打两把游戏。


从任何角度上看,你都是一个努力的,踏实的,积极向上的年轻人。


那么,究竟是谁在引导你否定自己的努力,对自己的状态进行 PUA 呢?


副业如果真那么神奇的话,为什么它还是 “副业” 呢?


了解那些焦虑的本质,你会发现:“副业可能是版本陷阱”。


2,副业可能是版本陷阱


我们 Dota2 玩家有个经常被挂在嘴边的词语,叫 “版本陷阱”,指的是那些版本更新之后,被大家口口相传多么厉害,但是真在职业赛场上被选出来却胜率惨不忍睹的英雄。


很抱歉,我可能要说一句丧气话:


“副业就是这个版本的【版本陷阱】。”


为什么呢?



  • 先聊副业本质


    副业的本质是跳出主页赛道,恰好进入一条机会更多、收入更高的蓝海赛道;这个机会可能来自于你自身(你恰好擅长某些主业之外的能力),更多的时候来自于时代红利(早几年间你非常擅长制作短视频)。


    因此,少量时间+副业可以带来高收入的本质,是个人长项在蓝海领域博取一个创收机会,但是你先问问自己,有没有主业之外领域的优势技能。


  • 再说版本环境


    在上一条里面我们提到了“蓝海行业”,这一点非常重要,只有某个赛道出现明显的技术缺口或人员缺口时,副业者才有腾挪的空间。但如果一个行业或赛道已经人满为患,你准备拿每天2个小时和那些每天12个小时的团队作战吗?


  • 最后分析下“口口相传”的那些人


    你以为天天分享副业赚钱的人群:“人生导师、大公无私、先富的来带动后富的。”


    实际发那些文案的人群:那些教你"睡后收入"的博主,自己往往在通宵直播卖课;晒着海岛定位说走就走的旅行博主,回程机票可能都是网贷分期。这个魔幻的时代,连贩卖成功学的都在996加班。


    而他们兜售焦虑的最后一环,还是希望焦虑者咬上他们那锈迹斑斑的铁钩,成为下一个为“财富自由”付费的“上进者”。



请容许我再说一句丧气话:



绝大多数普通人的搞钱手段就是上班,只有上班。



哪有那么多暴富的机会在前方等着你?哪有那么多“睡后”的收入在梦中等着你?哪有那么一劳永逸又无比轻松的战役,在彼岸等着你。


你之所以相信彼岸的美好,有没有可能是因为你看不穿横在河面上的浓雾?


3,努力上班,已经是很棒的成年人了


每天我总能见到大家在各种空间和途径输出焦虑:



女孩责怪男孩不上进,下班只知道打游戏。




男孩抱怨不该生孩子,没有时间和机会创业搞财富自由。




总有人和自己身边的成功同龄人做比对,反思得出“自己是个废物”的神奇结论。



可是啊同学,我们也只是一群普通人而已。


在步入三十五岁之后,变成互联网行业里的“下岗预备役”之后,我逐渐开始认清了自己的属性和位置,不再苛求自己与众不同。


经过完整的高等教育,每天算上通勤,为工作付出超过12小时时间,没有沾染赌毒行为,勤勤恳恳态度认真的年轻人。工作之余,你唯一的爱好可能就是下班后躲在出租屋里打两把游戏。


每周可以有时间陪家人一起做一些不花钱的娱乐。


每周可以有时间陪孩子梳理一下近期的学习、分享一下思考。


每周有那么几个小时可以做一些让自己从内在感到快乐、感到满足、感到宁静的事情。


你没有去赌博欠下一屁股债,没有去加杠杆投资卖掉父母的房产,没有闷着头贷款创业亏光爹妈的棺材本。


同学,你可能意识不到,但我今天非常想郑重地告诉你:



在成年人这个群体之中,你已经是非常杰出、非常棒的那一批了。



副业焦虑?让它见鬼去吧。


作者:摸鱼的春哥
来源:juejin.cn/post/7481187555866804224
收起阅读 »

都2025年了,还在用Markdown写文档吗?

俗话说得好:“程序员宁愿写 1000 行代码,也不愿意写 10 个字的文档。” 不愿写文档的原因,一方面是咱理科生文采确实不好,另一方面则是文档的更新维护十分麻烦。 每次功能有变更的时候, 时间又急(其实就是懒),很难想得起来同时去更新文档。 特别是文档中代码...
继续阅读 »

俗话说得好:“程序员宁愿写 1000 行代码,也不愿意写 10 个字的文档。”


不愿写文档的原因,一方面是咱理科生文采确实不好,另一方面则是文档的更新维护十分麻烦。


每次功能有变更的时候, 时间又急(其实就是懒),很难想得起来同时去更新文档。


特别是文档中代码片段,总是在几天之后(甚至更久),被用户找过来吐槽:“你们也太不专业了,文档里的代码都跑不通。”


作为有素养的程序员,被人说 “不专业”,简直不能忍,一定要想办法解决这个问题。


专业团队


文档代码化


很多开发者喜欢用语雀,飞书或者钉钉来写文档。


不得不承认,它们的编写和阅读的体验更好,样式也更丰富。


甚至就算是版本管理,语雀,飞书做得也不比 git 差。


不过对于开发者文档,我觉得体验,样式都不是最重要的。毕竟这些都是锦上添花。


更重要的是,文档内容有效性的保证,如果文档上的代码直接复制到本地,都要调试半天才能跑通,那不管它样式再好看开发者都要骂娘了。


所以文档最好就和代码放在同一个仓库中,这样代码功能有更新时,顺便就把文档一起改了。团队前辈 Review 代码时,也能顺便关注下相关的文档是否一同更新。


如果真的一定要搞一个语雀文档,也可以考虑用 Git Action,在分支合并到 master 时触发一次文档到语雀的自动同步。


Markdown 的问题


程序员最常用的代码化文档就是 Markdown 了,估计也是很多开发者的首选,比如我这篇文章就是用 Markdown 写的。


不过 Markdown 文档中的代码示例,也没有经过单元测试的验证,还是会出现文档中代码跑不通的现象。


Python 中有一个叫做 doctest 的工具,能够抽取文档中的所有 python 代码并执行,我们只要在分支合并前,确保被合并分支同时通过了单元测试和 doctest,就能保证文档中的代码示例都是有效的。


在 Java 中我找了半天没有找到类似工具,很多语言(比如 Go, Rust 等等)据我所知也没有类似的工具。


而且对于 Java,文档中给的一般都是不完整的代码片段,无法像 Python 一样直接就能进入命令行执行。


有句俗话 ”单元测试就是最好的文档“。我觉得没必要将单元测试和文档分开,最好的方式就是从单元测试中直接引用部分代码进入文档。


在变更功能时,我们一定也会改单元测试,文档也会同步更新,不需要单独维护。


在合并分支或者发布版本之前,肯定也会有代码门禁执行单元测试,这样就能确保文档中代码示例都是有效的。


目前我发现了一个能解决该问题的方案就是 adoc 文档。


adoc 文档


adoc 的全称是 Asciidoctor, 官网链接


Github 已经对其实现了原生支持,只要在项目中将 README 文件的后缀改成 README.adoc,Github 就会按照 adoc 的语法进行解析展示。


adoc 最强悍的能力就是可以对另一个文件的一部分进行引用。以我负责的开源项目 QLExpress 为例。


在单元测试 Express4RunnerTest 中,用 // tag::firstQl[]// end::firstQl[] 圈出一个代码片段:


// import 语句省略...

/**
* Author: DQinYuan
*/

public class Express4RunnerTest {
// 省略...

@Test
public void docQuickStartTest() {
// tag::firstQl[]
Express4Runner express4Runner = new Express4Runner(InitOptions.DEFAULT_OPTIONS);
Map<String, Object> context = new HashMap<>();
context.put("a", 1);
context.put("b", 2);
context.put("c", 3);
Object result = express4Runner.execute("a + b * c", context, QLOptions.DEFAULT_OPTIONS);
assertEquals(7, result);
// end::firstQl[]
}


// 省略...
}

然后在文档 README-source.adoc 中就可以 firstQl 这个 tag 引用代码片段:


=== 第一个 QLExpress 程序

[source,java,indent=0]
----
include::./src/test/java/com/alibaba/qlexpress4/Express4RunnerTest.java[tag=firstQl]
----

include::./src/test/java/com/alibaba/qlexpress4/Express4RunnerTest.java[tag=firstQl] 用于引用 Express4RunnerTest 文件中被 firstQl tag 包围的代码片段,其他的部分,等价于 Markdown 下面的写法:


### 第一个 QLExpress 程序

```java
```


这个 adoc 文档在渲染后,就会用单测中真实的代码片段替换掉 include 所占的位置,如下:


adoc渲染示例


缺点就是 adoc 的语法和 Markdown 相差还挺大的,对以前用 Markdown 写文档的程序员有一定的熟悉成本。但是现在有 AI 啊,我们可以先用 Markdown 把文档写好,交给 Kimi 把它翻译成 Markdown。我对 adoc 的古怪语法也不是很熟悉,并且项目以前的文档都是 Markdown 写,都是 AI 帮我翻译的。


Github 渲染 adoc 文档的坑


我最开始尝试在 Github 上用 README.adoc 代替 README.md,发现其中的 include 语法并没有生效:



Github 对于 adoc include的渲染逻辑还挺诡异的,既不展示引用文件的内容,也没有原样展示 adoc 代码



Github对于adoc的错误渲染


查询资料发现 Github 根本不支持 adoc 的 include 语法的渲染(参考)。不过好在参考文档中也给了解决方案:



  • 源码中用 README-source.adoc 编写文档

  • 使用 Git Action 监听 README-source.adoc 文件的变化。如果有变动,则使用 asciidoctor 提供的命令行工具先预处理一下 include 语法,将引用的内容都先引用进来。再将预处理的后的内容更新到 README.adoc 中,这样 README.adoc 就都是 Github 支持的语法了,可以直接在 Github 页面上渲染


Github Action 的参考配置如下(QLExpress中的配置文件):


name: Reduce Adoc
on:
push:
paths:
- README-source.adoc
branches: ['**']
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Install Asciidoctor Reducer
run: sudo gem install asciidoctor-reducer
- name: Reduce README
# to preserve preprocessor conditionals, add the --preserve-conditionals option
run: asciidoctor-reducer --preserve-conditionals -o README.adoc README-source.adoc
- name: Commit and Push README
uses: EndBug/add-and-commit@v9
with:
add: README.adoc

添加这个配置后,你会发现很多额外的 Commit,就是 Git Action 在预处理 README-source.adoc 后,对 README.adoc 发起的提交:


image.png


至此,就再也不用担心被人吐槽文档不专业啦。


作者:代码不洗头
来源:juejin.cn/post/7464247481227100196
收起阅读 »

我终于从不想上班又不能裸辞的矛盾中挣扎出来了

最近的状态有一种好像一个泄了气的皮球的感觉一样,就是对生活中很多事情都提不起来兴趣。 我希望自己可以多看一点书,但是我不想动;我希望自己可以练习书法,但是我不想动;我希望自己可以学会一门乐器,但是我不想动。 相比上面三点,我更希望的是我可以早上起来不用上班,但...
继续阅读 »

最近的状态有一种好像一个泄了气的皮球的感觉一样,就是对生活中很多事情都提不起来兴趣。


我希望自己可以多看一点书,但是我不想动;我希望自己可以练习书法,但是我不想动;我希望自己可以学会一门乐器,但是我不想动。


相比上面三点,我更希望的是我可以早上起来不用上班,但是这只是我的希望而已。


这就是我最近的生活状态。


我有一种我的生活仿佛失去了控制的感觉,每一天我的内心好像都有一个小人在不断呐喊,说我不想上班。因为这个声音,我一度非常非常想要裸辞,但是我为什么没有裸辞呢?


还不是因为我买房买车欠了十几万,我到现在才还了两万而已,再加上我每个月还有房贷要还。


然而,当我经常不情愿地做着跟我心里想法相悖的行为的时候,我发现自己常常会做一些小动作来向自己表达抗议和不满。


比如说,我的工作会变得越来越低效,上班的时候会偷偷地摸鱼,还有就是变得越来越容易拖延。


就好像这样的我,可以让那个不想上班的我,取得了一丢丢的小胜利一样。


一旦开始接受自己没有办法辞职,并且还要上个几十年班这样的结果时,就会让人有一种破罐子破摔的想法。


而且随之而来的是一种对未来,对生活的无力感。


这种无力感渐渐地渗透在我生活的方方面面,以至于让我慢慢地对很多东西都提不起兴趣,我生活中的常态就变成了不想动。


但是有趣的事情发生了,有一天我在和我朋友聊天的时候,我的脑子里面突然出现了一个想法,就是我决定两年之后我要实现我不上班的这个目标。


当有了这个想法之后,我就开始认真思考这件事情的可行度。


通过分析我现在收支情况,我把两年之内改成了2026年之前,因为我觉得这样会让我更加信服这个目标的可行性。


同时我把这个想法也拆分成了两个更为具体的目标,其中一个就是我要在2026年之前还完欠的所有钱。


第二个就是我需要给自己存够20万,这20万是不包括投资理财或者基金股票里面的钱,而是我完全可以自由支配的。


毕竟没有人可以在没有工作的情况下,没有收入的情况下。没有存款的情况下,还能保持一个不焦虑的状态。


当我得出了这两个具体的目标之后,我整个人瞬间被一种兴奋的状态填满,我瞬间找到了工作的意义和动力。


也许你会说,我的这个想法对我现在生活根本起不到任何的改变作用。


我依旧还需要每天七点起床,还是要每天重复地去过我两点一线的生活。


但是于我自己而言,当我给我上班的这件事情加了一个两年的期限之后,我突然觉得我的未来,我的生活都充满了希望。


我整个人从不想动的状态,变成了一种被兴奋的状态填满的感觉。


所以,如果你和我一样有一些类似的困扰,有一些你不想做而又不得不做的事情,让你有一种深陷泥潭,无法前进的感觉,那你不妨试一下这个方法。


结合你自己的实际情况,为你不想做这件事情,设计一个期限,这个期限必须要是你认可,你接受,并且你认为你可以在这个截止时间之前完成的。


我想这个决定应该会对你的生活带来一些改变。


作者:程序员Winn
来源:juejin.cn/post/7428154034480906278
收起阅读 »

如何优雅的回复面试官问:“你能接受加班吗?”

面试官问:“你能接受加班吗?”我脑袋嗡的一声,余音绕梁三日不绝于耳。 那一刻,我简直觉得自己像被突然砸中脑袋,脑袋里嗡的一声,余音绕梁三日。作为一个职场小白,这种问题简直颠覆了我对面试的认知。于是,我一时心血来潮,脱口而出一句:“领导抗揍吗?” 结果,大家猜到...
继续阅读 »

面试官问:“你能接受加班吗?”我脑袋嗡的一声,余音绕梁三日不绝于耳。


那一刻,我简直觉得自己像被突然砸中脑袋,脑袋里嗡的一声,余音绕梁三日。作为一个职场小白,这种问题简直颠覆了我对面试的认知。于是,我一时心血来潮,脱口而出一句:“领导抗揍吗?” 结果,大家猜到了,面试是上午结束的,Offer是当天中午凉的。


是牛是马


如何巧妙回答


“我认为加班是工作中不可避免的一部分,尤其是在一些特殊项目或紧急情况下。我非常热爱我的工作,并且对公司的发展充满信心,因此我愿意为了团队的成功付出额外的努力。当然,我也注重工作效率和时间管理,尽量在正常工作时间内完成任务。如果确实需要加班,我也会根据公司合理的安排,积极的响应。”


作为一名资深的面试官,今天面对这个问题,坐下来和大家聊聊应该怎么回答呢?面试官究竟喜欢怎样的回答?让我们深入分析一下。


面试官的心理


在职场中,想要出色地应对面试,需要具备敏锐的观察力和理解力。学会细致入微地观察,善于捕捉每一个细微的线索,这样才能在面试中游刃有余。懂的察言观色,方能尽显英雄本色。


请在此添加图片描述


面试官的考量点



  • 评估工作稳定性


面试官提出“能否接受加班”的问题,旨在深入了解求职者的职业稳定性和对加班安排的适应性。这一评估有助于预测求职者入职后的表现和长期留任的可能性。工作稳定性是企业考量员工的关键指标之一,通过这一问题,面试官能够洞察求职者的职业发展规划及其对未来工作的期望。



  • 筛选合适的候选人


通过询问加班的接受度,面试官筛选出那些愿意为达成工作目标而投入额外时间和精力的候选人。这种筛选方式有助于确保团队的整体运作效率和协作精神。合适的候选人不仅能快速融入团队,还能显著提升工作效率。因此,面试官借此问题寻找最匹配岗位需求的员工。



  • 了解求职者的价值观


面试官还利用这个问题来探查求职者的价值观和工作态度,以此判断他们是否与公司的文化和核心价值观相契合。员工的价值观和态度对公司的长远发展起着至关重要的作用。通过这一询问,面试官能够确保求职者的个人目标与公司的发展方向保持一致,从而促进整体的和谐与进步。


考察的问题的意义


要理解问题的本质……为什么面试官会提出这样的问题?难道是因为你的颜值过高,引发了他的嫉妒?


请在此添加图片描述



  • 工作态度


面试官通过询问加班的接受度,旨在评估求职者是否展现出积极的工作态度和强烈的责任心。在许多行业中,加班已成为常态,面试官借此问题了解求职者是否愿意在工作上投入额外的时间和精力。积极的工作态度和责任心是职场成功的关键因素,通过这一问题,面试官能够初步判断求职者是否适应高强度的工作环境。



  • 岗位匹配度


特定岗位因其工作性质可能需要频繁加班。面试官通过提出加班相关的问题,旨在了解求职者是否能适应这类岗位的工作强度。由于不同岗位对工作强度的要求各异,面试官希望通过这一问题确保求职者对即将承担的角色有明确的认识,从而防止入职后出现期望不一致的情况。



  • 抗压能力


加班往往伴随压力,面试官通过这一问题考察求职者的抗压能力和情绪管理技巧。抗压能力对于职场成功至关重要,面试官借此了解求职者在高压环境下的表现,以判断其是否符合公司的需求。



  • 公司文化


面试官还利用这个问题来评估求职者对公司加班文化的接受程度,以此判断其价值观是否与公司相符。公司文化对员工的工作体验和满意度有着深远的影响,面试官希望通过这一问题确保求职者能够认同并融入公司文化。


回答的艺术


“知己知彼,百战不殆。”在面试中,回答问题的关键在于展现出积极和正向的态度。


请在此添加图片描述



  • 积极态度


在回答有关加班的问题时,表达你对工作的热爱和对公司的忠诚,强调你愿意为了团队的成功而付出额外的努力。这种积极的态度不仅展示了你的职业素养和对工作的热情,还能显著提升面试官对你的好感。


例如:“我非常热爱我的工作,并且对公司的发展充满信心。我相信为了实现公司的目标和团队的成功,适当的加班是可以接受的。”



  • 灵活性和效率


强调你在时间管理和工作效率上的能力,表明你在确保工作质量的同时,会尽可能减少加班的需求。灵活性和效率是职场中极为重要的技能,面试官可以通过这个问题了解你的实际工作表现。


例如:“我在工作中注重效率和时间管理,通常能够在规定的工作时间内完成任务。当然,如果有特殊情况需要加班,我也会全力以赴。”



  • 平衡工作与生活


适当地提到你对工作与生活平衡的重视,并希望公司在安排加班时能够充分考虑到员工的个人需求。平衡工作与生活是职场人士普遍关注的问题,面试官通过这个问题可以了解你的个人需求和期望。


例如:“我非常重视工作与生活的平衡,希望在保证工作效率的同时,也能有足够的时间陪伴家人和进行个人活动。如果公司能够合理安排加班时间,我会非常乐意配合。”



  • 适度反问


在回答时,可以适当地向面试官询问关于公司加班的具体情况,以便更全面地了解公司的加班文化和预期。这样的反问可以展现你的主动性和对公司的兴趣,有助于获取更多信息,做出更加明智的回答。


例如:“请问公司通常的加班情况是怎样的?是否有相关的加班补偿或调休安排?”


最后


所谓士为知己者死,遇良将则冲锋陷阵,择良人则共谋天下。在职场这场没有硝烟的战争中,我们每个人都是一名战士,寻找着属于自己的知己和良将。当面试官提出挑战性问题时,我们不仅要展示自己的能力和才华,更要表现出对工作的热爱和对公司的忠诚。


面对“你能接受加班吗?”这样的问题,我们应以积极的态度、灵活的思维和对工作与生活平衡的重视来回应。这样的回答不仅能展示我们的职业素养,还能让我们在众多求职者中脱颖而出,赢得面试官的青睐。


正如士为知己者死,我们在职场中也要找到那个能理解我们、支持我们的知己;遇良将则冲锋陷阵,我们要在优秀的领导下发挥自己的潜能,为公司的发展贡献力量;择良人则共谋天下,我们要与志同道合的同事共同努力,实现职业生涯的辉煌。


总之一句话,在面试中展现出积极向上的形象,不仅能为我们的职业生涯加分,更能让我们在职场上找到属于自己的价值和归属感。让我们以这句话为指引,勇敢地迎接职场的挑战,书写属于自己的辉煌篇章。


作者:不惑_
来源:juejin.cn/post/7457211584709066792
收起阅读 »

DeepSeek R1 对编程语言未来的预测

欢迎关注我的训练营:云原生AI实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营。 今天分享下 DeepSeek 对于编程语言未来的预测,这个应该也是很多开发者关注的,因为它可能会影响未来的职业选择。 因我自己最近也在关注这方面,所以今天就问...
继续阅读 »

欢迎关注我的训练营:云原生AI实战营,一个助力 Go 开发者在 AI 时代建立技术竞争力的实战营。



今天分享下 DeepSeek 对于编程语言未来的预测,这个应该也是很多开发者关注的,因为它可能会影响未来的职业选择。


因我自己最近也在关注这方面,所以今天就问了 DeepSeek。DeepSeek 给出的回答跟我的想法很一致,所以今天把 DeepSeek 的回答分享出来。


问题:Go、Java、Rust、Python 语言未来前景如何


我的问题是Go、Java、Rust、Python 语言未来前景如何。之所以问这 4 门语言,是因为这四门语言在后端开发中最受欢迎,各自在其擅长的领域中发光发热。


目前,我觉得 Go 和 Java 在领域上有一定程度或者很大程度的重合。Rust、Python、(Go、Java)有其擅长的领域,交叉点不多。


我想弄明白的是,每门语言是否会在其领域继续发展状态,或者会有蚕食其他领域的现象。通过这些,也想知道未来编程语言的选型为何。


DeepSeek 思考过程



提示:以下是 DeepSeek 的思考过程



好的,用户问的是Go、Java、Rust、Python这四种语言的未来前景如何。我需要逐一分析每种语言的特点、现状以及发展趋势,同时比较它们的优缺点和应用场景。首先,我应该回忆每种语言的主要用途和社区活跃度,然后看看市场需求和技术趋势。


对于 Go 语言,它由Google开发,以高并发和高效编译著称,适合云原生和微服务。近年来Docker、Kubernetes的流行推动了Go的应用,尤其是在后端和DevOps领域。但Go在泛型和生态系统方面可能不如其他语言,所以需要评估这些因素是否会影响其未来。


Java作为老牌企业级语言,稳定性强,广泛应用于大型系统、Android开发和大数据。虽然有人认为Java在下降,但它的庞大现有代码库和企业依赖意味着它仍会长期存在。不过,Java需要面对Kotlin等语言的竞争,尤其是在Android开发方面,还有云原生趋势下轻量级语言的挑战。


Rust以内存安全和性能为卖点,逐渐在系统编程、嵌入式和高性能计算领域崭露头角。被Linux内核和Windows驱动采用,说明其潜力。但Rust的学习曲线陡峭,可能在普及上需要时间,但在对安全性要求高的领域会持续增长。


Python作为脚本语言之王,在数据科学、AI、Web开发等领域占据主导。随着AI的爆发,Python的需求持续增长,但性能问题可能在需要高性能的场景中成为瓶颈。不过,Python的易用性和丰富的库支持使其在教育和小型项目中保持优势。


接下来要考虑的是行业趋势,比如云计算的持续增长对Go有利,AI发展促进Python,系统级需求推动Rust,而企业维护则维持Java。同时,新语言的出现是否会影响这些老牌语言,例如Rust可能替代部分C/C++的领域,而Go可能继续在云原生领域扩展。


用户可能的深层需求是选择学习方向或技术选型,需要明确各语言的优劣势和适用场景,帮助他们做出决策。因此,回答时要突出各语言的优势领域和未来可能的发展方向,以及潜在的风险点,比如Java可能面临市场份额被蚕食,但不会很快消失。


总结部分需要对比各语言,指出它们在不同领域的地位,并给出建议,比如根据项目需求选择合适语言,而不是盲目跟风。同时,强调多语言掌握的重要性,因为现代开发往往需要多种技术结合。


DeepSeek R1 四种语言前景分析


以下是 DeepSeek R1 关于 Go、Java、Rust、Python 四种语言的前景分析,结合技术趋势、市场需求和生态系统发展分析如下:


1. Go (Golang)


优势领域



  • 云原生与微服务:Go 的并发模型(goroutine)和高效编译特性使其成为 Kubernetes、Docker、Istio 等云原生工具的首选语言。

  • 高性能后端:适合 API 网关、分布式系统、实时通信等高并发场景(如 Twitch、Uber 的后端)。

  • 开发效率:语法简洁,编译速度快,适合快速迭代的工程团队。


未来前景



  • 持续增长:随着云计算的普及,Go 在云原生领域的地位将进一步巩固。

  • 企业采用:越来越多公司(如字节跳动、腾讯)将 Go 作为核心后端语言。

  • 挑战:泛型支持的完善程度、生态多样性仍需提升。


推荐方向:云原生开发、基础设施工具链、高性能服务端。


2. Java


优势领域



  • 企业级应用:银行、电信、政府等传统行业的核心系统(如 IBM、Oracle 的解决方案)。

  • Android 开发:仍占据主导地位(尽管 Kotlin 在 Android 中逐渐取代)。

  • 大数据生态:Hadoop、Spark、Flink 等框架依赖 Java 生态。


未来前景



  • 稳定但缓慢衰退:Java 的存量市场庞大,但新项目可能更倾向于现代语言(如 Kotlin、Go)。

  • 云原生转型:Quarkus、Spring Native 等框架帮助 Java 适应云原生环境。

  • 挑战:冗长的语法、内存消耗较高,对轻量级场景竞争力不足。


推荐方向:传统企业系统维护、Android 底层开发、大数据工程。


3. Rust


优势领域



  • 系统编程:取代 C/C++ 的潜力(如操作系统、嵌入式、浏览器引擎)。

  • 内存安全:所有权模型彻底解决内存泄漏和数据竞争问题,适合对安全性要求极高的场景(如区块链、金融系统)。

  • 高性能计算:在游戏引擎、实时渲染等领域逐渐应用(如 Discord 的音频服务)。


未来前景



  • 高速增长:被 Linux 内核、Windows 驱动开发等官方支持,逐步进入主流。

  • 生态扩展:WebAssembly、区块链(如 Solana)等领域对 Rust 需求激增。

  • 挑战:学习曲线陡峭,中小型项目采用成本较高。


推荐方向:系统级开发、安全敏感型应用、区块链底层。


4. Python


优势领域



  • 数据科学与 AI:TensorFlow、PyTorch、NumPy 等库的绝对统治地位。

  • 脚本与自动化:运维、测试、爬虫等场景的首选语言。

  • 教育与科研:语法简单,适合快速验证算法和原型开发。


未来前景



  • AI 驱动的霸主:随着生成式 AI(如 ChatGPT)的爆发,Python 需求将持续增长。

  • 性能瓶颈:在需要高性能的场景(如高频交易)可能被 Rust/Go 取代。

  • 生态护城河:庞大的库和社区资源确保其长期不可替代性。


推荐方向:机器学习工程、数据分析、快速原型开发。


综合对比与趋势总结


维度GoJavaRustPython
增长潜力高(云原生)低(存量市场)极高(系统替代)高(AI 驱动)
学习曲线中等中等偏高
性能中等极高
适用领域后端/基础设施企业系统/Android系统/安全/区块链AI/脚本/科研


未来 5 年预测



  1. GoRust 将成为增长最快的语言,分别主导云原生和系统级开发。

  2. Python 因 AI 热潮保持霸主地位,但需警惕性能相关的替代方案。

  3. Java 缓慢衰退,但仍长期占据企业市场。


建议



  • 根据职业目标选择:

    • 追求高薪和前沿技术:优先 Rust 或 Go。

    • 稳重型职业发展:Java 或 Python。



  • 多语言组合:例如 Python(AI) + Go(后端)Rust(底层) + Python(脚本)


个人观点



提示:以下是我个人总结,非 DeepSeek 的输出。



DeepSeek R1 对于四种语言的前景分析、未来 5 年预测及给出的建议,其实跟我的想法是完全一致的。


根据 JetBrains2024 的市场调研,Go 在四种语言中的工资是最高的,背后的原因可能是因为云原生的技术门槛。Go 在云原生领域占据霸主地位,而云原生本身技术门槛要比业务 CURD 高很多,所以薪资自然要比其他语言高。其实,这也说明了,越是门槛高、技术含量高的岗位薪资越有竞争力(这是一句废话)。


Python 依托于其强大的生态及数据处理能力,在 AI 领域成为霸主语言。在 AI 时代,程序员不可避免的要去学习、掌握 Python。


Rust 优点是高性能、高安全,但缺点是学习门槛高、开发效率相较于 Go 低。所以 Rust 很适合系统层软件的开发,反倒不适合应用层软件的开发。在一个业务向的企业中,一般系统层会使用云基础设施,非核心的系统层,也可以用 Go 语言开发。当前很多优秀的系统层软件都是基于 Go 语言开发的。


所以,在一个企业中,系统层软件和应用层软件,往往是二选一的关系,也意味着,在编程语言上,也有了明确的选择:应用型企业选择 Go。如果企业核心产品是系统层软件,那么可以选择 Rust。


所以最终的编程语言选择一般是:Python(AI) + Go(后端) 或 Rust(底层) + Python(AI)。


当然,企业完全可以根据需要选择更多的编程技术栈组合。上述只是介绍一种通用情况下的选择建议。


另外,在编程语言选择时,建议主攻一门核心语言,同时根据职业目标补充其他相关语言,或者在不同阶段调整策略。这样既避免单一风险,又保持专业性。


作者:孔令飞
来源:juejin.cn/post/7475609849939410983
收起阅读 »

央国企求职“性价比分析”:为什么这几年央国企火了?

浣熊say官方网站:hxsay.com/ 浣熊say官方星球:​hxsay.com/about/我的星球/… 正文 不知道最近大家有没有发现,越来越多的人在职业选择上都偏向与央国企、体制内等稳定性较高的岗位,而放弃了去私企、互联网等工资高但是强度大的工作。 从...
继续阅读 »


浣熊say官方网站:hxsay.com/


浣熊say官方星球:​hxsay.com/about/我的星球/…


正文


不知道最近大家有没有发现,越来越多的人在职业选择上都偏向与央国企、体制内等稳定性较高的岗位,而放弃了去私企、互联网等工资高但是强度大的工作。


从我身边的人了解到这一趋势不仅仅存在于工作了多年的职场老油条,希望找个地方躺平,在应届毕业生的群体里面也越来越明显。然而放在10年前,也就是2014年的时候谁毕业要是去国企、体制内可能会被笑话没有理想、躺平。


但是这两年风向仿佛突然变化了,公务员、央国企突然之间变得香了起来,似乎打工人也随着年龄的增长突然明白了一个道理,比起靠着燃烧生命加班挣来的卖命钱以及生活在不知道什么时候就会被干掉的压力之下,不如稳定的央国企来得实在。


35岁被毕业和干到退休的收入差距有多大?


首先叠甲,我这里说的国企是垄断央企的二级以上的公司或者省属国企总部,这些国企一般掌握着国家、省级的核心资源,不违法犯罪的情况下大概率是能干到退休的。当然,如果有人跟我杠说什么某某银行科技子公司,某某央企的孙子公司一样末尾淘汰,一样裁员不稳定,那么我只能说你说得都对!


假设我硕士毕业就去国企,然后月薪8k,2个月年终(央企二级公司,省属国企很容易达到),那么一年的收入是14*0.8 = 11.2w,然后男性目前的法定退休年龄是65岁,从25岁~65岁工作40年,总收入为 448w。


假设你硕士毕业就去互联网大厂,然后月薪3w,4个月年终(这里也是取得平均值来估计的),那么一年的收入为48w,然后35岁一般确实是互联网的大限,25~35岁工作10年,总收入为:480w。


其实,大多数情况下互联网大厂拿到3w的也是凤毛麟角,国企8k一个月的其实还是遍地都是,甚至一些省会的公务员都能达到8k/月甚至更多,两者职业生涯的总收入其实是差不多的。而且这里为了公平都没有考虑随着工龄增长工资的增长情况,其实在互联网大厂拿到100w年薪的难度远远大于你在国企熬年限,涨到1.5w。


所以,其实无论是选择私企打工挣钱,还是垄断国企躺平,你整个职业生涯获得的工资性收入都是差不多的,以2024年的世界观来看,很多私企甚至很难稳定拿到3w/月的工资到35岁。


有时候一个裁员毕业潮下来,你就不得不面临重新找工作的窘境,以前经济好的时候且没有AI时候,从事技术研发的人还可以自信的说我有技术走到哪里都不怕 。 如今,AI取代大多数工作岗位已经是明牌的事情了,那些掌握技术的人可能也不得不担忧自己能否快速找到合适自己的工作。


虽然,最近两会有委员提出取消35岁的年龄限制,我其实个人并不看好这个提案,因为本质说社会上的私企卡35岁主要是因为廉价、能加班的年轻人太多了,企业处于成本考虑肯定愿意招聘这些年轻人,那么上了年龄的中年人不能加班就可以滚蛋了。 这个事情不是一个提案就能解决的,除非整个职场氛围得到了改变,所有公司都将老员工视作一种公司财富而不是消耗品的时候,才是35岁年龄其实真的消失的时候。


普通打工人还真的需要考虑当你年龄上来之后,失去手头这份工作之后怎么办,你辛辛苦苦寒窗苦读这么多年,出入的高级写字楼,做的都是产值上千万的项目。突然让你失业在家,跑滴滴,送外卖这个心里落差你能接受吗?


当35岁你在街头送着外卖,跑着滴滴,你在央国企的同学或许已经是一个小领导,你去当公务员的同学现在是一个科长,他们再不济也是个小职工有着稳定的收入,不太为生计发愁,不知道那个时候的同学聚会你还有心情去参加不?


对于打工人来说稳定到底意味着什么?


20多岁的年轻人总觉得世界是自己的,脑子里面全部是幻想,总觉得爽文小说当中的主角是自己,不说大富大贵至少能够在企业混的风生水起,升职加薪,当上领导。


这些愣头青的想法我也有过,但是对大多数没有抱上大腿的人来说,工作2~3年之后就会让你明白这个世界的真实运转规则,很多事情不是下位者能够决定的,无论是在国企还是私企,本质上事情还是上位者说了算。


简单来说就是,领导说你行你就是行,领导说你不行那么就赶紧想办法跑路吧。


这种情况在私企、国企其实都会遇到,大家刻板印象中老是说国企的官僚主义严重,但是其实私企才是官僚主义更加严重的地方,而且比起来国企就是小打小闹。


本质上来说在真的央国企你的领导实际上是没有人事权的,他就算再讨厌你也只能通过调岗、扣绩效等方式来恶心你,但是真的没办法裁掉你。


但是在私企领导其实就是你们这个地方的土皇帝,你让领导不开心或者领导不喜欢你,那么是真的可以裁掉你,可能就是一句话的事你下午就不用来上班了都是有可能的事情。在这种地方,你除了舔领导,拼命加班,拼命卷之外没有任何办法,因为上位者掌握着你的生死存亡。


在这种极度竞争和内卷的环境下,你的全部精力都会投入到工作当中,但是其实你并不参与蛋糕的分配,也就是你卷出来的成果、剩余价值大部份被老板拿走了。同时,高强度的工作还会剥夺你其它的可能,让你没时间陪家人,没时间发展自己的事业,当你不得不开始发展自己的事业的时候,就是你已经失业的时候。


而在央国企的工作情况就会好很多,首先大多数岗位是比较稳定的,你不用过于担心失业裁员的情况发生。其次,至少在项目不忙的时候,你的休息时间是可以保障的,利用这些时间你其实可以选择发展自己的事业,就像刘慈心一样写科幻小说未来说不定能从副业上面赚到你一辈子赚不到的钱。


所以,比起那些完全占用你时间和心智的工作,我其实觉得轻松但是钱不那么多的工作更加适合一个人的长期发展,从一生的尺度上看财富积累未必会比短短的靠25~35这10年间挣到的钱少。


为什么这几年央国企火了?


其实很多在校的学弟、学妹们沟通,我发现现在的孩子比我们当年看得明白很多,也可能是不同的时代背景造就了不同的人的观点。


我们还是学生的时候听到的故事还都是什么王者荣耀100个月年终,互联网财富自由之类的神话,但是疫情的3年互联网和诸多的财富神话跌落神坛,大多数普通人能够保住手头的这份工作就是件值得庆幸的事情了。 即使是去华为、阿里、腾讯这样的大厂也很难有机会再实现当年的财富神话,技术改变世界的思潮也正在慢慢退潮,现在这些大厂也很难让你挣到财富自由的钱,逐渐变成了一份普通工作而已。


当你在校园中搏杀了20几年好不容易拿到了学士、硕士、博士文凭,这些私企会告诉你现实的残酷,你手中的文凭只能帮你到入职的3个月,之后就各凭本事了。 资本是逐利的,中国的企业更加喜欢揠苗助长,没有任何培养一个员工的文化在里面。所谓的培养更多的是PUA,告诉你这儿也不行,哪儿也不行,然后在绩效考核的时候顺利成章的把锅甩给你,来满足组长必须找一个倒霉蛋背绩效的制度要求。 我不否认能力极强者、能卷的人在这种环境中能够获得快速的升职加薪和财富,但并不是每个人都是大神,也不是每个人在做好本职工作之外还有心情去舔领导。


入职央国企能够在很大成都上帮你避免上述的问题,大型的央国企平台很大有足够的时间和资源来让员工成长,对于刚入职的新员工可能前面半年都不会给你安排真正意义上的工作,多数是各种培训,各种学习。 我以前经常听到在国企的同学抱怨又是什么培训、什么学习、什么党会,让人觉得很烦没有意义,但是在我看来每个人都应该感恩这些公司花着钱让你不干活儿的活动,真的不是所有的公司都这么有耐心。 除此之外,很少有央国企会期待从你身上压榨什么,因为大多数央国企从事的都是垄断行业,拥有足够的利润,并且这些利润也并非属于领导或者某个人的,而是属于整个集团,国家。你和领导本质上都一样,只是这个国企的打工人,没必要压榨你太过分,毕竟赚的钱也一分不会到领导自己包里,对你个人的包容性也会更强一些。


所以当经济增长变缓,私企难以让人挣到足以财富自由的钱,大家就会发现其实没有必要去承担那么大的压力只是比稳定的工作多一点儿钱。这个时候一份稳定、有自己业余时间的央国企工作性价比就变得更高了起来。一边可以用工资保障自己的生活,一边开拓自己的事业在副业这个第二战场挣到更多的钱,确实会比在私企打工35被裁要体面得多。


The End


其实对于职业的选择,有一个核心逻辑就是去门槛更高的地方。


有的人说,大厂门槛很高啊,问那么多技术,刷那么多题,也是万里挑一才能进去一个人。


但是,实际上这些东西不算门槛,真正的门槛是把人堵在外面的不可逾越的鸿沟,比如说:如果你本科不是学的临床专业,那么你一辈子都没办法当上医生,除非重新高考!这才是真正意义上的门槛,而无论是多么高深的技术,只要肯学都能够学会的。


所以,大型垄断央国企其实是个门槛更高的地方,好的岗位除了应届生就没有就会进去,同时一旦进去占住坑了也很难被裁掉,除非你自己离职。大家可能经常会听说哪个国企的用自己的业余时间努力学习然后去了互联网大厂的。但是你可能完全没有听过那个私企的毕业没去 "中国烟草" 靠着自己的不懈努力,社招进入了中国烟草。


如果是应届生,尽量去门槛高、稳定的地方,考虑长期发展而不是贪图短时间的利益,这样一来即使你的能力没有那么强,也可以用马拉松的方式跑到最后。


人生是一段长跑,不到最后一刻不知道谁输谁赢,就算是活得比别人长,那么其实你最后也胜利了。


作者:浣熊say
来源:juejin.cn/post/7343161077061992458
收起阅读 »

小红书创始人瞿芳,武汉人,北京外国语大学毕业,2013 年从外企离职,目前身价 120 亿

大家好,我是二哥呀。 今天我们来聊聊小红书的创始人瞿芳,1985 年出生于湖北武汉,毕业于武汉外国语学校,硕士就读于北京外国语学校。 毕业后进入贝塔斯曼工作,这是一家老牌外企,1835 年就有了,真的非常老,瞿芳在这里工作了 5 年。 瞿芳的执行力也是拉满,2...
继续阅读 »

大家好,我是二哥呀。


今天我们来聊聊小红书的创始人瞿芳,1985 年出生于湖北武汉,毕业于武汉外国语学校,硕士就读于北京外国语学校。


毕业后进入贝塔斯曼工作,这是一家老牌外企,1835 年就有了,真的非常老,瞿芳在这里工作了 5 年。


瞿芳的执行力也是拉满,2013 年 5 月底离职,6 月赴美寻找风投,7 月初就和老乡毛文超在上海创立了小红书的母公司行吟信息科技有限公司。


长相上我觉得有一点邓丽君的感觉,大家觉得呢?



  • 2015-2016 年,瞿芳连续两年被《创业邦》评为“值得关注的女性创业者”;这些年小红书的成长,瞿芳确实功不可没,值得关注。

  • 2017 年,瞿芳荣登腾讯“我是创始人”荣耀榜单;小红书背后有阿里和腾讯两家大佬的投资,原来两家是从来不投一家公司的,瞿芳背后的斡旋算是让两家暂时握了手。

  • 2020 年,瞿芳入选“中国最具影响力的 30 位商界女性”榜单;目前来看,小红书还处在上升势头,并且流量拉满,瞿芳的身价肯定也会水涨船高。

  • 2024 年,瞿芳以 120 亿元的人民币财富位列《2024-胡润榜》的第 433 位;这还是在小红书没有上市的情况下。


瞿芳曾在采访中强调,用户体验和社区氛围是小红书最看重的


这也是小红书这个平台和微博、抖音最大的区别,你可能在小红书上百粉不到,但发布的内容却会被推荐到平台首页,成为爆款。


微的推荐机制现在也有这种趋势,就是粉丝数越少,反而被推荐的机会越多。


沉默王二 2024 年就有 3000 万次阅读


瞿芳认为,品牌与用户的沟通应该从“教学模式”转向“恋爱模式”。


也就是说,我们创作者不能再以老师的角度切入,把读者作为学生来传达信息,而是奔着双方恋爱的方式切入。


更加的纯粹,双方的地位更加的对等。


宝子们,都看到了吧,我爱你们,😄


2013 年的时候,跨境旅游开始兴起,于是,瞿芳就和毛文超一起去找当地的购物达人,把他们的经验编成了一本厚厚的 PDF,书名就叫“小红书”。


这本 PDF 放到网上以后,引起了巨大的反响,一个月的下载量就突破了 50 万次。


尝到了甜头后,瞿芳和毛文超再接再厉,于 2013 年 12 月上线了小红书 App,相当于提供了一个购物的分享平台,注意不是电商平台,而是社区分享平台,让用户来分享自己的购物心得。


这个定位就非常的巧妙。


如果单纯地做电商平台,那么竞争对手多了去,比如说淘宝、天猫、京东,以及拼多多。


但做社区平台的话,当时还没有什么竞争对手,虽然点评和美图秀秀都曾在自己的业务中加入大量的社区内容,并放出豪言,但最终都没有竞争过小红书。


2014 年,小红书就聚集了几百万用户了,于是瞿芳就上线了一款希腊产的清洗液,结果直接被秒光了。


到 2017 年,小红书的营收就突破了 100 亿。


截止到目前,小红书已经发展成为了一个生活社区,基本上你想要的东西,你想找的地方,你想看的美女,小红书上都有。据说,月活用户已经达到了 3 亿。


其中女性用户占比 70%,日均用户搜索渗透率达到 60%,用户生成内容(UGC)占比高达 90%。


根本不需要 KOL。


2025 年 1 月,由于 TikTok 可能会被美国封禁,所以大量的海外用户开始涌入小红书。


中西文化的融合,在此刻显然格外的自然和松弛。


我现在打开小红书,已经很少看到原住民发的东西了,这波算法也被太平洋彼岸的热情感染了。



瞿芳在一次采访中的一段话我觉得很值得分享给大家,我套用一下:



“就像今天手机屏幕前的你们,可能大学生可能是工作党,但不管大家是怎样的身份,回到家里,可能还是会跟家人吃一顿最简单的饭,跟最爱的人一起去做一些有创造性的事情。”



我们要回到生活中去,而不只是活在虚拟世界里。


三分恶面渣逆袭


我这人一向说到做到,每天给大家汇报一下面渣逆袭的进度,这就来。今天修改到第 36 题。


35.你们线上用的什么垃圾收集器?


我们生产环境中采用了设计比较优秀的 G1 垃圾收集器,因为它不仅能满足低停顿的要求,而且解决了 CMS 的浮动垃圾问题、内存碎片问题。


G1 非常适合大内存、多核处理器的环境。



以上是比较符合面试官预期的回答,但实际上,大多数情况下我们可能还是使用的 JDK 8 默认垃圾收集器。



可以通过以下命令查看当前 JVM 的垃圾收集器:


java -XX:+PrintCommandLineFlags -version

二哥的 Java 进阶之路:JDK 默认垃圾收集器


UseParallelGC = Parallel Scavenge + Parallel Old,表示新生代用Parallel Scavenge收集器,老年代使用Parallel Old 收集器。


因此你也可以这样回答:


我们系统的业务相对复杂,但并发量并不是特别高,所以我们选择了适用于多核处理器、能够并行处理垃圾回收任务,且能提供高吞吐量的Parallel GC


但这个说法不讨喜,你也可以回答:


我们系统采用的是 CMS 收集器,能够最大限度减少应用暂停时间。


内容来源


三分恶的面渣逆袭:javabetter.cn/sidebar/san…
二哥的 Java 进阶之路(GitHub 已有 13000+star):github.com/itwanger/to…


最后,把二哥的座右铭送给大家:没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。共勉 💪。


作者:沉默王二
来源:juejin.cn/post/7461772464738402342
收起阅读 »

谈谈在大环境低迷下,找工作和入职三个月后的感受

前言 今天是新公司入职后的三个多月了个人也是如愿的转正了,对于我个人而言此时的心情好像没有三个月前刚拿到offer那样的喜悦和兴奋了,更像一件很普通的事情在你身边发生了吧。从2023年底离职在到2024年初开始找工作中间休息了三个月,找工作到入职花了一个多月,...
继续阅读 »

前言


今天是新公司入职后的三个多月了个人也是如愿的转正了,对于我个人而言此时的心情好像没有三个月前刚拿到offer那样的喜悦和兴奋了,更像一件很普通的事情在你身边发生了吧。从2023年底离职在到2024年初开始找工作中间休息了三个月,找工作到入职花了一个多月,在这个过程中也是第一次真真切切感受到了所谓大环境低迷下的“前端已死的言论”,也给大家分享一下自己入职三个月的个人感受吧。


从上一家公司离职时的个人感受


因为上一家公司的工作性质是人力外包驻场开发,年底客户公司(中国移动成都产业研究院)我所在的项目组不需要外包人员了,个人也是被迫拿了赔偿灰溜溜的走人了。


工作感受:对于这段工作经历我个人还是比较认可的,毕竟这里没有任何工作压力,也不加班,工作量少,有很多时间去学习新东西,做做自己的开源,认识了新的朋友等等。


学历的重要性:在这里面随便拎一个人出来可能就是研究生学历的国企单位,自己真实的意识到了学历的重要性(第一学历小专科的我瑟瑟发抖)。


和优秀的人共事:如果在一个长期压抑低沉消极的环境下工作无论你的性格在怎么积极乐观开朗,可能也很容易被影响到。相反如果是和在一群积极乐观开朗充满自信的环境和人一起工作,相信你也会变得积极,乐观,自信这或许也是我这一段工作经历最大的收获吧。


2023年底找工作的市场就业环境


抱着试一试的心态在boss上更新了自己的简历状态,不出所料软件上面安静的奇怪ps:49入国军的感觉已读未回可能是很失望的感觉吧,但年底找工作令人绝望的是大多数公司都是未读未回,这也就意味着年底基本上是没有正常公司招聘的了。


大概投了两周简历后终于在智联招聘上约到了一个短期三个月岗位的面试,现场两轮面试通过了,不过最终还是没有选择去。


原因有很多:



  1. 现场的工作环境个人感觉很压抑,从接待我前台和面试官都能感觉满脸写着疲惫

  2. 说公司最近在996,你也需要和我们一起

  3. 招聘岗位和工作内容是threejs开发,薪资却说只能给到普通前端开发的水平

  4. 人力外包公司hr的反复无常令我恶心,二面通过后hr给我打电话最主要就是聊薪资吧,电话内容也很简单hr:成都大部分前端的薪资是在XX-XX,可能给不到你想要的薪资,可能要往下压个1-2K。:我提的薪资完全是在你们发布招聘岗位薪资的区间,既然你们给不到为什么要这样写了(有感到被侮辱了)。过了几天之后人力外包的hr又给我电话,说可以在原来提的薪资基础上加1.4K,希望能早点去客户公司入职。


总结:年底招聘的公司基本上没啥好鸟,如果你的经济能力还行的话让自己放松休息一段时间也是不错的选择


2024年初找工作:真实的感受到了大环境的低迷下的市场行情


印象最深刻的是在疫情时期的2021年,那会儿出来找工作boos上会有很多HR主动给你打招呼,一周大概能五六个面试,大专学历也有机会去自研公司


解封之后本以为市场行情会变得回缓,结果大概就是今年可是未来十年行情最好的一年


简单总结一下2024年的成都就业环境大概这样的:



  1. 只有外包公司会招专科学历

  2. boss上只给hr发一句打招呼的快捷语,99% 都是已读不回

  3. 大多数要完简历之后就没有后续了

  4. 待遇好的公司对于学历的要求更严格了(211,985)

  5. 给你主动打招呼的基本上都是人力外包公司


截至入职新公司前boss上面的投递状况:沟通了1384个岗位,投递了99份简历,一共约到了 8 家公司的面试


image.png


今年找工作的个人感受:不怕面试,就怕没有面试机会


首先说一下个人的一些情况吧,因为在创业小公司待过在技术栈方面个人认为算是比较全面的了


项目经验:做过管理系统(CRM,B2C,ERP,saas等管理系统)、商城和门户网站(响应式,自适应)、移动端(H5,小程序,app)、低代码和可视化(工作流,可视化大屏,3d编辑器)、第三方开发(腾讯IM,企业微信侧边栏)、微前端


项目经历:从0-1搭建过整个大项目的基建工作,封装过项目中很多功能性组件和UI组件二次封装(提高开发效率),接手过屎山代码并重构优化,约定项目的开发规范,处理很多比较棘手的疑难bug和提供相关的技术方案,没有需求概念下的敏捷开发,从0-1的技术调研等


代码方面:写过几个开源项目虽然star数量不多(目前最多一个项目是600+),但在代码规范和可读性方面个人认为还是比较OK的(至少不会写出屎山代码吧)


工作经验(4年):2020毕业至今一直从事前端开发工作


学历:自考本科学历(貌似没啥卵用)


学历确实是我很硬伤的一个点但是没办法,人嘛总归要为年轻时的无知买单吧


在这样的背景下开启了24年的找工作,从2月26号开始投递简历到4月1号拿到offer差不多一个多月左右时间,一共约到了8加公司的面试,平均一周两家公司


大概统计了一下这些公司的面试情况:


公司A:



  1. 数组哪些方法会触发Vue监听,哪些不会触发监听

  2. position 有哪些属性

  3. vue watch和computed的区别,computed和method的区别

  4. vue的watch是否可以取消? 怎么取消?

  5. position:absolute, position:fixed那些会脱离文档流

  6. 如何获取到 pomise 多个then 之后的值

  7. 常见的http状态码

  8. 谈谈你对display:flex 弹性盒子属性的了解

  9. 如何判断一个值是否是数组

  10. typeof 和instanceof的区别

  11. es6-es10新增了那些东西

  12. 离职原因,期望薪资,职业规划


公司B


到现场写了一套笔试题,内容记不清楚了


公司C



  1. vue router 和route 区别

  2. 说说重绘和重排

  3. css 权重

  4. 项目第一次加载太慢优化

  5. 谈谈你对vue这种框架理解

  6. sessionstorage cookie localstorage 区别

  7. 了解过.css 的优化吗?

  8. 闭包

  9. 内存泄漏的产生

  10. 做一个防重复点击你有哪些方案

  11. 解释一些防抖和节流以及如何实现

  12. 说一下你对 webScoket的了解,以及有哪些API

  13. 说一下你对pomise的理解

  14. vue2,vue3 中 v-for 和v-if的优先级

  15. 说说你对canvas的理解


公司D


笔试+面试



  1. vue 首屏加载过慢如何优化

  2. 说说你在项目中封装的组件,以及如何封装的

  3. 后台管理系统权限功能菜单和按钮权限如何实现的

  4. vue 中的一些项目优化

  5. 期望薪资,离职原因,

  6. 其他的记不清楚了


公司E


笔试+面试+和老板谈薪资


1.笔试:八股文


2.面试:主要聊的是项目内容比如项目的一些功能点的实现,和项目的技术点


3.老板谈薪资:首先就是非技术面的常规三件套(离职原因,期望薪资,职业规划),然后就是谈薪资(最终因为薪资给的太低了没有选择考虑这家)


公司F


也是最想去的一家公司,一个偏管理的前端岗位(和面试官聊的非常投缘,而且整个一面过程也非常愉快感受到了十分被尊重)


可惜的是复试的时候因为学历原因,以及一些职业规划和加班出差等方面上没有达到公司的预期也是很遗憾的错过了


一面:



  1. vue 响应式数据原理

  2. 说说es6 promise async await 以及 promise A+规范的了解

  3. 谈谈es6 Map 函数

  4. 如何实现 list 数据结构转 tree结构

  5. webScoke api 介绍

  6. webScoke 在vue项目中如何全局挂载

  7. vuex 和 pinia 区别

  8. 谈谈你对微任务和宏任务的了解

  9. call apply bind 区别

  10. 前端本地数据存储方式有哪些

  11. 数组方法 reduce 的使用场景

  12. 说说你对 css3 display:flex 弹性盒模型 的理解

  13. vue template 中 {{}} 为什么能够被执行

  14. threejs 加载大模型有没有什么优化方案

  15. 离职原因,住的地方离公司有多远,期望薪资

  16. 你有什么想需要了解的,这个岗位平时的工作内容


二面:


1.我看写过一个Express+Mongoose服务端接口的开源项目,说说你在写后端项目时遇到过的难点


2.介绍一下你写的threejs 3d模型可视化编辑器 这个项目


3.以你的观点说一下你对three.js的了解,以及three.js在前端开发中发挥的作用


4.现在的AI工具都很流行,你有没有使用过AI工具来提高你对开发效率


5.说说你认为AI工具对你工作最有帮助的地方是哪些


6.以你的观点谈谈你对AI的看法,以及AI未来发展的趋势


7.你能接受出差时间是多久


8.你是从去年离职的到今天这这几个月时间,你是去了其他公司只是没有写在简历上吗?


9.说说你的职业规划,离职原因,你的优点和缺点,平时的学习方式


公司G


一共两轮面试,也是最终拿到正式offer入职的公司


一面:



  1. 主要就是聊了一下简历上写的项目

  2. 项目的技术难点

  3. 项目从0-1搭建的过程

  4. 项目组件封装的过程

  5. vue2 和 vue3 区别

  6. vue响应式数据原理

  7. 对于typescript的熟练程度

  8. 会react吗? 有考虑学习react吗?

  9. 说一下你这个three.js3d模型可视化编辑器项目的一个实现思路,为什么会想写这样一个项目


二面:



  1. 说说了解的es6-es10的东西有哪些

  2. 说说你对微任务和宏任务的了解

  3. 什么是原型链

  4. 什么是闭包,闭包产生的方式有哪些

  5. vue3 生命周期变化

  6. vue3 响应式数据原理

  7. ref 和 reactive 你觉得在项目中使用那个更合适

  8. 前端跨越方式有哪些

  9. 经常用的搜索工具有哪些?

  10. 谷歌搜索在国内能使用吗?你一般用的翻墙工具是哪种?

  11. 用过ChatGPT工具吗? 有付费使用过吗?

  12. 你是如何看待面试造航母工作拧螺丝螺丝的?

  13. 谈谈你对加班的看法?

  14. 你不能接受的加班方式是什么?

  15. 为什么会选择自考本科?

  16. 你平时的学习方式是什么?

  17. 一般翻墙去外网都会干什么?,外网学习对你的帮助大吗?

  18. 上一家公司的离职原因是什么,期望薪资是多少, 说说你的职业规划

  19. 手里有几个offer?


hr电话:



  1. 大概说了一下面试结果通过了

  2. 然后就是介绍了一下公司的待遇和薪资情况?

  3. 问了一下上一家公司的离职原因以及上一家公司的规模情况?

  4. 手里有几个offer?

  5. 多久能入职?


因为后面没有别的面试了,再加上离职到在到找工作拿到offer已经有四个月时间没有上班了,最终选择了入职这家公司


image.png


入职第三天:我想跑路了!


入职后的第一天,先是装了一下本地电脑环境然后拉了一下项目代码熟悉一下,vue3,react,uniapp 项目都有


崩溃的开始:PC端是一个saas 系统由五个前端项目构成,用的是react umi 的微前端项目来搭建的,也是第一次去接触微前端这种技术栈,要命的是这些项目没有一个是写了readme文档的,项目如何启动以及node.js版本这些只能自己去package.json 文件去查看,在经过一番折腾后终于是把这几个项目给成功跑起来了,当天晚上回家也是专门了解了一下微前端


开始上强度: 入职的第二天被安排做了一个小需求,功能很简单就是改个小功能加一下字段,但是涉及的项目很多,pc端两个项目,小程序两个项目。在改完PC端之后,开始启动小程序项目不出所料又是一堆报错,最终在别的前端同事帮助下终于把小程序项目给启动成功了。


人和代码有一个能跑就行:入职的第三天也从别的同事那里了解到了,之前sass项目组被前端大规模裁员过,原因嘛懂得都懂? 能写出这样一堆屎山代码的人,能不被裁吗?


第一次知道 vue 还可以这样写


image.png


对于一个有代码强迫症的人来说,在以后的很长一段时间里要求优化和接触完全是一堆屎山一样代码,真的是很难接受的


入职一个月:赚钱嘛不寒掺


在有了想跑路的想法过后,也开始利用上班的空余时间又去投递简历了,不过现实就是在金三银四的招聘季,boss上面依旧是安静的可怕,在退一步想可能其他公司的情况也和这边差不多,于是最终还是选择接受了现实,毕竟赚钱嘛不寒掺


入职两个月:做完一个项目迭代过后,感觉好多了


在入职的前一个月里,基本上每天都要加班,原因也很简单:


1.全是屎山的项目想要做扩展新功能是非常困难的


2.整个项目的逻辑还是很多很复杂的只能边写项目边熟悉


3.因为裁了很多前端,新人还没招到,但是业务量没有减少只能加班消化


功能上线的晚上,加班到凌晨3点


image.png


在开发完一个项目迭代过后也对项目有了一些大概的了解,之后的一些开发工作也变得简单了许多


入职三个月:工作氛围还是很重要滴


在入职三个月后,前端组团队的成员也基本上是组建完成了,一共14人,saas项目组有四个前端,虽然业务量依然很多但是好在有更多的人一起分担了,每周的加班时间也渐渐变少了


在一次偶然间了解到我平时也喜欢打篮球后,我和公司后端组,产品组的同事之间也开始变得有话题了,因为大家也喜欢打球,后来还拉了一个篮球群周末有时间大家也会约出来一起打打球


image.png


image.png


当你有存在价值后一切的人情世故和人际关系都会变得简单起来


在这个世界上大多数时候除了你的父母等直系亲属和另一半,可能会对你无条件的付出


其余任何人对你尊重和示好,可能都会存在等价的利益交换吧


尤其是在技术研发的岗位,只有当你能够完全胜任这份工作时,并且能够体现出足够的价值时才能够有足够的话语权


入职三个月后的感受



  1. 公司待遇:虽然是一个集团下面的子公司 (200+人)但待遇只能说一般吧,除了工资是我期望的薪资范围,其他的福利待遇都只能是很一般(私企嘛,懂得都懂)

  2. 工作强度: 听到过很多从大厂来的新同事抱怨说这边的工作量会很大,对我来说其实都还ok,毕竟之前在极端的高压环境下工作过

  3. 工作氛围:从我的角度来讲的话,还是很不错的,相处起来也很轻松简单,大家也有很多共同话题,没有之前在小公司上班那么累


大环境低迷下,随时做好被裁掉的准备


从2020年毕业工作以来,最长的一段工作经历是1年4个月,有过三家公司的经历


裁员原因也很简单:创业小公司和人力外包,要么就是小公司经营问题公司直接垮掉,或者就是人力外包公司卸磨杀驴


除非你是在国企单位上班,否则需要随时做好被裁掉的准备


什么都不怕,就怕太安逸了


这句话出自《我的团长我的团》电视剧里面龙文章故意对几十个过江的日本人围而不歼时和虞啸卿的对话,龙文章想通过这几十个日本人将禅达搅得鸡犬不宁,来唤醒还在沉睡在自己温柔乡的我们,因为就在我们放松警惕时日本人就已经将枪口和大炮对准了我们。


或许大家会很不认同这句话吧,如果你的父母给你攒下了足够的资本完全可以把我刚才的话当做放屁,毕竟没有哪一个男生毕业之前的梦想是车子和房子,从事自己喜欢的工作不好吗? 但现实却是你喜欢工作的收入很难让你在这座城市里体面的生活


于我而言前端行业的热爱更多是因为能够给我带来不错的收入所以我选择了热爱它吧,所以保持终身学习的状态也是我需要去做的吧


前端已死?


前端彻底死掉肯定是不会的,在前后端分离模式下的软件开发前端肯定是必不可少的一个岗位,只不过就业环境恶劣下的情况里肯定会淘汰掉很多人,不过35岁之后我还是否能够从事前端行业真的是一个未知数


结语


选择或者躺平,只是两种不同的生活态度没有对与错,偶尔躺累了起来卷一下也是可以的,偶尔卷累了躺起了休息一下也是不错的。


在这个网络上到处是人均年收入百万以及各种高质量生活的时代,保持独立思考,如何让自己不被负面情绪所影响才是最重要的吧


作者:答案answer
来源:juejin.cn/post/7391065678546157577
收起阅读 »

裸辞后,我活得像个废物,但我终于开始活自己

哈喽,大家好!我是Web大鹅只会叫!下去沉淀了那么久,终于有时间回来给大家写点什么了! 你问我人为什么活着?我哪知道啊?我又不是上帝!释迦牟尼为了解这个问题还跑去出家,结果发现人活着就是为了涅槃——也就是死。所以别问我人生的意义,我也没搞明白!不过我能告诉你...
继续阅读 »

哈喽,大家好!我是Web大鹅只会叫!下去沉淀了那么久,终于有时间回来给大家写点什么了!


image.png


你问我人为什么活着?我哪知道啊?我又不是上帝!释迦牟尼为了解这个问题还跑去出家,结果发现人活着就是为了涅槃——也就是死。所以别问我人生的意义,我也没搞明白!不过我能告诉你一个答案,那就是裸辞后,我终于知道了为什么要活着——那就是为了“活得自由”!


裸辞后,那些走过的路,和你说的“脏话”


2024年8月,我做了一个震惊所有人的决定——裸辞!是的,没错,我就是那种毫不犹豫地辞了职、丢下稳定收入和安稳生活,拿着背包去走四方的“疯子”。放下了每天早起20公里开车上班的压力,放下了无聊的加班、枯燥的开会,放下了所谓的“你要努力争取美好生活”的叮嘱。一切都在“离开”这一刻轻轻拂去,带着一种挥之不去的自由感。


带着亲人的责怪、朋友的疑问、同事的眼神、以及自己满满的疑惑,我开始了这段没有目的的旅行。我不知道我想找什么,但我知道,我不想再活得像以前那样。


我走过了无数地方,南京、湖州、宁波、杭州、义乌、金华、嘉兴、镇江、扬州、苏州、无锡、上海……一路走来,路过了每个风景,每个城市,每个人生。我甚至去了中国最北的漠河,站在寒风凛冽的雪地里,终于明白了一个道理:“你活着,才是最值得庆祝的事。


你知道吗,最让人清醒的,不是远方的景色,而是走出去之后,终于能脱离了那一套“你该做什么”的公式。每天不用设闹钟,不用准时吃饭,不用打卡上班,不用开会骂娘,再也不被地铁里的拥挤挤得喘不过气。生活突然变得宽松,我竟然开始意识到:我一直追求的美好生活,原来只是在为别人拼命。


走出内卷圈子的那一刻,我认为我是世界上最快乐的小孩了,我们渴望着幸福却糟践着现在,你所期望的美好未来却始终都是下一个阶段!你认为你是一个努力拼搏美好未来的人。可是现实比理想残酷的多!你没日没夜的拼搏,却让别人没日没夜的享受!你用尽自己半条命,换来的是下半辈子的病!我在裸辞后就告诉我自己:从今以后你想干什么、就干什么!你就是世界的主人! 嗯~ 爽多了!


走过的路,都在暗示我


我在大兴安岭漠河市的市里住了5天,住在一个一天40元的宾馆、干净、暖和!老板是一个退休的铁道工人。脸和双手都布满了冻伤,他的妻子(大姨)很面善。每天都会在我回来的时候和我聊上几句从前,安排一些极寒天气的注意事项。


有一天我去北极村回来,大姨和我聊了一会。大姨对我讲:“趁年轻、别把自己困起来,出去走走。不像我们,60年没出过这片土地,到头还要葬在这片土地上!”。她说这句话的时候没有忧虑、没有悲伤,却是一种满足感。是啊!60多了,还能追求什么?忙了大半辈子,把孩子都送出了这片土地,自己也没有激情出去走走了,很害怕自己的以后也是这样。


我20多岁的年纪,想的不是努力拼搏挣钱、不是搞事业。却总想着无所事事。我觉得自己像一个没有完全“被时间遗弃”的人,我甚至觉得自己不属于这个时代,这个不知道为了什么而拼命的时代。每走一步都好像在掏空自己积压已久的情绪:压力、焦虑、焦灼,让我很享受这种感觉。然后我想起来一本书里的话:“你活着,不是为了活给别人看。“ 是啊,我们都明白这个大道理,可自己从来没打算让自己脱离这个主线。我开始明白,我这次的旅行不是去寻找什么,而是放下什么!


从别人嘴里听到的“脏话”,其实是自己内心的尖刺


这段时间里,我经常回想起来那些让我神经紧绷的日子。尤其是我对“人” 这个物种越来越敏感的那个时期————‘恶毒、自私、无理、肮脏’。朋友的欺骗、同事的推锅、亲人的折磨都是罪恶的!可是到头来,事情还是发生了。地球还是在自转,太阳一样正常升起落下。这些都没有在你认为的这些琐事中消失。我不明白我还在纠结什么?


事实上,这些乱七八糟的事情并不是指向我个人的,它只是我内心脆弱的反射。是的,我一直在内耗自己罢了,把自己放在了一个焦虑的漩涡里。假装没事、假装坚强,结果别人一句话就能作为击垮我的最后一击。直到有一天,我发现我讨厌的只是我自己。所以我决定我不要去在意别人说什么、做什么,我不要逃避问题,我想听听我内心的想法,我不想让自己认为别人在定义我。


过程的意义:也许就是为了“停一停”


好了,我知道我的文采不好,但是也应该有个结尾。


在这一路上,我认识了很多有趣的人,他们不同风格的服装、不同口音,各式各样的生活方式。也有着各式各样的理想和困惑。有的喜欢在山顶等着日出的奇迹,有的则是想在湖边静静地坐着。而我,就是个迷途的羔羊,没有群体头羊的带领,我穿行在这些不同的路途中,慢慢摸索着向所有方向前进着。


偶尔我也会停下来,坐在湖边吹着风、闭上眼睛,听风,感受这一刻的宁静。然后我会微笑,我认为这个时候的我有了轻松的感觉。生活的答案我在这个时候找到了。


我意识到,未来不是重要的,现在才是应该享受的。我不知道我下一步要去哪里,但是我想先停下来看一看,呼吸一下。停下来不是因为我没有了目的,而是我知道,目的地并不重要,重要的是,我和自己在一起,心里不再有那么多焦虑,不再被过去的焦虑所束缚。


所以,我选择了离开,离开这一切,放下所有的焦虑和期待,享受我自己想要的生活。也许,活着的意义不在于追寻一个遥远的目标,而是过好每一个‘现在’。


作者:Web大鹅只会叫
来源:juejin.cn/post/7454064311079813132
收起阅读 »

好人难当,坏人不做

好人难当,以后要多注意了,涨点记性。记录三件事情证明下: 1. 免费劳动 之前和一个同学一起做一个项目,说是创业,不过项目做好了,倒是他家店铺自己用起来了,后来一直让我根据他家的需求进行修改,我也一一的改了,他倒是挺感谢我的,说是请吃饭。不过也一直没请,后面都...
继续阅读 »

好人难当,以后要多注意了,涨点记性。记录三件事情证明下:


1. 免费劳动


之前和一个同学一起做一个项目,说是创业,不过项目做好了,倒是他家店铺自己用起来了,后来一直让我根据他家的需求进行修改,我也一一的改了,他倒是挺感谢我的,说是请吃饭。不过也一直没请,后面都一年多过去了,还让我免费帮他改需求,我就说没时间,他说没时间的话可以把源码给他,他自己学着修改,我就直接把源码给他了,这个项目辛苦了一个多月,钱一毛也没赚到,我倒是搭进去一台服务器,一年花了三百多吧。现在源码给他就给他了吧,毕竟同学一场。没想到又过了半年,前段时间又找我来改需求了。这个项目他们家自己拿着赚钱,又不给我一毛钱,我相当于免费给他家做了个软件,还要出服务器钱,还要免费进行维护。我的时间是真不值钱啊,真成义务劳动了。我拒绝了,理由是忙,没时间。


总结一下,这些人总会觉得别人帮自己是理所当然的,各种得寸进尺。


2. 帮到底吧


因为我进行了仲裁,有了经验,然后被一个人加了好友,是一个前同事(就是我仲裁的那家公司),然后这哥们各种问题我都尽心回答,本着能帮别人一点就帮别人一点的想法,但是我免费帮他,他仲裁到手多少钱,又不会给我一毛钱。这哥们一个问题接一个,我都做了回答,后来直接要求用我当做和公司谈判的筹码,我严词拒绝了,真不知道这人咋想的,我帮你并没有获得任何好处,你这个要求有点过分了,很简单,他直接把我搬出来和公司谈判,公司肯定会找我,会给我带来麻烦,这人一点也没想这些事。所以之后他再询问有关任何我的经验,我已经不愿意帮他了。


总结一下,这些人更进一步,甚至想利用下帮自己的人,不考虑会给别人带来哪些困扰。


3. 拿你顶缸


最近做了通过一个亲戚接了一个项目,而这个亲戚的表姐是该项目公司的领导,本来觉得都是有亲戚关系的,项目价格之类开始问了,他们没说,只是说根据每个人的工时进行估价,后面我们每个人提交了个人报价,然后还是一直没给明确答复,本着是亲戚的关系,觉得肯定不会坑我。就一直做下去了,直到快做完了,价格还是没有出来,我就直接问了这个价格的事情,第二天,价格出来了,在我报价基础上直接砍半。我当然不愿意了,后来经过各种谈判,我终于要到了一个勉强可以的价格,期间群里谈判也是我一个人在说话,团队的其他人都不说话。后来前端的那人问我价格,我也把过程都实话说了,这哥们也要加价,然后就各种问我,我也啥都告他了。后来这个前端在那个公司领导(亲戚表姐)主动亮明身份,她知道这个前端和那个亲戚关系好,然后这个前端立马不好意思加价了,并且还把锅甩我头上,说是我没有告诉他她是他姐。还说我不地道,我靠,你自己要加价,关我啥事,你加钱也没说要分我啊,另外我给自己加价的时候你也没帮忙说话啊,我告诉你我加价成功了是我好心,也是想着你能加点就加点吧,这时候你为了面子不加了,然后说成要加价的理由是因为我,真是没良心啊。后面还问我关于合同的事情,我已经不愿意回答他了,让他自己找对面公司问去。


总结一下,这些人你帮他了他当时倒是很感谢你,但是一旦结果有变,会直接怪罪到你头上。


4. 附录文章


这个文章说得挺好的《你的善良,要有锋芒》


你有没有发现,善良的人,心都很软,他们不好意思拒绝别人,哪怕为难了自己,也要想办法帮助身边的人。善良的人,心都很细,他们总是照顾着别人的情绪,明明受委屈的是自己,却第一时间想着别人会不会难过。


也许是习惯了对别人好,你常常会忽略自己的感受。有时候你知道别人是想占你便宜,你也知道别人不是真心把你当朋友,他们只是觉得你好说话,只是看中了你的善良,但是你没有戳穿,你还是能帮就帮,没有太多怨言。


你说你不想得罪人,你说你害怕被孤立,可是有人在乎过你吗?


这个世界上形形色色的人很多,有人喜欢你,有人讨厌你,你没有办法做到对每一个人好,也没办法要求每一个人都是真心爱你。所以你要有自己的选择,与舒服的人相处,对讨厌的人远离,过你自己觉得开心自在的生活就好,没必要为了便利别人,让自己受尽委屈。


看过一段话:善良是很珍贵的,但善良要是没有长出牙齿来,那就是软弱。


你的善良,要有锋芒,不要把时间浪费在不值得的人身上。对爱你的人,倾心相助,对利用你的人,勇敢说不。


愿你的善良,能被真心的人温柔以待。


作者:一线大码
来源:juejin.cn/post/7455667125798780980
收起阅读 »

我们都被困在系统里

前言 Hi 你好,我是东东拿铁,一个正在探索个人IP的后端程序员。 2020年外卖最火热的时候,有一篇文章《外卖骑手,困在系统里》。 作为一个互联网从业人员,我之前从未有机会体会到,当每一个工作都要被时间和算法压榨时,我会是一种怎样的感受。 而最近的一段经历...
继续阅读 »

前言


Hi 你好,我是东东拿铁,一个正在探索个人IP的后端程序员。


2020年外卖最火热的时候,有一篇文章《外卖骑手,困在系统里》。



作为一个互联网从业人员,我之前从未有机会体会到,当每一个工作都要被时间和算法压榨时,我会是一种怎样的感受。


而最近的一段经历,我感觉也被困在系统里了。


起因


如果你是一个研发人员,免不了要值班、处理线上问题。当然这都很正常,每个系统都有bug或者咨询类的问题。


由于我们面临的客户比较多,加上系统有一些易用性的问题或bug,提出来的问题不少。


公司有一项政策,当客服人员提交工单之后,系统对每一个单子有超时时间,如果超出一定时间你还未提交,罚款50元。


挺奇葩的,谁能保证1个小时就一定能排查出问题呢?


于是就会有一个场景,如果赶上问题多,一下子来5、6个工单,恰巧遇到不容易排查的耽误时间的话,处理后面的工单,都面临着超时的压力。



之前同事们对值班这件事,充满了怨言,大多都会吐槽几个点



  1. 系统bug太多了,又是刚刚某某需求改出来的问题

  2. 需求设计不合理,很多奇怪的操作导致了系统问题

  3. 客服太懒了,明明可以自己搜,非得提个工单问

  4. 基础设施差,平台不好用


我不太爱吐槽,但当工单一下子来的太多的时候,我不由自主的陷入机械的处理问题中,压缩思考的时间,只求不要超时就好。


明明系统有很多问题需要解决、流程也有很多可以优化,可当系统给到我们的压力越来越多时,我们便不去思考,陷入只有吐槽、怨言和避免罚款的状态。


当陷入了系统的支配,只能被动接受,甚至有了一些怨言的时候,我意识到,这样的状态,是有问题的。


被困住的打工人


外卖员为什么不遵守交通规则呢?


外卖小哥为了多赚钱、避免处罚,我之前也很不理解,为什么为了避免处罚,连自己的生命安全都可以置之不顾。



但转念一想,我们虽然不用在马路上奔波,可受到“系统”的压力,可是一点也不比外卖员少。


大家一定有过类似的经历:你骑车或者开车去上班,距离打卡时间所剩无几,你在迟到的边缘疯狂试探,可能多一个红绿灯,你就赶不上了,这时候你会不会狠踩几脚油门、闯一个黄灯,想要更快一点呢?


但随着裁员、降本增效、各类指标的压力越来越大,我们被迫不停的内卷,不断压榨自己,才能满足职场要求越来越严格的“算法”,比如,每半年一次的绩效考核,月度或者季度的OKR、KPI,还有处理不完的线上问题、事故,充斥在我们的脑海里面。


其实我们何尝不是“外卖员”呢?外卖员是为了不被扣钱,我们是为了年终奖、晋升罢了。


所以回过头来看,其实我们早早的就被困在“系统”中了,为了满足系统的要求,我们不得不埋头苦干,甚至加班透支身体,作出很多非常短线思维的事情。


但为什么,我之前从来没有过被困住的感觉,为什么我现在才回过神来,意识到这个问题呢?


我想,大概是越简单的事情,你作出的反应就越快、越激烈。而越复杂、时间越长的事情,你作出的反应就越缓慢,甚至忽略掉。


比如上班即将迟到的你,你会立刻意识到,迟到可能会受到处罚。但是年终评估你的绩效目标时,你或许只有在最后的几个月才会意识到,某某事情没完成,年终奖或许要少几个月而感到着急。


积极主动


最近正好在读《高效能人士的七个习惯》,其中第一个习惯就是积极主动


书中说到:人性的本质是主动而非被动的,人类不仅能针对特定环境选择回应方式,更能主动创造有利的环境。


我们面对的问题可以分为三类:



  • 可直接控制的(问题与自身的行为有关)

  • 可间接控制的(问题与他人的行为有关)

  • 无法控制的(我们无能为力的问题,例如我们的过去或现实的环境)


对于这三类问题,积极主动的话,应该如何加以解决呢。


可直接控制的问题


针对可直接控制的问题,可以通过培养正确习惯来解决。


从程序员角度来看,线上bug多,可以在开发前进行技术设计,上线前进行代码CR,自动化测试,帮助自己避免低级的问题。


面对处理工单时咨询量特别多的问题,随手整理个文档出来,放到大家都可以看到的地方。


可间接控制的


对于可间接控制的,我们可以通过改进施加影响的方法来解决。


比如流程机制的不合理,你可以通过向上反馈的方式施加影响,提出自己的建议而不是吐槽。


无法控制的


对于无法控制的,我们要做的就是改变面部曲线,以微笑、真诚与平和来接受现实。


虽然反馈问题的人或许能力参差不齐,导致工单量很多,但我们意识到这一点是无法避免的,不如一笑而过,这样才不至于被问题左右。


说在最后


好了,文章到这里就要结束了。


最近由于值班的原因,陷入了一段时间的无效忙碌中,每一天都很累,几乎抽不出时间来思考,所以更新的频率也降下来了。


但还好,及时的意识到问题,把最近的一点思考分享出来,希望我们每个人都不会被“系统”困住。


欢迎你在评论区和我分享,也希望你点赞、评论、收藏,让我知道对你有所收获,这对我来说很重要。也欢迎你加我的wx:Ldhrlhy10,一起交流~


本篇文章是第41篇原创文章,2024目标进度41/100,欢迎有趣的你,关注我。


作者:东东拿铁
来源:juejin.cn/post/7385098943942656054
收起阅读 »

独立开发:家人不支持怎么办?

大家好,我是农村程序员,独立开发者,前端之虎陈随易。 这是我的个人网站:chensuiyi.me,欢迎一起交朋友~ 有很多人跟我聊到过这个问题:做独立开发,家人不支持怎么办?。 在我交流沟通下,最终发现,这些人都走进了一个误区:独立开发者 等于 我要辞职全...
继续阅读 »

大家好,我是农村程序员,独立开发者,前端之虎陈随易。


个人网站


这是我的个人网站:chensuiyi.me,欢迎一起交朋友~




有很多人跟我聊到过这个问题:做独立开发,家人不支持怎么办?


在我交流沟通下,最终发现,这些人都走进了一个误区:独立开发者 等于 我要辞职全职做独立开发


请看我对独立开发者的分类:



  1. 业余独立开发。特点:上班 + 下班的业余时间独立开发

  2. 兼职独立开发。特点:不上班 + 没有充足的时间做独立开发

  3. 全职独立开发。特点:不上班 + 有充足的时间做独立开发

  4. 混合独立开发。特点:上班+兼职+没有充足的时间做独立开发


现在是不是一目了然了。


你可以根据自己当下的情况,特点,去选择做哪一种 独立开发


我们目前所看到的 全职独立开发,只有极少数人可以做到。


这对于个人的内在要求,包括自律,坚持,执行力,产品力,都有着较高的要求。


同时呢,来自家人的态度和压力,也是 全职独立开发 的重要条件。


不要一开始,啥独立开发的经验都没有,就想做 全职独立开发


那么当你可以 理性地选择 适合自己当下情况的的独立开发方式后,你会发现,家人还会不支持吗?至少不会那么反对了。


所以这个问题的答案就是这么简单,只要看了我对独立开发的分类,你就明白了。


独立开发,本就是一个人的战斗,不要妄想这家人会支持你,他们最大的支持就是不反对。


我们遇到这样的问题时,不要觉得家人怎么怎么样,自己受到了多大的委屈和不理解一样。


他们的想法,是完全没有问题的。


人是社会动物,必然要考虑当下的生存问题,这是十分合理且正常的。


那么,如果上面的问题解决后,家人还是不支持,怎么办呢?


也很简单啊,自己偷摸摸继续折腾呗,难道一定要得到家人的支持,才能做独立开发吗?


《明朝那些事》 的作者,当年明月,赚了几千万家人才知道呢。


当然,我不是说你,也不是说我自己,可以赚几千万,我们可以定目标,但不能做梦。


总而言之就是说,做独立开发,要做好一个人长期战斗的准备。


因为你很有可能,很多年都无法比较稳定地每个月赚 5000 块钱,独立开发远没有我们想象的那么轻松。


如果你实在没有时间,没有干劲,没有激情做独立开发,那么不如其他方向,说不定能获得更好的回报。


独立开发是一个美好的梦,不稳定,也容易破碎。


那么我为什么一直在坚持做独立开发呢?因为我想让美梦成真。


作者:农村程序员陈随易
来源:juejin.cn/post/7434366864866099234
收起阅读 »

关于生娃的思考

生娃是人生很重要的事,值得花时间思考。我断断续续想了几年,没想明白,最近看 B 站半佛老师对哪吒 2 的影评,理解了什么情况下可以生娃,把感受分享给大家。 什么时候可以给孩子无条件的、不抱任何期待的爱,什么时候就可以生娃了。 半佛老师在影评中表示非常羡慕哪吒有...
继续阅读 »

生娃是人生很重要的事,值得花时间思考。我断断续续想了几年,没想明白,最近看 B 站半佛老师对哪吒 2 的影评,理解了什么情况下可以生娃,把感受分享给大家。


什么时候可以给孩子无条件的、不抱任何期待的爱,什么时候就可以生娃了。


半佛老师在影评中表示非常羡慕哪吒有那样的父母,因为哪吒的父母给哪吒无条件的、不抱任何期待的爱,而半佛老师的童年比较悲惨,让他有点羡慕嫉妒恨。为此半佛特意查了导演饺子的家庭,希望饺子是因为缺爱才把哪吒父母写的那么好,结果发现饺子就是哪吒本吒,他彻底破防了。


过年回家免不了和父母共处几天,我也几度破防,好几次想直接回出租屋。也被催生,丈母娘也催。


之前对生娃的看法,我觉得生娃太费钱了,而我没钱,就算我有钱,我也不想把钱花在娃上面,我想花在自己身上,多体验人生。


其次我自己这辈子都没活明白,也挺痛苦,何必生个娃来这悲惨世间走一遭?所以我不生娃。


但这次我有新的想法,是否生娃,应取决于我是否做好了为人父母的准备,即是否可以给孩子无条件的、不抱任何期待的爱。这决定孩子一辈子是否幸福。


两个关键词,无条件、不抱期待。


无条件


考试考得好,父母就爱,考得不好就不爱;听话就爱,不听话就不爱;不知道你们怎样,我小时候是这样的。


这让我没有安全感,下意识会做些讨好父母的行为,来获得父母的 “ 爱 ”。


当我成年的时候,我妈发现这招不管用了,我不需要他们的爱,我需要钱,因为钱能给我安全感。


所以我大学去食堂打工,每天中午和晚上早点下课过去,结果一个月才 300 块钱包两顿饭。


不抱期待


期待这个东西,在教育中尤为突出,否则不会也有那么多鸡娃的父母。


父母对孩子的期待,让孩子有非常强烈的愧疚。我辛辛苦苦把你从农村带到城市,你就考这么几分?我辛辛苦苦把你拉扯大,你就这么对我?


在这种环境下,我成为了一个逆子,六亲不认,自动屏蔽亲情。我不接受他们的爱,我也不给他们爱。


大学打工的 300 块不能养活我,每年还要交学费,我一想到学费是父母出的,他们又会以此要挟,我辛辛苦苦赚钱供你上大学,结果你就这样?


所以只读了半年大学,我退学了,自己出去找工作,我必须在经济上独立,必须逃离这个家。


别人说家是港湾,外面受伤了家是永远的依靠,对我来说家就是伤害。


其实我这样还算好的,至少活下来了,还有更多孩子,承受不了这种愧疚,选择了自杀,他们要把愧疚,加倍偿还给父母。


我身边就有这样的案例,跳楼了,他父母不知道为什么说了两句,孩子就直接从阳台上跳下去了。


我可太懂了,我也想过自杀,一来是当时家里装了防盗窗,我有点胖钻不过去;然后换成了撞墙,头上撞了几个包有点疼,基因让我停下了;我还尝试过离家出走,也没走成。


但我也在脑海中无数次幻想,要是我死了,我爸妈有多愧疚,这就是我自杀的目的。


我写的和想的有点黑暗,有人说什么爸妈把你辛辛苦苦拉扯大,不容易什么的。


但是我不需要,我没求着来这个世上。


所以我对自己生娃,非常谨慎,我不希望他的童年会想自杀,我不希望他成年后和父母几乎断绝关系,我希望他要来就过的幸福点,这取决我能否会给他无条件的、没有期待的爱。


愿各位都是好父母,愿世上孩子都幸福,以上是我的思考,共勉。


作者:jianzhangg
来源:juejin.cn/post/7467353503088246784
收起阅读 »

在村里上班的程序员

今天是在山上办公的第二天,现在时间是晚上的10点36分,刚刚写完今日份工作日报又刷10分钟手机的我决定写上一篇日记简单记下最近两天我的日常。 我的上班,是跟着国家法定节假日安排走的,前天初八,是我25年年后上班的第一天。 阿妮的假期还未结束,她决定回一趟娘家,...
继续阅读 »

今天是在山上办公的第二天,现在时间是晚上的10点36分,刚刚写完今日份工作日报又刷10分钟手机的我决定写上一篇日记简单记下最近两天我的日常。


我的上班,是跟着国家法定节假日安排走的,前天初八,是我25年年后上班的第一天。


阿妮的假期还未结束,她决定回一趟娘家,由此,我在初八一大早——7点半到8点50分——先送阿妮进城,送到她的外公外婆家。接着,我在外公外婆家办公一天。


图片


初八那天的午饭


大嘎嘎(外公)小嘎嘎(外婆)总是很欢迎我和阿妮的到来,午饭晚饭,我连连摇头不停摆手依然吃得很撑。


我干活的节奏,和年前是一样的:上午9点到12点多些,下午2点到6点7点,晚上8点9点到10点更多些,都是我的干活——单纯指做工作上的事情——时间。


阿妮晚上约了她的初中同学一起聚餐,我带上电脑跟着大家一起。烧烤桌上,对着电脑试用VS Code新插件Cline的我,是没有感受到心理压力的;烧烤桌上的干活时间,我是专注的。


--


初九一大早,我从县城回家回到山上,带着两个帽子和几个包子。帽子是初八晚上一起逛楼下街道时阿妮买给我父亲母亲的,包子,是我自己想吃再给父亲母亲带着的。


初九是个很好日子,返程路上,我碰见的接亲队伍有4个。


初九的天气,很有些特色,上午飘雪,下午大太阳,晚上很有些冷。我在山上的上班,上午烤电火,下午太阳下干活,晚上的干活,有一部分是洗漱完毕躺床上完成的。


图片


我的办公桌椅


昨天的在家办公体验不错,但我需要对自己诚实些,当时我的内心,有两个小小担忧存在。


第一个关于当前的环境,下午父母外出吃酒只留我一个人在家,我家近处只有邻居一户。到了夜晚,整个世界很安静,安静到我能听见自己的呼吸,我的一个小小动作都能发出很大声响,我承认自己理智相信科学,但同时我也看过许多志怪故事。对的,晚上一个人在家,我很有些害怕。


第二个是工作内容,我总觉得自己近来的效率并没有很高。其实不太对,其实效率应该是ok的,不ok的是我关于AI技术的知识储备太少,而我并没有给自己一个好的计划去每天进步一点点。emmm~其实还是有些不太对,这个概念有些大,更准确的是,我感觉自己在有些工作内容上,还可以做的好一些。


晚上11点又过10分钟,背完单词的我睡下,脑子中那轻微恐惧并不散去,直到深睡。


很神奇的是,今天早上6点多醒来,那对于安静的害怕,一点都不剩下。


--


整个过年前后,我都感觉自己很忙,忙到已经坚持周更四年多的公众号都不能在周日及时更新。今天即便晚睡也想要写上一篇日记的情绪,来源于下午6点发生的一件,一件让我感觉有些窘迫的事情。


伯娘进门问我:”你们作料放啊哪儿的呢?“


”你老汉喊我来给你煮一碗面条。我给他说,叫你到我们那里去吃,你老汉儿说你走不开哈,那我就来给你煮面条了啊。“


当时我真的很窘迫,感觉很有些尴尬,而同时内心,又会有些开心情绪蔓延。


我是很想给自己找一个借口的:我以为父母吃酒,会在下午三点左右回家。我的早餐,是昨天剩下的两个肉包;我的午餐,是一碗加了母亲自制麻糖的泡阴米子,再加一个橙子与一个苹果。我认为肉包、橙子与苹果,是可以撑到母亲回家的。


工作日,我真的不想做饭。


即便并不很饿,但我确实有让阿雪对母亲说:“你再不回家,你的大娃娃和你的喂的猪,都要饿趴了哦。”


图片


很是粘人的狗子


对的,今天干活间隙,我有喂猪——猪食当然是母亲提前煮好的,遛狗——我只需要前面走着,狗自然在后面跟着。


伯娘烧火又煮面,花半小时。


我为面条,拍了一张好看照片。


图片


好吃的清汤面与好看的照片


时间已经是晚上的11点20分,且快快睡觉。


今晚,我一点都不害怕。


作者:我要改名叫嘟嘟
来源:juejin.cn/post/7468970428918906906
收起阅读 »

10年开发后,我后悔坚持的8个技术信仰,不知你踩中几个

今天,我在生产环境排查一个莫名其妙的崩溃。日志里布满了层层抽象的调用栈,像一张无边的蜘蛛网。 代码里的每一行都符合“最佳实践”,架构精雕细琢,可Bug还是来了。那个瞬间,我突然想起四年前的自己——曾无比自豪地告诉新人:“优雅架构就是一切。” 可现在,我只想对那...
继续阅读 »

今天,我在生产环境排查一个莫名其妙的崩溃。日志里布满了层层抽象的调用栈,像一张无边的蜘蛛网。


代码里的每一行都符合“最佳实践”,架构精雕细琢,可Bug还是来了。那个瞬间,我突然想起四年前的自己——曾无比自豪地告诉新人:“优雅架构就是一切。”


可现在,我只想对那时候的自己说:“别装了,写能跑的代码吧。”


十年开发生涯让我推翻了许多曾深信不疑的技术理念。今天,我把这些踩坑经历整理出来,希望能帮你少走些弯路。




01 | 技术理念的崩塌



1. “简单”从来不是免费的,它是最昂贵的选择


四年前,我坚信“简单至上”。后来我才发现,让代码保持简单,需要持续的投入。业务需求膨胀时,每个“简单”的架构决策,都要付出昂贵的代价去维护。


真正的“简单”,不是一开始就写出完美代码,而是有能力在复杂性爆炸前,把代码逐步“修剪”回合理状态。


2. “优雅”是幻觉,能跑才是道理


曾经,我会在代码里反复推敲命名,调整缩进,优化模式,追求某种“美感”。但经历了几次生产事故后,我意识到:“优雅”从来不是一个真实的技术指标。


系统能否稳定运行、团队能否快速交接,远比代码的“形式美”重要。优雅的代码,不如无Bug的代码。


3. ORM是恶魔,SQL才是答案


我曾经推崇ORM,认为它能屏蔽数据库差异,提升开发效率。后来被它坑惨了:复杂查询写不出来,性能优化受限,Debug像拆炸弹。


最终,我回归了最原始的方式——直接写SQL。数据库优化的最佳方式,就是尊重SQL,而不是绕开它。


4. “类型安全”是团队的保护网


过去,我对强类型语言嗤之以鼻,觉得动态语言写起来灵活高效。直到一次团队交接,动态代码的“魔法”变成了无尽的痛苦。


Typed语言像护栏,帮团队里经验不同的人保持代码质量。个人写代码可以随性,团队协作必须稳健。


5. 前端开发已经卷成了噩梦



十年前,前端是HTML+CSS+JS,简单直白。现在,前端是一套复杂的工程体系,动不动就要学框架、学编译、学服务端渲染。


我越来越觉得,前端的“工程化”并没有带来应有的幸福感,而是让开发变得越来越焦虑。


6. Serverless 未来是好东西,但现在还是坑


Serverless的愿景很美好,可落地时,我无数次因为它的冷启动、调试难、监控难而崩溃。


如果你要做长期稳定的业务,老老实实选传统架构,Serverless 还没成熟到能承载大部分业务的程度。


7. “软件工程”大多时候只是沟通问题


这几年,我越来越发现,软件开发不是“写代码”这么简单,而是沟通、协作、妥协的过程。技术难点从来不是代码,而是“如何让所有人理解代码”。


会编码是一回事,能让别人看懂你的代码,才是真本事。


8. “管理”比技术重要,但真正好的管理极为稀缺


我花了很长时间才意识到,一个烂的管理,会让优秀的工程师一身狼狈;而一个好的管理,能让普通人也做出优秀的产品。


好管理者太少了,大多数的管理者,只是在消耗开发者的创造力。




02 |如何避免踩坑?


十年后的我,给刚入行的开发者3个建议:


① “代码洁癖”适可而止,写业务代码时别钻牛角尖

不要为了“优雅”而牺牲实用性,别陷入“最佳实践”的执念。实用 > 形式美。


② 直接写SQL,别太信任ORM

ORM适合简单查询,但复杂业务逻辑,SQL才是终极答案。与其踩坑,不如早点学会手写SQL。


③ 沟通能力比技术能力更值钱

代码能跑很重要,但能解释给别人听,能让团队顺畅协作,才是更核心的能力。




03 | 技术思维的升级



  1. “代码简单”不是靠写出来的,而是靠不断重构出来的

  2. “优雅”不是工程目标,稳定和可维护才是

  3. “工程师文化”最重要的是沟通,不是编码




04 | 你踩过这些坑吗?


如果你也在开发生涯中经历了类似的转变,欢迎留言分享你的故事。


你现在的信仰,四年后还会坚守吗?点击“在看”,收藏这篇文章,未来某一天再回来看,你的想法是否还一样。


作者:老码小张
来源:juejin.cn/post/7468100737994784787
收起阅读 »

最近看到太多 cursor 带来的焦虑,有些话想说

大家好,我卡颂,专注于AI助力程序员转型(阅读我的更多思考)最近,有很多用cursor短时间开发应用的例子,其中不乏没有编程能力的非程序员。这就给程序员群体带来一种焦虑 —— 我赖以谋生的技能会快速贬值么?之所以会有这种焦虑,是因为看待AI与看待自身职业的角度...
继续阅读 »

大家好,我卡颂,专注于AI助力程序员转型阅读我的更多思考

最近,有很多用cursor短时间开发应用的例子,其中不乏没有编程能力的非程序员。

这就给程序员群体带来一种焦虑 —— 我赖以谋生的技能会快速贬值么?

之所以会有这种焦虑,是因为看待AI与看待自身职业的角度不同:

  1. 从发展角度看待AI:默认AI能力会越来越强
  2. 从静态角度看待本职工作:默认程序员工作一成不变

如果我们能从发展角度看待本职工作,就能看到不一样的东西。

前端会经历的三个阶段

以我熟悉的前端行业举例(其实程序员工种也适用)。

从发展角度看待前端行业,当前行业正处在大规模的开发范式迁移中。

什么是开发范式迁移?举2个例子:

  • 从原生JS过渡到jQuery的链式写法
  • jQuery的命令式过渡到前端框架的声明式写法

当前,前端行业正处在由AI主导的新一轮开发范式迁移中,这是阶段一。

当开发范式迁移完成后,会形成事实上的新的前端技术栈,这是阶段二。

当新的前端技术栈形成后,会产生新的前端发展路径。

完整三个阶段演进过程如下:

接下来我详细解释下每个阶段。

阶段1:开发范式迁移

大规模开发范式迁移的显著特征,是不断出现新的开发工具,不断有开发工具被抛弃

比如,在AI辅助编码领域,先行者是Github Copilot,他开创了AI驱动的Tab补全代码这一AI辅助模式。

再往后,有了ContinueCursorWindsurf,在Copilot基础上创造了更多辅助模式,比如:

  • Chat模式
  • Normal/Agent Composer

其中,AI驱动的Tab补全代码已经逐渐成为程序员开发标配。

这就是开发范式迁移的一个例子。

接下来,我再举一个例子。

AI驱动的前端脚手架工具

当提到前端脚手架工具,大部分人第一反应是ViteCRA这样的工具。

他们都属于上个前端开发范式时代的脚手架工具。

在当下,已经涌现很多AI驱动的前端脚手架工具,比如v0bolt.new

v0Vercel开发的,可以理解为他是基于Vercel旗下开发工具(Next.jsshadcn)的前端脚手架工具。

bolt.newStackblitz开发的,没有绑定具体前端技术,是一个比较通用的全栈项目(基于Node.js)脚手架工具。

总结下,在范式迁移过程中,这些新技术不断涌现,又不断消失。

最终的胜者会成为未来前端技术栈中的固定嘉宾。

一件有趣的事:一般来说,技术、工具的普及是由于“程序员大规模认可”。但未来,他们的普及可能是因为“AI大规模认可”

阶段2:新的前端技术栈

为什么AI辅助编码已经是开发标配,但大部分公司的招聘要求中却没有提及?

因为AI辅助编码还在高速发展中,没有形成最佳实践。

只有到形成业界公认的最佳实践,成为新的前端技术栈,才会出现在主流的招聘要求中。

Cursor的焦虑本质来说,就是没意识到随着AI的发展,前端技术栈也会更新

如果Cursor(或者Cursor同赛道的最终胜者)是程序员技术栈中要求需要熟练掌握的工具(就如同当前前端技术栈中的前端框架)。

那你还会因为“工具提高了开发效率”而焦虑么?

阶段3:新的前端发展路径

当前端(或其他任何程序员工种)完成开发范式迁移,形成事实上的新技术栈。

会造成两个结果:

  1. 职业门槛大幅度上升
  2. 开发效率大幅度提高

这势必会让行业洗牌,出清掉大量从业者。

同时也会形成新的前端发展路径。

当我们最终达到阶段3(产生新的前端发展路径),我认为他会是下面这样:

未来,基础的前端岗位是使用AI工具的前端专才,他包括两项能力:

    1. 熟练使用AI编码辅助工具
    1. 熟练的前端理论知识(类比当前的资深前端)

前端专才有两个进阶方向:

  • 制作AI工具的前端
  • 使用AI工具的前端多才

我解释下这两者。

其中,制作AI工具的前端类似当前的基建岗前端。

但不同的是,当下的基建岗前端很难回答一个问题:我花费大量时间做的工具相比同类开源产品有啥决定性优势?

与前者不同,制作AI工具的前端的产出是业务定制化的AI提效工具,这是与业务强相关的。

就像曾几何时,任何前端团队都需要一个webpack配置工程师一样。

前端多才则是指以前端技能为核心能力,同时掌握与前端相邻、平行工种的工作技能

  • 相邻工种:UI、测试、后端、产品
  • 平行工种:其他端的前端

这里举一个大前端开发工程师的例子。

当前国内开发现状是 —— 端碎片化。

小程序、移动端、hybrid、web等,一个需求可能有多端开发需要。

对于多端开发需求,常见的解决方案有两种:

  • 花钱方案:组建大前端团队
  • 省钱方案:使用跨端方案,UniApp、Taro、React Native、Flutter...

由于各端逻辑类似,如果你同时掌握多端能力,只要实现一端后,就能借助AI将代码转为其他端。

只要“AI转代码的成本”比“调试跨端框架”低,这就是可行的。

随着AI的发展,当前者的收益显著高于后者后,就会出现大前端开发工程师这一前端多才职业。

总结

事物是发展的,不仅AI如此,程序员行业亦是如此。

如果用静态的眼光看待程序员行业,满满都是被AI取代的焦虑。

但用发展的眼光看待时,这一行仍处于这波AI浪潮的早期 —— 大规模开发范式迁移阶段。

后面还有很长的路要走。


作者:魔术师卡颂
来源:juejin.cn/post/7452736507826683931
收起阅读 »

程序员工作七年后的觉醒:不甘平庸,向上成长,突破桎梏

前言 Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。 昨天看到雪梅老师公众号的文章,《中国的中年男性,可能是世界上压力最大的一群人》。 看完文章,深有感触,因为自己有时候,觉着压力挺大的,因为从小到大,一直感觉世俗上的一些条条框框,...
继续阅读 »

前言


Hi 你好,我是东东拿铁,一个正在探索个人IP&副业的后端程序员。


昨天看到雪梅老师公众号的文章,《中国的中年男性,可能是世界上压力最大的一群人》。


看完文章,深有感触,因为自己有时候,觉着压力挺大的,因为从小到大,一直感觉世俗上的一些条条框框,在约束着你。


上学时,你要好好读书,争取考上985/211,最起码上个一本。


工作后,大家都羡慕考公上岸的,上不了岸的话,你需要找一个好公司,拿到一个高工资,最好还能当上管理人员。


后来有了家庭,你要承担起男人的责任,赚钱养家。


过去20多年的时间,我都觉着这样的条条框框没有问题,在年少轻狂的时光,这些条条框框决定了你的下限,大家不都是这么过来的吗?


可是我过去的努力,都是为了符合条条框框的各项要求。我越来越觉着疑惑,我的努力,到底是为了什么啊,是为了这些世俗上的要求吗,我到底为谁而活?


压力,是自己给的


说实话,自己也给自己不少压力。


刚毕业,没有房贷车贷的情况下,我便给了自己很大的压力。压力怎么来的呢?比如一个月五千块钱的工资,买不起一个最新款的iPhone,又比如北京的朋友们,工资相比我在二线城市,竟能高出我一倍。


后来工作半年决定去北京,也是工作7年来,唯一一次的裸辞。


初生牛犊不怕虎,裸辞给我带来的毒打,至今历历在目,比如银彳亍卡余额一天天减少的焦虑,比如连面试都没有的焦虑,还有时刻担心着要是留不在北京,被迫得回老家的焦虑。


记得青旅楼下,有一家串店叫“很久以前羊肉串”,不到五点的时候门口就会有人排队,晚上下楼时看着饭店里熙熙攘攘,吃着烤串喝着扎啤的人时,心里十分羡慕,但却又不会踏进饭店一步。


毕竟一个目前找不到工作的人,每天一睁眼就是吃饭和住青旅的成本,吃个20块钱一顿的快餐就好了,怎么可能花好几百下馆子呢?


那时候心里有个愿望,就是我也想每周都可以和朋友来这里吃顿烧烤、喝喝扎啤。


嗯,我也不知道为什么,那时候对自己就是这么严苛。家庭虽不算富裕,但也绝不可能差这几顿烧烤、住几晚好的宾馆的钱,但我就是这样像苦行僧一样要求着自己,仿佛在向爸妈多要一分钱,就代表着自己输了。


后来工作稳定了,工资也比毕业时翻了几倍,恰巧又在高位上车了房子,但似乎压力只增不减,同样是不敢花钱。


现在又有了娃,这次压力也不用自己给了,别管他需要什么,一个小眼神,你只想给他买最好的。因此不敢请假,更不敢裸辞GAP一段时间了,这种感觉就像是在逃避赚钱的责任,不误正业一般。


一味的向前冲


带着压力,只能一味的向前冲,为了更高的薪资不断学习,为了更高的职级不断拼搏。


在“赚钱”这件事上,男人的基因里就像被编写好了一段代码。


    while (true){
makeMoreMoney();
}

过程中遇到困难,压力大,有难过的时候怎么办,身边有谁能去诉说呢?


中国的传统文化便是“男儿当自强”、“男儿有泪不轻弹”,怎么能去向别人诉说自己的痛苦呢?


那时候现在的老婆那时候还在上学,学生很难理解职场。结婚后,更没有人愿意在伴侣前展示自己的软弱。


和家人说?但是不开心的事,不要告诉妈妈,她帮不上忙,她只会睡不着觉。


和好朋友们一起坐下聚聚,喝几杯啤酒,少聊一些工作,压力埋在心里,让自己短暂的放松一下。



但现在的行业现状,不允许我们一味的在职场上冲了。


行业增速放缓,互联网渗透率达到瓶颈,随着而来的就是就业环境变差,裁员潮来袭。


你可以选择在职场中的高薪与光环,但也要付出相应的代价,比如变成“云老公/老婆”,“云爸爸/妈妈”。


或许我们都很想在职场中有一番作为,但是外部环境可能会让我们头破血流。


为了家庭,所以在职场中精进自己,升职加薪。我不禁在想,这看似符合逻辑的背后,我自己到底奋斗的是什么


不甘平庸,不服输


从老家裸辞去北京,是不满足于二线城市的工作环境,想接触互联网,获得更快的进步。


在北京,从小公司跳槽到大厂,是为了获得更高的薪资与大厂的光环。


再次回到老家,是不满生活只有工作,回来可以更好的平衡工作和生活。


回想起来,很多时候,自己就像一个异类。


明明工作还不满一年,技术又差,身边的朋友敢于跳槽到其他公司,涨一两千块钱的工资已经算挺好了,我却非得裸辞去北京撞撞南墙。


明明可以在中小公司里按部就班,过着按点下班喝酒打游戏的生活,却非得在在悠闲地时候,去刷算法与面经,不去大厂不死心。


明明可以在大公司有着不错的发展,负责着团队与核心系统,却时刻在思考生活中不能只有工作,还要平衡工作和家庭,最终放弃大厂工作再次回到老家。


每一阶段,我都不甘心于在当下的环境平庸下去,见识到的优秀的人越多,我便越不服输。


至此,我上面问自己的两个问题,我到底为谁而活?我自己到底奋斗的是什么,似乎有了些答案。


我做的努力,短期看是为了能够给自己、给家人更好的物质生活,但长远来看,是为了能让自己有突破桎梏与困境,不断向上的精神


仰望星空


古希腊哲学家苏格拉底有一句名言:“未经检视的人生不值得活。”那么我们为什么要检视自己的人生呢?正是因为我们有不断向上的愿望,那么我在想愿望的根源又到底是什么呢?


既然选择了不断向上,我决定思考,自己想成为什么样的人,或者说,一年后,希望自己变成什么样子,3年呢,5年呢?


当然,以后的样子,绝不是说,我要去一个什么外企稳定下来,或者说去一个大厂拿多少多少钱。


而是说,我希望的生活状态是什么,我想去做什么工作/副业,达成什么样的目标。


昨天刷到了一个抖音,这个朋友在新疆日喀则,拍下了一段延时摄影,我挺受震撼的。



生活在钢铁丛林太久了,我一直特别想去旅行,比如自驾新疆、西藏,反正越远越好。在北京租的房子,就在京藏高速入口旁,我每天上班都可以看到京藏高速的那块牌子,然后看着发会呆,畅想一下自己开着车在路上的感觉。


可好多年过去了,除了婚假的时候出去旅行,其余时间都因为工作不敢停歇,始终没有机会走出这一步,没有去看看祖国的大好河山。


我还发现自己挺喜欢琢磨,无论在做什么事情,我都会大量的学习,然后找到背后运行的规律。因为自己不断的思考,所以现实中,很少有机会和朋友交流,所以我会通过写作的方式,分享自己的思考、经历、感悟。


我写了不少文章,都是关于工作几年,我认为比较重要的经历的文章,也在持续分享我关于职业生涯的思考。


从毕业到职场,走过的弯路太多了,小到技术学习、架构方案设计,大到职业规划与公司选择,每当回忆起自己在职场这几年走过的弯路,就特别想把一些经验分享给更多的人,所以我持续的写,希望看到我文章的朋友,都能够对工作、生活有一点点帮助。


所以,我的短期目标,是希望能够帮助在职场初期、发展期,甚至一些稳定期的朋友们,在职场中少一点困惑,多一点力量


方式可能有很多,比如大家看我的文章,看我推荐的书籍、课程,甚至约我电话进行1v1沟通,都可以,帮助到一个人,我真的就会感到很满足,假设因为个人能力不足暂时帮不到,我也能根据自己的不足持续学习成长。


那么一年后,我希望自己变成什么样?
我希望自己在写作功底上,能够持续进步,写出更具有逻辑性、说服力的内容,就像明白老师、雪梅老师那样。公众号希望写出一篇10w+,当然数量越多越好,当然最希望的是有读者能够告诉我,读完这篇文章很有收获,这样比数据更能让人开心,当然最好还能够有一小部分工作之外的收入。


那么三年呢?
3年后,快要32岁了。希望那时候我已经积累了除了写作外,比如管理、销售、沟通、经营能力,能够有自己赚到工资外收入的产品、项目,最好能够和职场收入打平,最差能够和房贷打平,有随时脱离职场的底气。


五年呢?十年呢?
太久远了,想起来都很吃力的感觉。我一定还在工作,但一定不是打工,希望自己有了一份自己喜欢的事业,能够买到自己的dream car,然后能够随时带着家人看一看中国的大好河山。


你是不是想问,为什么一定要想这些?


因为当我想清楚这个问题的时候,那当下该做什么事情,该做什么选择,就有了一个清晰的标准:这件事情、这个选择,能否帮我们朝「未来的自己」更进一步?


这时候当再遇到压力、困难,我们就会变的乐观,有毅力、有勇气、自信、耐心,积极主动。


因为你自己想干成一件事,你就会迸发出120%的能量。


当然,也希望自己试试放下盔甲,允许自己撤退,允许自己躺平,允许自己怂,允许自己跟别人倾诉痛苦。


说在最后


说了很多,感谢你能看到最后。


感觉整体有点混乱,但还是总结一下:


起因是感觉自己压力很大,因为持续的大量输入导致自己有点陷入信息爆炸的焦虑,有一天下班到家时感觉头痛无比,九点就和孩子一起睡觉了,因此本来想谈谈中国男性的压力。


但不由自主的去思考自己的压力是从哪里来的,去发现压力竟都来源于传统文化、社会要求,于是越想越不服气,我为什么非得活成别人认为应该活成的样子?


于是试着思考自己想成为什么样子,其实也是一直在琢磨的一件事情,因为当开始探索个人IP的时候,我就发现自己需要更高一层的、精神层面的指导,才能让自己坚持下去。


如果你和我一样,希望你给自己的压力更小一些,环境很差,但总还有事情可以去做,愿你可以想清楚,你想成为的样子。一时想不清楚也没关系,也愿你可以允许自己撤退,允许自己软弱。


不知道你有没有想过,自己想要成为的样子呢?欢迎你在评论区和我分享,也希望你点赞、评论、收藏,让我知道对你有所收获,这对我来说很重要。也欢迎你加我的wx:Ldhrlhy10,一起交流~


本篇文章是第37篇原创文章,2024目标进度37/100,欢迎有趣的你,关注我。


作者:东东拿铁
来源:juejin.cn/post/7374337202653265961
收起阅读 »

离职后的这半年,我前所未有的觉得这世界是值得的

大家好,我是一名前端开发工程师,属于是没有赶上互联网红利,但赶上了房价飞涨时代的 95 后社畜。2024 年 3 月份我做了个决定,即使已经失业半年、负收入 10w+ 的如今的我,也毫不后悔的决定:辞职感受下这个世界。 为什么要辞职,一是因为各种社会、家庭层面...
继续阅读 »

大家好,我是一名前端开发工程师,属于是没有赶上互联网红利,但赶上了房价飞涨时代的 95 后社畜。2024 年 3 月份我做了个决定,即使已经失业半年、负收入 10w+ 的如今的我,也毫不后悔的决定:辞职感受下这个世界


为什么要辞职,一是因为各种社会、家庭层面的处境对个人身心的伤害已经达到了不可逆转的程度,传播互联网负面情绪的话我也不想多说了,经历过的朋友懂得都懂,总结来说就是,在当前处境和环境下,已经没有办法感受到任何的快乐了,只剩焦虑、压抑,只能自救;二是我觉得人这一辈子,怎么也得来一次难以忘怀、回忆起来能回甘的经历吧!然而在我的计划中,不辞职的话,做不到。


3 月


在 3 月份,我去考了个摩托车驾-照,考完后购买了一辆摩托车 DL250,便宜质量也好,开始着手准备摩旅。


webwxgetmsgimg.jpg


4 月份正式离职后,我的初步计划是先在杭州的周边上路骑骑练下车技,直接跑长途还是很危险的,这在我后面真的去摩旅时候感受颇深,差点交代了。


4 月


4.19 号我正式离职,在杭州的出租屋里狠狠地休息了一个星期,每天睡到自然醒,无聊了就打打游戏,或者骑着摩托车去周边玩,真的非常非常舒服。


不过在五一之前,我家里人打电话跟我说我母亲生病了,糖尿病引发的炎症,比较严重,花了 2w+ 住院费,也是从这个时候才知道我父母都没有交医保(更别说社保),他们也没有正式、稳定的工作,也没有一分钱存款,于是我立马打电话给老家的亲戚让一个表姐帮忙去交了农村医保。所有这些都是我一个人扛,还有个亲哥时不时问我借钱。


381728547058_ 拷贝.jpg


说实话,我不是很理解我的父母为什么在外打工那么多年,一分钱都存不下来的,因为我从小比较懂事,没让他们操过什么心,也没花过什么大钱。虽然从农村出来不是很容易,但和周围的相同条件的亲戚对比,我只能理解为我父母真的爱玩,没有存钱的概念。


我可能也继承了他们的基因吧?才敢这样任性的离职。过去几年努力地想去改变这个处境,发现根本没用,还把自己搞得心力交瘁,现在想想不如让自己活开心些吧。


5 月


母亲出院后,我回到杭州和摩友去骑了千岛湖,还有周边的一些山啊路啊,累计差不多跑了 2000 多公里,于是我开始确立我的摩旅计划,路线是杭州-海南岛-云南-成都-拉萨,后面实际跑的时候,因为云南之前去过,时间又太赶,就没去云南了。


2024-10-11 103931.jpg


6 月


在摩友的帮助下,给摩托车简单进行了一些改装,主要加了大容量的三箱和防雨的驮包,也配备了一些路上需要的药品、装备,就一个人出发了。


2024-10-11 103949.jpg


从杭州到海南这部分旅行,我也是简单记录了一下,视频我上传了 B 站,有兴趣的朋友可以看看:


拯救焦虑的29岁,考摩托车驾-照,裸辞,买车,向着自由,出发。


摩托车确实是危险的,毕竟肉包铁,即使大部分情况我已经开的很慢,但是仍然会遇到下大雨路滑、小汽车别我、大货车擦肩而过这种危险情况,有一次在过福建的某个隧道时,那时候下着大雨,刚进隧道口就轮胎打滑,对向来车是连续的大货车,打滑之后摩托车不受控制,径直朝向对向车道冲过去,那两秒钟其实我觉得已经完蛋了,倒是没有影视剧中的人生画面闪回,但是真的会在那个瞬间非常绝望,还好我的手还是强行在对龙头进行扳正,奇迹般地扳回来且稳定住了。


过了隧道惊魂未定,找了个路边小店蹲在地上大口喘气,雨水打湿了全身加上心情无法平复,我全身都是抖的,眼泪也止不住流,不是害怕,是那种久违地从人类身体发出的求生本能让我控制不住情绪的肆意发泄。


在国道开久了人也会变得很麻木,因为没什么风景,路况也是好的坏的各式各样,我现在回看自己的记录视频,有的雨天我既然能在窄路开到 100+ 码,真的很吓人,一旦摔车就是与世长辞了。


不过路上的一切不好的遭遇,在克服之后,都会被给予惊喜,到达海南岛之后,我第一次感觉到什么叫精神自由,沿着海边骑行吹着自由的风,到达一个好看的地方就停车喝水观景,玩沙子,没有工作的烦扰,没有任何让自己感受到压力的事情,就像回到了小时候无忧无虑玩泥巴的日子,非常惬意。


稿定设计导出-20241011-112615.jpg


在完成海南环岛之后,我随即就赶往成都,与前公司被裁的前同事碰面了。我们在成都玩了三天左右,主要去看了一直想看的大熊猫🐼!


2024-10-11 174426.jpg


之后我们在 6.15 号开始从成都的 318 起始点出发,那一天的心情很激动,感觉自己终于要做一件不太一样的事,见不一样的风景了。


401728642422_.pic.jpg


小时候在农村,读书后在小镇,大学又没什么经济能力去旅行,见识到的事物都非常有限,但是这一切遗憾在川藏线上彻底被弥补了。从开始进入高原地貌,一路上的风景真的美到我哭!很多时候我头盔下面都是情不自禁地笑着的,发自内心的那种笑,那种快乐的感觉,我已经很久很久很久没有了。


稿定设计导出-20241011-184041.jpg


同样地,这段经历我也以视频的方式记录了下来,有兴趣的朋友可以观看:


以前只敢想想,现在勇敢向前踏出了一步,暂时放下了工作,用摩托跑完了318


到拉萨了!


411728642433_.pic.jpg


花了 150 大洋买的奖牌,当做证明也顺便做慈善了:)


421728642441_.pic_h111d.jpg


后面到拉萨之后我和朋友分开了,他去自驾新疆,我转头走 109 国道,也就是青藏线,这条线真的巨壮美,独自一人行驶在这条路,会感觉和自然融合在了一起,一切都很飘渺,感觉自己特别渺小。不过这条线路因为冻土层和大货车非常非常多的原因,路已经凹凸不平了,许多炮弹坑,稍微骑快点就会飞起来。


这条线还会经过青海湖,我发誓青海湖真的是我看到过最震撼的景色了,绿色和蓝色的完美融合,真的非常非常美,以后还要再去!


2024-10-11 185558.jpg


拍到了自己的人生照片:


2024-10-11 185623.jpg


经历了接近一个半月的在外漂泊,我到了西宁,感觉有点累了,我就找了个顺丰把摩托车拖运了,我自己就坐飞机回家了。


这一段经历对我来说非常宝贵,遇到的有趣的人和事,遭遇的磨难,见到的美景我无法大篇幅细说,但是每次回想起这段记忆我都会由衷地感觉到快乐,感觉自己真的像个人一样活着。


这次旅行还给了我感知快乐和美的能力,回到家后,我看那些原来觉得并不怎么样的风景,现在觉得都很美,而且我很容易因为生活中的小确幸感到快乐,这种能力很重要。


7 月


回到家大概 7 月中旬。


这两个多月的经历,我的身体和心态都调整的不错了,但还不是很想找工作,感觉放下内心的很多执念后,生活还是很轻松的,就想着在家里好好陪陪母亲吧,上班那几年除了过年都没怎么回家。


在家里没什么事,但是后面工作的技能还是要继续学习的,之前工作经历是第一家公司用的 React 16,后面公司用的是 Vue3,对 React 有些生疏,我就完整地看了下 React 18 的文档,感觉变化也不是很大。


8、9 月


虽然放下了许多执念,对于社会评价(房子、结婚、孩子)也没有像之前一样过于在乎了,但还是要生活的,也要有一定积蓄应对未来风险,所以这段时间在准备面试,写简历、整理项目、看看技术知识点、刷刷 leetcode。


也上线了一个比较有意义的网站,写了一个让前端开发者更方便进行 TypeScript 类型体操的网站,名字是 TypeRoom 类型小屋,题源是基于 antfu 大佬的 type-challenges


目前 Type Challenges 官方提供了三种刷题方式



这几种方式其实都很方便,不过都在题目的可读性上有一定的不足,还对开发者有一定的工具负担、IDE 负担。


针对这个问题,也是建立 TypeRoom 的第一个主要原因之一,就是提供直接在浏览器端就能刷题的在线环境,并且从技术和布局设计上让题目描述和答题区域区分开来,更为直观和清晰。不需要额外再做任何事,打开一个网址即可直接开始刷题,并且你的答题记录会存储到云端。


欢迎大家来刷题,网址:typeroom.cn


截屏2024-10-12 21.53.26.png


因为个人维护,还有很多题目没翻译,很多题解没写,也还有很多功能没做,有兴趣一起参与的朋友可以联系我哦,让我一起造福社区!


同时也介绍下技术栈吧:


前端主要使用 Vue3 + Pinia + TypeScript,服务端一开始是 Koa2 的,后面用 Nest 重写了,所以现在服务端为 Nest + Mysql + TypeORM。


另外,作为期待了四年,每一个预告片都看好多遍的《黑神话·悟空》的铁粉,玩了四周目,白金了。


WechatIMG43.jpg


现在


现在是 10 月份了,准备开始投简历找工作了,目前元气满满,不急不躁,对工作没有排斥感了,甚至想想工作还蛮好的,可能是闲久了吧,哈哈哈,人就是贱~


更新 11 月


我还是没有找工作,又去摩旅了一趟山西、山东,这次旅行感觉比去西藏还累、还危险。同样是做了视频放 b 站了,有兴趣的可以看看:


骑了4300km只为寻找那片海-威海的海|摩旅摩得命差点没了


真的要开始找工作了喂!


最后


其实大多数我们活得很累,都是背负的东西太多了,而这些大多数其实并不一定要接受的,发挥主观能动性,让自己活得开心些最重要,加油啊,各位,感谢你看到这里,祝你快乐!


这是我的 github profile,上面有我的各种联系方式,想交个朋友的可以加我~❤️


作者:vortesnail
来源:juejin.cn/post/7424902549256224804
收起阅读 »

只写后台管理的前端要怎么提升自己

本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情可以做的更好,于是有了这篇文章。 写优雅的代码 一道面试题 大概两年以前,面试美团的时候,面试官让我写一道代码题,时间单...
继续阅读 »

本人写了五年的后台管理。每次面试前就会头疼,因为写的页面除了表单就是表格。抱怨过苦恼过也后悔过,但是站在现在的时间点回想以前,发现有很多事情可以做的更好,于是有了这篇文章。


写优雅的代码


一道面试题


大概两年以前,面试美团的时候,面试官让我写一道代码题,时间单位转换。具体的题目我忘记了。


原题目我没做过,但是我写的业务代码代码里有类似的单位转换,后端返回一个数字,单位是kb,而我要展示成 KBMB 等形式。大概写一个工具函数(具体怎么写的忘记了,不过功能比这个复杂点):


function formatSizeUnits(kb) {
let units = ['KB', 'MB', 'GB', 'TB', 'PB'];
let unitIndex = 0;

while (kb >= 1024 && unitIndex < units.length - 1) {
kb /= 1024;
unitIndex++;
}

return `${kb.toFixed(2)} ${units[unitIndex]}`;
}

而在此之前,是一个后端同学写的代码(说起来,后台管理系统前端人力不够后端帮忙写好像是常规操作,后端总觉得写前端简单,而我只能说你们那代码写的,一言难尽……),如下:


function formatSizeUnits(kb) {
var result = '';

if (kb < 1024) {
result = kb + ' KB';
} else if (kb < 1024 * 1024) {
result = (kb / 1024).toFixed(2) + ' MB';
} else if (kb < 1024 * 1024 * 1024) {
result = (kb / 1024 / 1024).toFixed(2) + ' GB';
} else {
result = (kb / 1024 / 1024 / 1024).toFixed(2) + ' TB';
}

return result;
}

虽然功能都一样,但是我写在面试的时候写了上面的代码得到了面试官的赞扬,也因此非常顺利的通过了面试。而如果我写成了下面的样子,估计不会有这种效果。


如何提升代码质量


想提升代码质量,最理想的是靠 code review ,但实际上这玩意在大多数公司根本就不存在。其次就只能多看看大佬们写的代码,但是一来后台管理本来就没太大难度很少有大佬,二来很多时候一个后台管理系统就一两个人负责。


还好现在有了各种 AI 工具,可以非常方便的优化自己的代码了。


还是上面的问题,看看 GPT 给的答案


// 提问:写一个工具函数,对文件大小的单位进行转换,加注释
// 回答:下面是一个JavaScript工具函数,它接受文件大小、初始单位、目标单位和小数位数,然后返回目标单位下的文件大小。

/**
* 将文件大小从一个单位转换为另一个单位。
*
* @param {number} size 文件大小。
* @param {string} fromUnit 初始单位('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')。
* @param {string} toUnit 目标单位('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB')。
* @param {number} [decimalPoint=2] 结果保留的小数位数,默认为2。
* @return {string} 转换后的文件大小,带单位。
*/

function convertFileSize(size, fromUnit, toUnit, decimalPoint = 2) {
// 定义单位与字节之间的转换关系
const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
// 获取初始单位和目标单位的索引
const fromIndex = units.indexOf(fromUnit);
const toIndex = units.indexOf(toUnit);

// 如果单位不在列表中,抛出错误
if (fromIndex === -1 || toIndex === -1) {
throw new Error('Invalid units');
}

// 计算初始单位与目标单位之间的转换系数
const exponent = toIndex - fromIndex;
// 计算结果大小
const resultSize = size / Math.pow(1024, exponent);

// 返回格式化后的结果
return parseFloat(resultSize.toFixed(decimalPoint)) + ' ' + toUnit;
}

// 示例使用
console.log(convertFileSize(1, 'GB', 'MB')); // 输出: 1024.00 MB
console.log(convertFileSize(1, 'MB', 'KB')); // 输出: 1024.00 KB
console.log(convertFileSize(1, 'KB', 'B')); // 输出: 1024.00 B
console.log(convertFileSize(1, 'MB', 'GB', 5)); // 输出: 0.00098 GB

还能说什么,我只能说 NB!(经评论区提示,此段代码可能有问题,建议大家在使用AI工具时,重点是借鉴思路,直接使用代码需要谨慎~)


我现在每次写大段逻辑之后都习惯拿给 AI 看看,有什么更好的实现方式,或者用什么设计模式。AI 是非常低成本且高效提升代码质量的工具。


学会封装


一个功能用到了好多次,为什么不封装成组件?一个组件用到了好几个项目,为什么不单独写个npm包?差不多的项目创建了好几个,为什么不封装成脚手架?


你说,没时间,没必要,复制粘贴反而更快。


那你就完全没理解,这么做不一定是为了让工作更快完成,而是可以让你在年年终述职时更有话说(你就算写了一百个表单表格没有写一个脚手架更值得炫耀),如果不会写可以问问 AI。


而当你真正开始封装组件,开始写工具库了,你会发现你需要思考的确实比之前多了。


关注业务


对于前端业务重要吗?


相比于后端来说,前端一般不会太关注业务。就算出了问题大部分也是后端的问题。


但是就我找工作的经验,业务非常重要!


如果你做的工作很有技术含量,比如你在做低代码,你可以面试时讲一个小时的技术难点。但是你只是一个破写后台管理,你什么都没有的说。这个时候,了解业务就成为了你的亮点。


一场面试


还是拿真实的面试场景举例,当时前同事推我字节,也是我面试过N次的梦中情厂了,刚好那个组做的业务和我之前呆的组做的一模一样。



  • 同事:“做的东西和咱们之前都是一样的,你随便走个过场就能过,我在前端组长面前都夸过你了!”

  • 我:“好嘞!”


等到面试的时候:



  • 前端ld:“你知道xxx吗?(业务名词)”

  • 我:“我……”

  • 前端ld:“那xxxx呢?(业务名词)”

  • 我:“不……”

  • 前端ld:“那xxxxx呢??(业务名词)”

  • 我:“造……”


然后我就挂了………………


如何了解业务



  1. 每次接需求的时候,都要了解需求背景,并主动去理解


    我们写一个表格简简单单,把数据展示出来就好,但是表格中的数据是什么意思呢?比如我之前写一个 kafka 管理平台,里面有表格表单,涉及什么 cluster controller topic broker partition…… 我真的完全不了解,很后悔我几年时间也没有耐下心来去了解。


  2. 每次做完一个需求,都需要了解结果


    有些时候,后台管理的团队可能根本没有PM,那你也要和业务方了解,这个功能做了之后,多少人使用,效率提高了吗?数据是怎样的?


  3. 理解需求,并主动去优化


    产品要展示一千条数据,你要考虑要不要分页,不分页会不会卡,要不要上虚拟表格?


    产品要做一个可拖拽表单,你要考虑是否需要拖动,是否需要配置。


    其实很多时候,产品的思维可能会被局限在竞品的实现方式,而前端可以给TA更多选项。在和产品沟通的时候,你不仅是沟通页面的实现,也更能理解业务。



关注源码


说到源码, Vue,React 这些基本是每次必问,也有太多大佬们的总结我就不多说了。


除此之外,我想大家每次面试应该都会被问,你写了什么亮点的项目,困难的项目,你会说什么?哦,都是表单表格,都用 Element UI 实现的,没什么难度。那估计你面试也就到这里了。


那说什么,后台管理就这些啊?!


如果你用了 Element UI 你可以说写了什么自定义 Element UI 表单组件,Element UI 表单源码是什么原理,怎么通信的?用了 Axios 可以说 Axios 的原理,它的拦截器怎么实现的?用了编辑器 diff 那你知道 diff 算法是什么吗?用了 ECharts 那你知道他底层是用什么绘制的吗?用了 husky ?husky的原理是什么?用了Vite,它为什么快?是怎么打包的?写过插件吗?


可能有人觉得我离谱,事实上上面每一个问题都是我在面试中真实被问到的。当然,如果全部去了解,肯定不现实,每个人的精力有限,不可能每个用到的每个工具每个库都去了解原理,不过只要有一两个你去了解过,就可以在面试中引导面试官来问,要学会表现出你擅长的点


至于怎么读源码?以前我不知道,现在嘛…… 为什么不问问神奇的 ChatGPT 呢?



讲一下 Axios 源码中,拦截器是怎么实现的?


Axios 的拦截器实现基于 Axios 的核心原理,即 Axios 实例是一个包含请求和响应拦截器堆栈的对象。当发出请求或接收响应时,Axios 会遍历这些拦截器,并按照添加的顺序执行请求拦截器,以及按照相反的顺序执行响应拦截器。


在 Axios 的源码中,拦截器是通过一个 AxiosInterceptorManager 实例来管理的,它维护了一个拦截器数组。每个拦截器都是一个包含 fulfilledrejected 函数的对象。这两个函数分别对应于拦截器成功处理和拦截器处理出错的情况。


以下是 Axios 拦截器管理器的一个简化版本,展示了其核心实现思路:


class InterceptorManager {
constructor() {
this.handlers = []; // 存储拦截器的数组
}

use(fulfilled, rejected) {
this.handlers.push({
fulfilled: fulfilled,
rejected: rejected
});
return this.handlers.length - 1; // 返回拦截器的ID
}

eject(id) {
if (this.handlers[id]) {
this.handlers[id] = null; // 移除拦截器
}
}

forEach(fn) {
this.handlers.forEach((h) => {
if (h !== null) {
fn(h);
}
});
}
}

在发送请求或接收响应时,Axios 会创建一个 promise 链,并通过 forEach 方法将拦截器中的 fulfilledrejected 函数添加到这个链中。这样,每个拦截器都可以对请求或响应进行处理,然后将结果传递到链的下一个拦截器,或者在出错时结束链的执行。


axios.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
chain.unshift(interceptor.fulfilled, interceptor.rejected);
});

axios.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
chain.push(interceptor.fulfilled, interceptor.rejected);
});

在 Axios 的完整实现中,这个拦截器机制被集成到了 Axios 的请求发送和响应处理流程中。通过这种方式,Axios 可以在发送请求之前和接收响应之后,但在用户定义的 .then.catch 执行之前,插入自定义的逻辑。


请注意,这里提供的代码只是为了说明 Axios 拦截器的实现原理,并不是 Axios 源码的完整复制。如果你对 Axios 的拦截器实现细节感兴趣,建议查看 Axios 的官方 GitHub 仓库中的源码。



前端基建


当我们工作时间久了面试难免会遇到这些问题,前端工程化,前端监控,工作流,部署,性能等等。其实我们在工作中绝大部分时间都在写代码,对于这些不是所有人都有机会接触到,不过这些和所做的业务无关,是我们提升自己很好的一个思路。


技术选型


技术栈选 Vue 还是 React?Vue 选 Vue2 还是 Vue3?组件库选 ElementUI 还是 Ant Design?微前端有没有使用过?打包工具用 Vite 还是 Webpack?有那么多表单怎么实现的,有没有什么表单配置化方案,比如Formily?


对于我这种菜鸡,我这种只写简单的表单表格的人,这些都……无所谓……


image.png

不过为了应对面试我们还是需要了解下未选择技术栈的缺点,和已选择技术栈的优点(有点本末倒置…但是常规操作啦)


Vue 你可以说简单高效轻量级,面试必会问你为什么,你就开始说 Vue 的响应式系统,依赖收集等。


React 你可以说 JSX、Hooks 很灵活,那你必然要考虑 JSX 怎么编译, Hooks 实现方式等。


总体而言,对于技术选型,依赖于我们对所有可选项的理解,做选择可能很容易,给出合理的理由还是需要花费一些精力的。


开发规范


这个方面,在面试的时候我被问到的不多,我们可以在创建项目的时候,配置下 ESlintstylelintprettiercommitlint 等。


前端监控


干了这么多年前端,前端监控我是……一点没做过。


image.png

前端监控,简单来说就是我们在前端程序中记录一些信息并上报,一般是错误信息,来方便我们及时发现问题并解决问题。除此之外也会有性能监控,用户行为的监控(埋点)等。之前也听过有些团队分享前端监控,为了出现问题明确责任(方便甩锅)。


对于实现方案,无论使用第三方库还是自己实现,重要的都是理解实现原理。


对于错误监控,可以了解一下 Sentry,原理简单来说就是通过 window.onerrorwindow.addEventListener('unhandledrejection', ...) 去分别捕获同步和异步错误,然后通过错误信息和 sourceMap 来定位到源码。


对于性能监控,我们可以通过 window.performancePerformanceObserver 等 API 收集页面性能相关的指标,除此之外,还需要关注接口的响应时间。


最后,收集到信息之后,还要考虑数据上报的方案,比如使用 navigator.sendBeacon 还是 Fetch、AJAX?是批量上报,实时上报,还是延迟上报?上报的数据格式等等。


CI/CD


持续集成(Continuous Integration, CI)和 持续部署(Continuous Deployment, CD),主要包括版本控制,代码合并,构建,单测,部署等一系列前端工作流。


场景的工作流有 Jenkins、 Gitlab CI 等。我们可以配置在合并代码时自动打包部署,在提交代码时自动构建并发布包等。


这块我了解不多,但感觉这些工具层面的东西,不太会涉及到原理,基本上就是使用的问题。还是需要自己亲自动手试一下,才能知道细节。比如在 Gitlab CI 中, Pipeline 、 Stage 和 Job 分别是什么,怎么配置,如何在不同环境配置不同工作流等。


了解技术动态


这个可能还是比较依赖信息收集能力,虽然我个人觉得很烦,但好像很多领导级别的面试很愿意问。


比如近几年很火的低代码,很多面试官都会问,你用过就问你细节,你没用过也会问你有什么设计思路。


还有最近的两年爆火的 AI,又或者 Vue React的最新功能,WebAssembly,还有一些新的打包工具 Vite Bun 什么的,还有鸿蒙开发……


虽然不可能学完每一项新技术,但是可以多去了解下。


总结


写了这么多,可能有人会问,如果能回到过去,你会怎么做。


啊,我只能说,说是一回事,做又是另一回事,事实上我并不希望回到过去去卷一遍,菜点没关系,快乐就好,一切都是最好的安排。


image.png

作者:我不吃饼干
来源:juejin.cn/post/7360528073631318027
收起阅读 »

准备离开杭州

上个月的时候,我被公司裁掉了,陆陆续续找了 1 个月的工作,没有拿到 1 份 Offer,从网上看着各式各样的消息和自己的亲身体会,原来对于像我这样的普通打工族,找工作是如此的难。我相信,任何时候只要实力强,都能有满意的工作,但我不知道,能达到那样的水平还需要...
继续阅读 »

上个月的时候,我被公司裁掉了,陆陆续续找了 1 个月的工作,没有拿到 1 份 Offer,从网上看着各式各样的消息和自己的亲身体会,原来对于像我这样的普通打工族,找工作是如此的难。我相信,任何时候只要实力强,都能有满意的工作,但我不知道,能达到那样的水平还需要多久。


本人是前端,工作 6 年,期间经历过 4 家公司,前两份是外包,后面两份都是领大礼包走的,回想起来,职业生涯也是够惨的。虽然说惨,但是最近领的这一份大礼包个人认为还是值得,工作很难待下去,也没有任何成长,继续待着也是慢性死亡。


这几天我每天都会在 BOSS 上面投十几家公司,能回复非常少,邀请面试的就更少了。外包公司倒是挺多的,而我是从那个火坑里出来的,是不会选择再进去的。于是,我需要做好打持久战的准备,说不定不做程序员了。


我的房子 7 月底就要到期了,我必须要马上做决定,杭州的行情对我来说很不友好,短期内我大概率找不到工作。基于对未来的悲观考虑,我不想把过多的钱花费在房租上面,所以希望就近找一个三线城市,我搜了一下嘉兴,整租 95 平左右的房子只需要 1200 块钱,还是民用水电,思前想后,打算移居到那里嘉兴去。


一方面,我想尝试一下在三线城市生活是一种什么感觉。另一方面,这可以省钱,如果一个月的房租是 1000,民用水电,一个月的开销只要 2500 块。我搜索了一下货拉拉,从我的位置运到嘉兴,需要花费 600 块钱,这个价格也是可以接受的。思考了这些,我觉得是时候离开待了 5 年的杭州。


未来要到哪里去呢,目前可能的选择是上海。我还得想想未来能做什么,我想学一门手艺傍身,比如修理电器、炒菜。毕竟骑手行业太拥挤了,估计也不是长久之计。


房租降下来了,等我把行李都安置妥当,我打算回老家待一段时间。自从上大学以来,很少有长时间待在家里的时候,眼看父母年纪也越来越大了,很想多陪陪他们。如果进入正常的工作节奏,想做到这样还是会受到局限,这次也算是一个弥补的机会。


被裁也是一件好事,可以让我提前考虑一下未来的出路。


这段时间我想把时间用来专门学英语,再自己做几个项目,学英语的目的是为了 35 岁之后做打算,做项目是为了写到简历上面,并且个人觉得自己需要多做一个项目,这样自己才能成长到下一个级别。虽然不知道收益怎么样,但是我想尝试一下。人还活着,有精力,就还是瞎折腾一下。


离职没敢和家里说,说了估计要担心死了,反正是年轻人,有事就先自己扛一扛,我前几天把我的行李寄回去了一批,我妈问我,怎么,寄东西回来了?我回答说要搬家了。本来也想找机会开口说自己离职了,她说,这次搬家也别离公司远了,我也把话憋了进去,只好说“没事的,放心就行”。我自己没觉得离职有什么,正常的起起落落,只是觉得父母可能会过度的担心。


如果做最坏的打算,那就是回去种地,应该这几年还饿不死。有还没离职的同学,建议还是继续苟着。希望社会的低谷期早点过去,希望我们都能有美好的未来。


评论区很多朋友想要拉一个群相互交流,现在拉好了!一起来吐槽工作,交流找工作心得!


image.png


目前是 6 群,刚开始人会比较少,过一段时间就多了,稍安勿躁。群过期了可能更新不及时,在微信搜索 mysteryven,私聊问我想加 1-6 的哪一个,我会同步给你。


更新:发展到现在,几个群活跃度都变得不是很高了,目前只是一个聊天的群,不会有什么高质量的信息。如果不是想摸鱼或者什么的,不需要加入此群。有的时候我可能忘记更新二维码,可以留言提醒我~


下一篇文章:从大城市搬到小城市需要注意哪些点?


作者:mysteryven
来源:juejin.cn/post/7395523104743178279
收起阅读 »

2年前的今天,我决定了躺平退休

两年前的这个时候,突然觉得说话特别费劲,舌头不太听使唤,左手突然不听话,就像李雪健老师表演那个帕金森老头喝酒一样。 我心里一慌,请假去了医院,验血,CT,超声。然后医生给我列了长长一篇诊断书:高血脂,高血压,糖尿病,冠心病,还有最可怕的脑出血,还好只是渗血,...
继续阅读 »

两年前的这个时候,突然觉得说话特别费劲,舌头不太听使唤,左手突然不听话,就像李雪健老师表演那个帕金森老头喝酒一样。


image.png


我心里一慌,请假去了医院,验血,CT,超声。然后医生给我列了长长一篇诊断书:高血脂,高血压,糖尿病,冠心病,还有最可怕的脑出血,还好只是渗血,虽然并不是很严重,但是位置不太好,影响了身体感官和左手。


平时身体非常好,也经常运动,为什么会突然得这么多病呢。毫无征兆的左手就不听使唤了。而且听力在这一段时间也非常差。通过大夫诊断,一部分是遗传因素,另一个是和我常年酗酒,熬夜有关,每天几乎只睡3-4小时。


是的,,,,,,我喜欢在家喝着啤酒写代码,甚至有时候在单位加班的时候也是喝啤酒写代码。和别人不太一样,别人喝酒爱睡觉,我喝啤酒失眠。因为接了很多项目,上班之余都是晚上和周末熬夜写代码做自己的项目。


其实听到这个消息我很失望,失望的并不是因为身体垮了,钱还没赚够,而是我还没有完成我的目标就是打造一个自己主导的产品。


那天从医院回家,我并没有去坐地铁,而是从中日友好医院徒步走回天通苑的出租屋。在路上,我反复的想,今后的路该如何走。


继续在互联网行业工作肯定是不行的,病情会进一步加重,到时候就真的成一个废人了,反而会拖累整个家庭。如果不继续“卷”那我也就无法实现自己来北京的目标了。不过好在经过这么多年的积累,已经存够足够养老的资本,并不需要为妻儿老小的生存发愁,但是也没有到财富自由的程度。


躺平,躺到儿子回老家上学就回老家退休。这是一个并不那么困难的决定。但是却是一个非常无奈的决定,躺平就意味着自己来北京定下的目标没有完成,意味着北漂失败。


做好这个决定以后,我就开始彻底躺平,把手里的几个项目草草收尾,赔了大几十万。等于这一年白忙活。好在还有一份工作收入。同时也拒掉了2个新的Offer。在疫情最困难的时候,还能拿到两个涨薪offer。我还是蛮佩服我自己的。但是为了不影响我的额外收入,加上现在工作不是很喜欢,也就一直犹豫不决。但是这次生病彻底让我下定了决定 ---- 算了。


其实,经历这么多年,什么都看的很清楚,但是我的性格并不适合这个行业,我这个人最大的特点就是腰杆子硬,不喜欢向上管理,经常有人说我那么圆滑,肯定是老油条,而实际上,我整整18年的工作经历,只对领导说过一次违心的话,变相的夸了老板定制的开发模式,老板看着我笑了笑,也不知道他是不是听出来我这话是讽刺还是撒谎。


而其余都是和老板对着干,只有2任老板是我比较钦佩的,也是配合最舒服的。而且共同特点都是百度出身,我特别喜欢百度系的老板。特别务实,认认真真做业务。不搞虚头巴脑的事情,更不在工作中弄虚作假。一个是滴滴的梁老板,另一个就是在途家时候的黄老板。


当然,在我整个职业生涯有很多厉害的老板,有的在人脉厉害,有的人个人管理能力,有的在技术。但是由于我性格原因,我就是跟他们合不来,所以要么你把我开了,要么等我找好下家主动离开。


所以我的职业生涯很不稳定,就比如我见过的一个我认为在技术能力上最厉害的老板,也是我唯一在技术上佩服的人,就是在36kr期间认识的海波老师,听他讲的系统架构分享和一些技术方案,真的是豁然开朗,在Saas和Paas的方方面面,架构演化,架构升级所可能遇到的各种问题及面对产品高速迭代所需要解决的问题及方案都门清,而且他本身也是自己带头写代码,实际编码能力也是非常的牛,并不是那种“口嗨”型领导。但就是我跟他的性格合不来,最后我把他那套架构方案摸透了以后就跑路了,而从他那里学的那套技术方案,在我日后在lowcode和Paas以及活动运营平台的技术方案设计上帮助颇多。而他不久之后也离开了。据说去了字节。


混迹于形形色色的老板手底下,遇到过的事情非常多,也让我认清了一点,那就是,牛人是需要平台去成就的,平台提供了锻炼你的机会和让你成长的机会。所以你学到了,你就成了牛人。而不是你自己手头那点沾沾自喜的觉得别人没你了解的深入的技术点。所以平台非常重要,绝大多数情况下都是如此。


所以我这种人就不适合,因为我不喜欢违心。我顶多就是不说出来,不参与,不直接反对就已经是对老板最大的尊重了。所以我能看透很多事情,但是也知道我不讨老板喜欢,而我的性格也不可能为了让老板喜欢而卑躬屈膝,所以,我早早就提前做好准备,就是拉项目,注意这不是做私活。拉项目就是承包项目,然后找几个做私活的人给他们开发。这项收入有时候甚至一年下来比我的工资还要高。风险也是有的,那就是可能赔钱,十几万十几万的赔。所以也是一个风险与收益共存的事情。做项目的好处是,你可以不断的接触新的甲方,扩张自己的人脉,也就不断的有项目。


但是由于这次生病,我手头的3个项目都没有做好,都被清场了。所以为了弥补朋友的损失,我一个人扛下了所有。也同时意味着后面也就没项目可接了。身体不允许了。


躺平以后,为了等孩子回老家上学,本职工作上,也开始混,我最后一年多的时间里,写代码,都不运行直接就提测。是的。没错。。。。。。就是这样。但是功能是都好用的,基本的职业操守是要有的。虽然也会有更多的bug。但是一周我只干半天就可以完成一周的工作。这可能就是经验和业务理解的重要性。所以,我一直不太理解很多互联网企业精简人员的时候为什么精简的是一线开发人员,而留下的是那些只会指挥的小组长。这也是为什么各大互联网企业都在去肥增瘦,结果肥的一点也没减下去。


不是有那么一句话,P8找P7分一个需求,然后P7找P6喊来P5开发。互联网就是这样子,一群不了解实际业务和实际代码的人,在那里高谈阔论,聊方案,聊架构,聊产品,聊业务,聊客户,聊趋势,然后让那些一脸“懵逼”的人去开发。最后的结果可想而知,最后很多需求都是一地鸡毛,但是责任却都要一线执行去承担,而为了证明需求的正向收益,那就在指标口径上“合理”的动动手脚,所以我在我整个职业生涯说出了那么一次,也是唯一一次违心的恭维话。


所以我特别佩服一个网红叫“大圣老师”,是一个卖课的,虽然我看不上他做的割韭菜的事情,但是我很佩服他这个人,他也是很刚的人,就是看不惯老板pua和无意义的加班,人家就是不干了。成功开辟了第二职业曲线,而且也很不错。


另一个网红就是“神光”,虽然我也看不上他,但是我很佩服他,佩服他追求自我的勇气。


而反观那些在职场唯唯诺诺卑躬屈膝的人,现在过的如何呢?人啊。还是要有点个性。没个性的人下场都挺惨的。


峰回路转,人那,这一辈子就是命,有时候把,真的是你也不知道结果会是什么样,23年在我百无聊赖,闲的五脊六兽的时候,一周的工作基本上半天就干完了,所以一个机缘巧合,遇见了一群有意思的人。当时大模型正在风口浪尖。好多人都在大模型里面摸金,而有这么一群人,一群大学生,在海外对我们进行大模型技术封锁的时候,为了自己的初衷,建立了在问这个网站。


而作为起步比别人要晚,产品做的还很粗糙如何跟市场上的竞品竞争呢?而且不收费,更不打广告,完全靠赞助存活。但是这一切都是为了在国外封锁我国大模型技术背景下的那句话“让知识无界,智能触手可及”。站长原文


所以在同类起步更早,产品做的更精细的很多产品逐渐倒下去以后,zaiwen还活着。所以我觉得特别有意思,这种产品活下来的概率是非常低的,除非整个团队都是为爱发电,于是我也加入到这个团队。


事实上也确实这样,整个团队是有极少部分社会工作者和大部分在校大学生组成,而大家聚一起做这件事的初衷就是为了让知识无国界,让国内用户可以更方便的体验最先进的海外大模型技术。而目标用户,也都是学生,老师和科研工作者。


就这样在这里,我重新找回了自己的目标,虽然,由于资金问题,资源问题,以及我个人身体限制能做的事情很少,但是却发现,大家都做的非常有动力,产品也在不断的迭代不断的发展,并且还活的很好。团队的人在这里也干的很开心。


今天,正是两年前我诊断出脑出血的那天,心里没有低落,也没有失望,更没有懊悔,有的只是新的体验。人生啊,来这一世,就是来体验的,别难为自己。顺势而为,就像张朝阳说的那句话“年轻人挺不容易的,建议年轻人不要过度努力,太过拼搏的话(对身体)是有伤害的,年轻人得面对现实,这个世界是不公平的


作者:YaHuiLiang
来源:juejin.cn/post/7416168750364540940
收起阅读 »

自己没有价值之前,少去谈人情世故

昨天和几个网友在群里聊天,一个网友说最近公司辞退了一个人,原因就是太菜了,有一个功能是让从数据库随机查一条数据,他硬是把整个数据表的数据都查出来,然后从里面随机选一条数据。 另外的群友说,这人应该在公司的人情世故做得不咋滴,要是和自己组长,领导搞好关系,不至于...
继续阅读 »

昨天和几个网友在群里聊天,一个网友说最近公司辞退了一个人,原因就是太菜了,有一个功能是让从数据库随机查一条数据,他硬是把整个数据表的数据都查出来,然后从里面随机选一条数据。


另外的群友说,这人应该在公司的人情世故做得不咋滴,要是和自己组长,领导搞好关系,不至于被辞退。


发言人说:相反,这人的人情世故做得很到位,和别人相处得也挺好,说话又好听,大家都觉得他很不错!


但是这有用吗?


和自己的组长关系搞好了,难道他就能给你的愚蠢兜底?


这未免太天真,首先组长也是打工的,你以为和他关系好,他就能包庇你,容忍你不断犯错?


没有人会愿意冒着被举报的风险去帮助一个非亲非故的人,因为自己还要生活,老婆孩子还要等着用钱,包庇你,那么担风险的人就是他自己,他为何要这样做?


我们许多人总是觉得人情世故太重要了,甚至觉得比自己的能力重要,这其实是一个侮误区。


有这种想法的大多是刷垃圾短视频刷多了,没经历过社会的毒打,专门去学酒满敬人,茶满欺人。给领导敬酒杯子不能高过对方,最好直接跪下来……


那么人情世故重要吗?


重要,但是得分阶层,你一个打工的,领导连你名字都叫不出来,你见到他打声招呼,他都是用鼻子答应,你觉得你所谓的人情世故有意义吗?


你以为团建的时候跑上去敬酒,杯子直接低到他脚下,他就会看中你,为他挡酒他就觉得你这人可扶?未免电视看得太多。


人情世故有用的前提一定是建立在你有被利用的价值之上,你能漂漂亮亮做完一件事,问题又少,创造的价值又多,那么别人就会觉得你行,就会记住你,重视你,至于敬酒这些,不过是走个过场而已。


所以在自己没有价值之前,别去谈什么人情世故,安安心心提升自己。


前段时间一个大二的小妹妹叫我帮她运行一个项目,她也是为了课程蒙混过关,后面和她聊了几句,她叫我给她一点建议。


我直接给她说,你真正的去写了几行代码?看了几本书?做了多少笔记?你真正的写了代码,看了书,有啥疑问你再找我,而不是从我这里找简便方法,因为我也没有!


她说最烦学习了,完全不想学,自己还是去学人情世故了。


我瞬间破放了,对她说你才20岁不到,专业知识不好好学,就要去学人情世故了?你能用到人情世故吗?


你是怕以后去进厂自己人情世故不到位别人不要你?还是以后去ktv陪酒或者当营销学不会?这么早就做准备了?


她后面反驳我说:你看那些职场里面的女生不也是很懂人情世故吗,你为啥说没用,这些东西迟早都是要学的,我先做准备啊!


我当时就不想和她聊下去了,我知道又是垃圾短视频看多了,所以才会去想这些!以为自己不好好学习,毕业后只要人情世故做到位,就能像那些女职场秘书一样,陪着领导出去谈生意。


想啥呢!


当然,并不存在歧视别人的想法,因为我没有资格,只不过是觉得该学习的时间别去想一些没啥用的事情!


我们所能看到的那些把人情世故运用得炉火纯青,让人感觉很自然的人,别人肯定已经到了一定的段位,这是TA的职业需要。


而大多数人都是在底层干着街边老太太老大爷都能干的活,领导连你名字都叫不出来,可以用空气人来形容,你说人情世故有什么卵用吗?


这不就等于把自己弄得四不像吗?


当你真的有利用价值,能够给别人提供解决方案的时候,再来谈人情世故,那时候你不学,生活都会逼着你去学。


最后说一句,当你有价值的时候,人情世故是你别人学来用在你身上的,不信你回头去看一下自己的身边的人,哪怕是一个小学教师,都有人提着东西来找他办事,但是如果没有任何利用价值,哪怕TA把酒场上面的套路都运用得炉火纯青,也会成为别人的笑柄!


作者:苏格拉的底牌
来源:juejin.cn/post/7352799449456738319
收起阅读 »

外行转码农,焦虑到躺平

下一篇《2024转行前端第6年》展示我躺平后捣鼓的东西 介绍自己 本人女,16年本科毕业,学的机械自动化专业,和大部分人一样,选专业的时候是拍大腿决定的。 恍恍惚惚度过大学四年,考研时心比天高选了本专业top5学校,考研失败,又不愿调剂,然后就参加校招大军。可...
继续阅读 »

下一篇《2024转行前端第6年》展示我躺平后捣鼓的东西


介绍自己


本人女,16年本科毕业,学的机械自动化专业,和大部分人一样,选专业的时候是拍大腿决定的。


恍恍惚惚度过大学四年,考研时心比天高选了本专业top5学校,考研失败,又不愿调剂,然后就参加校招大军。可能外貌+绩点优势,很顺利拿到了很多工厂offer,然后欢欢喜喜拖箱带桶进厂。


每天两点一线生活,住宿吃饭娱乐全在厂区,工资很低但是也没啥消费,住宿吃饭免费、四套厂服覆盖春夏秋冬。


我的岗位是 inplan软件维护 岗位,属于生产资料处理部门,在我来之前6年该岗位一直只有我师傅一个人,岗位主要是二次开发一款外购的软件,软件提供的api是基于perl语言,现在很少有人听过这个perl吧。该岗位可能是无数人眼里的神仙岗位吧,我在这呆了快两年,硬是没写过一段代码...


inplan软件维护 岗位的诞生就是我的师傅开创的,他原本只是负责生产资料处理,当大家只顾着用软件时,他翻到了说明书上的API一栏,然后写了一段代码,将大家每日手工一顿操作的事情用一个脚本解决了,此后更是停不下来,将部门各种excel数据处理也写成了脚本,引起了部门经理的注意,然后就设定了该岗位。


然而,将我一个对部门工作都不了解的新人丢在这个岗位,可想我的迷茫。开始半年师傅给我一本厚厚的《perl入门到精通》英文书籍,让我先学会 perl 语言。(ps:当时公司网络不连外网,而我也没有上网查资料的习惯,甚至那时候对电脑操作都不熟练...泪目)


师傅还是心地很善良很单纯的人,他隔一段时间会检查我的学习进度,然而当他激情澎拜给我讲着代码时,我竟控制不住打起了瞌睡,然后他就不管我了~~此后我便成了部门透明人物,要是一直透明下去就好了。我懒散的工作态度引起了部门主管的关注,于是我成了他重点关注的对象,我的工位更是移到了他身后~~这便是我的噩梦,一不小心神游时,主管的脸不知啥时凑到了我的电脑屏幕上~~~😱


偶然发现我的师傅在学习 php+html+css+js,他打算给部门构建一个网站,传统的脚本语言还是太简陋了。我在网上翻到了 w3scool离线文档 ,这一下子打开了我的 代码人生。后面我的师傅跳槽了,我在厂里呆了两年觉得什么都没学到,也考虑跳槽了。


后面的经历也很魔幻,误打误撞成为了一名前端开发工程师。此时是2018年,算是前端的鼎盛之年吧,各种新框架 vue/react/angular 都火起来了,各种网站/手机端应用如雨后春笋。我的前端之路还算顺利吧,下面讲讲我的经验吧


如何入门


对于外行转码农还是有一定成本的,省心的方式就是报班吧,但是个人觉得不省钱呀。培训班快则3个月,多的几年,不仅要交上万的培训费用,这段时间0收入,对于家境一般的同学,个人不建议报班。


但是现在市场环境不好,企业对你的容忍度不像之前那么高。之前几年行业缺人,身边很多只懂皮毛的人都可以进入,很多人在岗位半年也只能写出简单的页面,逻辑复杂一点就搞不定~~即使被裁了,也可以快速找到下家。这样的日子应该一去不复返了,所以我们还是要具备的实力,企业不是做慈善的,我们入职后还是要对的起自己的一份工资。


讲讲具体怎么入门吧


看视频:


b站上有很多很多免费的视频,空闲之余少刷点段子,去看看这些视频。不要问我看哪个,点击量大的就进去看看,看看过来人的经验,看看对这个行业的介绍。提高你的信息量,普通人的差距最大就在信息量的多少


还是看视频:


找一个系统的课程,系统的学习 html+css+js+vue/react,我们要动手写一些demo出来。可以找一些优秀的项目,自己先根据它的效果自己实现,但后对着源码看看自己的局限,去提升。


做笔记:


对于新人来说,就是看了视频感觉自己会了,但是写起来很是费力。为啥呢?因为你不知道也记不住有哪些api,所以我们在看视频学习中,有不知道的语法就记下来。

我之前的经验就是手动抄写,最初几年抄了8个笔记本,但是后面觉得不是很方便,因为笔记没有归纳,后续整理笔记困难,所以我们完全可以用电子档的形式,这方便后面的归纳修改。

嘿嘿,这里给大家推荐一下我的笔记 前端自检清单,这是我对我的笔记的总结,现在看来含金量不是很大,这些文章基本就copy总结别人的文章,很少有自己的思想,我更多是将它当成一个手册吧,我自己也经常遗忘一些API,所以时不时会去翻翻。


回顾:


我们的笔记做了就要经常的翻阅,温故而知新,经常翻阅我们的笔记,经常去总结,突然有一天你的思维就上升了一个高度。



  • 慢慢你发现写代码就是不停调用api的过程

  • 慢慢你会发现程序里的美感,一个设计模式、一种新思维。我身边很多人都曾经深深沉迷过写代码,那种成就感带来的心流,这是物质享受带来不了的


输出:


就是写文章啦,写文章让我们总结回顾知识点,发现知识的盲区,在这个过程中进行了深度思考。更重要的是,对于不严谨的同学来说,研究一个知识点很容易浅尝则止,写文章驱动自己去更深层系统挖掘。不管对于刚入行的还是资深人士,我觉得输出都是很重要的。


推荐大家去看神说要有光大神的文章 为什么我能坚持?因为写技术文章给我的太多了呀!,这时我最近很喜欢的一个大神,他的文章我觉得很有深度广度(ps:不是打广告呀,真心觉得受益了)。


持续提升


先谈谈学历歧视吧,现在很多大厂招聘基本条件就是211、985,对此很是无奈,但是我内心还是认可这种要求的,我对身边的本科985是由衷的佩服的。我觉得他们高考能考上985,身上都是有过人之处的,学习能力差不了。


见过很多工作多年的程序员,但是他们的编码能力无法描述,不管是逻辑能力、代码习惯、责任感都是很差的,写代码完全是应付式的,他们开发的代码如同屎山。额,但是我们也不要一味贬低他人,后面我也学会了尊重每一个人,每个人擅长的东西不一样,他可能不擅长写代码,但是可能他乐观的心态是很多人不及的、可能他十分擅长交际...


但是可能的话,我们还是要不断提高代码素养



  • 广度:我们实践中,很多场景没遇到,但是我们要提前去了解,不要等需要用、出了问题才去研究。我们要具备一定的知识面覆盖,机会是给有准备的人的。

  • 深度:对于现在面试动不动问源码的情况,很多人是深恶痛绝的,曾经我也是,但是当我沉下心去研究的时候,才发现这是有道理的。阅读源码不仅挺高知识的广度,更多让我们了解代码的美感


具体咋做呢,我觉得几下几点吧。(ps:我自己也做的不好,道理都懂,很难做到优秀呀~~~)



  • 扩展广度:抽空多看看别人的文章,留意行业前沿技术。对于我们前端同学,我觉得对整个web开发的架构都要了解,后端同学的mvc/高并发/数据库调优啥的,运维同学的服务器/容器/流水线啥的都要有一定的了解,这样可以方便的与他们协作

  • 提升深度:首先半路出家的同学,前几年不要松懈,计算机相关知识《操作系统》《计算机网络》《计算机组成原理》《数据结构》《编译原理》还是要恶补一下,这是最基础的。然后我们列出自己想要深入研究的知识点,比如vue/react源码、编译器、低代码、前端调试啥啥的,然后就沉下心去研究吧。


职业规划


现在整个大环境不好了,程序员行业亦是如此,身边很多人曾经的模式就是不停的卷,卷去大厂,跳一跳年薪涨50%不是梦,然而现在不同了。寒风凌凌,大家只想保住自己的饭碗(ps:不同层次情况不同呀,很多大厂的同学身边的同事还是整天打了鸡血一般)


曾经我满心只有工作,不停的卷,背面经刷算法。22年下半年市场明显冷下来,大厂面试机会都没有了,年过30,对大厂的执念慢慢放下。


我慢慢承认并接受了自己的平庸,然后慢慢意识到,工作只是生活的一部分。不一定要担任ceo,才算走上人生巅峰。最近几年,我爱上了读书,以前只觉得学理工科还是实用的,后面慢慢发现每个行业有它的美感~


最后引用最近的读书笔记结尾吧,大家好好体会一下论语的“知天命”一词,想通了就不容易焦虑了~~~



自由就是 坦然面对生活,看清了世界的真相依然热爱生活。宠辱不惊,闲看庭前花开花落。去留无意,漫随天外云卷云舒。



image.png


欢迎关注我的前端自检清单,我和你一起成长


作者:liucheng58
来源:juejin.cn/post/7343138429860347945
收起阅读 »

马斯克贴脸开大星际之门项目:他们根本没钱,奥特曼是骗子

昨天,美国科技界发生了一件大事:美国新任总统特朗普联合 OpenAI CEO 奥特曼、软银 CEO 孙正义宣布了一个名为「星际之门」(Stargate Project)的人工智能项目。 该项目将成立一家公司,计划未来四年内投资 5000 亿美元,并立即开始部署...
继续阅读 »

昨天,美国科技界发生了一件大事:美国新任总统特朗普联合 OpenAI CEO 奥特曼、软银 CEO 孙正义宣布了一个名为「星际之门」(Stargate Project)的人工智能项目。


该项目将成立一家公司,计划未来四年内投资 5000 亿美元,并立即开始部署 1000 亿美元,为 OpenAI 在美国建设新的人工智能基础设施。此举旨在确保美国在人工智能领域的领导地位,同时创造数十万个新就业岗位。


图源:the Verge


星际之门项目公布之后,围绕着它的讨论便开始了,有力挺者,也有泼冷水的。


近来风头正盛的马斯克来了波贴脸开大,「他们根本就没有这么多钱。并且根据可靠的消息来源,软银现在的资金远低于 100 亿美元。」



数小时之后,奥特曼进行了回击。他一方面肯定了马斯克是我们这个时代最鼓舞人心的企业家,并真诚地尊重他的成就。



另一方面反驳道,「马斯克你是错的,你肯定也知道。你要不要来参观一下已经在建设中的第一个站点呢?星际之门项目对国家来说是件好事。我觉得有利于国家的事情并不总是对你们公司最有利。在你的新角色中,我希望你能把国家放在第一位。」



在另一位推特博主、软件工程师 Jason DeBolt 的帖子(他表示奥特曼不值得信任,直觉告诉他奥特曼应该远离人工智能,星际之门项目不会有好结果)下面,马斯克又嘲讽「奥特曼是个骗子」。



而就在马斯克与奥特曼在推特对线的同时,人工智能独角兽 Anthropic 的 CEO Dario Amodei 也加入了战局。另外,据多方可靠消息,谷歌昨日向 Anthropic 追加了 10 亿美元投资。


在达沃斯世界经济论坛接受彭博社采访时,Dario Amodei 认为,星际之门看起来「有点混乱」,目前既不清楚该项目实际涉及多少资金以及其中多少资金能承诺到位,也不清楚政府将如何参与进来。


Dario Amodei。图源:bloomberg


此外,微软 CEO 纳德拉在接受 CNBC 采访时,也被问及对星际之门以及马斯克嘲讽 OpenAI 等没这么多钱的看法。


纳德拉没有选择正面回答,只是表示微软 2025 财年将投入的 800 亿美元会到位,这些钱将用于扩建 Azure 服务,世界各地的客户可以在其上使用 OpenAI 以及其他厂商的大模型。


你觉得星际之门项目会草草收场吗?


参考链接:


x.com/ns123abc/st…


techcrunch.com/2025/01/22/…


http://www.bloomberg.com/news/articl…


作者:机器之心
来源:juejin.cn/post/7462937570671984681
收起阅读 »

🤔认真投入两个月做的小程序,能做成什么样子?有人用吗?

前言 Hello 大家好我是 oil 欧呦,大概一个月前,我写了一篇文章 # 🤔认真投入一个月做的小程序,能做成什么样子?有人用吗? ,那是我开始做自己的第一个卡盒小程序的第一个月,那又过了一个月后,这个小程序做到什么程度了呢?今天就给大家汇报一下情况。 性...
继续阅读 »

前言


Hello 大家好我是 oil 欧呦,大概一个月前,我写了一篇文章 # 🤔认真投入一个月做的小程序,能做成什么样子?有人用吗? ,那是我开始做自己的第一个卡盒小程序的第一个月,那又过了一个月后,这个小程序做到什么程度了呢?今天就给大家汇报一下情况。


7254f7fdf27ca69b299a5ea0a76a5d8.png

性能优化


从上个月月底开始,我就一直在进行性能优化了,因为用户的大部分的数据都是存储在本地的,因此数量量比较大的时候,一些普普通通的运算逻辑也会变得很耗时。于是我以单个卡盒 5000 张卡片正常使用为标准进行性能优化,上个月先是做了性价比最高的虚拟滚动,虚拟轮播图,减少 dom 节点的渲染,保障几百张卡片时页面可以正常使用。


在这个月里大部分做的都是复杂运算的复杂度降低,跟着 performance 里的火焰图一点点检查一些耗时高的运算,减少数组遍历次数,减少嵌套遍历,增加防抖,缓存等等机制,让复杂运算只在需要的时候执行,最终效果还是很可观的,目前 3000 张卡片只有轻微的操作延迟了。


我还将轮播图的优化写了一篇文章介绍:😎 小程序手搓轮播图,几千个元素滑动照样丝滑~,其他的性能优化和我的业务太强相关了,就没有单独写文章。


考虑到小程序本地存储的限制和复杂运算导致的卡顿问题,后面有时间了我还是把全部数据都迁移到云上数据库吧,这样用户也可以跨设备使用了。


Bug 修复


随着功能越来越多,Bug 也陆续浮现出来。由于小程序还处于初期阶段,我还没有写自动化测试,所以每次添加新功能时,经常会影响到已有的功能。后来,我每次发版前都会录一个介绍新功能的视频,顺便发到小红书上。这个视频中肯定不能出现 Bug,这等于强制我把手动测试和宣传流程绑定在一起。


有几个与小程序数据修改后没有重新渲染页面的 Bug ,修复花了不少时间,虽然 Cursor 在 Bug 修复方面帮不上太大的忙,但用多了反而让我对自己的代码不够自信。偶尔踩踩坑,自己从头梳理一下逻辑也挺好的。


新的 AI 功能


推出了三种学习模式:


c74e9509b71022903af11d81053da39.png

  • 回忆模式:自行选择对卡片的记忆情况

  • 单选模式:通过 AI 生成混淆选项

  • 复述模式:手动输入答案 AI 进行评分和解析


具体的功能介绍可以看这篇文章:🧐如何基于艾宾浩斯记忆曲线设计一个学习规划+定时复习功能


期间,大模型换了三次。第一次从千问换成了 DeepSeek,后来因为生成速度太慢,又换成了 Gemini。结果用了一段时间后,发现由于地区原因被限制调用了,最后换成了微软的 Phi4。顺便我还重构了整个用户限额逻辑,将每天的使用额度从 15 次提升到 50 次。反正 AI 的成本也不高,不如让用户开心使用。


小程序使用情况


第一个月的第三周开头把小程序上架,第四周结束大概 150 人使用过,每天十几二十个,不过当时就在掘金发发技术文章,也没咋宣传。


从第一个月结束到今天,大概新增了 1300 个用户吧,一月六号那一天不知道是不是有了什么小程序的推荐,那天用户访问量会比较高,达到四百多:


0961a8f7ab8eb5d892d40cab751fb32.png

但是后续因为没有备案,导致小程序的被搜索功能直接被关闭了,只有已经添加过小程序的用户才能进入,导致后续的访问量就暴跌了,那天我赶紧去把备案的资料准备好,整个流程大概三天搞定了,这三天里就没有任何新用户可以进入小程序了,从那之后小程序的流量就很差了,每天大概二三十人吧,加上年末了工作特别忙,也没有经常去更新功能和运营小红书了。


截至至发文这天,整体数据是这样的:


e08fa23fecc59dd2dd80ae1dac0858f.jpg

卡盒集市


438459cf4612ba5facf58335e68790f.png

从我的小程序上线一周的时候,就有好多人说如果要自己生成卡片,即便有 AI 也挺麻烦的,因此我就想着提供一些现成的卡片,用户可以自助选择导入,但是卡片的内容我一直很纠结,毕竟用户五花八门,想要学的东西也不同,我自己来做这件事情要花不少精力的。


不过纠结归纠结,身体还是很老实的开始做了,第一批的内容我做的是我自己用学习卡盒最常用的场景,就是英语对话学习,将一篇英语对话文章中的每一句话做为一张卡片,正面是中文,反面是英文。首先花了很多时间,先创建了《365天英语口语》,其中包含各种日常生活场景的对话句子,用于学习英语造句能力和常用语法。共七十多个卡盒,每个卡盒中卡片一些关键点都自带笔记。


其次是《日常生活单词》,包含各种生活场景的常用单词集合,动物,天气,厨房用具,旅行,购物都有,后续还有四十几个场景我正在整理中,每张卡片背面笔记中都带有例句,卡盒集市中的卡盒在预览的时候可以简单查看正反面,如果需要学习可以导入到自己的目录中,导入后就像自己创建的卡盒一样可以制定学习计划了。


内容的整理我是用的 DeepSeek,DeepSeek 是真的良心啊,官网的对话是基本没有 token 上限的,一次几千上万个字都可以顺利生成,而且效果也不错,非常推荐大家体验一下。


运营推广


这个月开始发发小红书了,以使用介绍的视频和功能介绍的图文为主,我把我之前大学期间用来分享设计作品的账号用来发一些功能介绍之类的,我不想花太多时间去搞,所以每次都匆匆忙忙的录个视频做个图,怕自己认真做了没有好反馈会不开心哈哈哈,最开始浏览量不高,后面慢慢的略有起色,不至于很冷清,但相比于我以前的一些比较火的作品,也算挺惨淡的。


030b7296a781ee76650923ad40bad92.png

不过为了做一些宣传图,我又把之前的一些设计字体啥的重新在电脑上安装了下,机模的图用的是 shots.so 生成的,文字自己在 PPT 里加一加,效果还可以,给大家看看:


cd6bda6025565dd33f8853337679f06.jpg

目前是一篇爆文都没有,所以这个首图好不好看可能还处在一个自嗨阶段,更好设计方向和标题内容我还在持续摸索中。


后续


接下来,我计划继续优化小程序的性能,尤其是将数据迁移到云端,彻底解决本地存储的限制问题。在功能方面,我还有很多关于AI功能的创意,后续有时间会逐步研究并落地实现。


同时,我也会继续在小红书和其他平台上进行宣传推广。除了推广小程序本身,我还会把每个复杂一点的实现技术点写成文章,总结实现思路并提供示例代码,希望能帮助大家少踩一些坑。也欢迎大家搜索并体验学习卡盒小程序,期待你们的反馈和建议!


作者:oil欧哟
来源:juejin.cn/post/7462338830965424139
收起阅读 »

年终 :别自我内耗了 ,每年奖励自己一点新东西

前言 前两天看到一个评论 ,答主说 : 代码写了几年 ,已经没有刚毕业时候的热情了,不想深入,没有欲望。 这其实是一个很普遍的现象 : 当一件事情成了工作 ,那必然有麻木的一天。 关于自我内耗 当 写代码 和工作挂钩了 ,那他就会离生活越来越远。 我们去做这件...
继续阅读 »

前言


前两天看到一个评论 ,答主说 : 代码写了几年 ,已经没有刚毕业时候的热情了,不想深入,没有欲望。


这其实是一个很普遍的现象 : 当一件事情成了工作 ,那必然有麻木的一天


关于自我内耗


写代码 和工作挂钩了 ,那他就会离生活越来越远。 我们去做这件事情的时候,就会自然的和 收入 ,未来 等要素进行强绑定。



  • 工作压力大了 ,兴趣度 - 1

  • 每加一次班 ,兴趣度 - 1

  • 每和产品打一架 , 兴趣度 -1

  • 不涨工资不升职 , 兴趣度 -1

  • 。。。。。


每一次工作上的不如意 ,都会让你对编码的兴趣降低!!


久而久之 ,你可能会想 : 你是不是不喜欢编码 ,你可能根本不喜欢写代码 , 你不想再为这个你不喜欢的兴趣花精力了。


而这篇文章的目的 ,就是为了给大家一个方向 : 如何维持自己的兴趣 ,找回初心


关于我的一年



发布的文章 - Java 部分 :



今年和往年大差不差 ,发布了 40+ 篇文章。其中 Java 只针对一些特定领域进行了加强 :


image.png


加上一些零零散散的 JVM 文章 ,总共应该15篇左右。 但是这些其实已经够了 ,到了5-10年这个年限 , 单纯编码技术上已经没有太大的空间了。


年轻的时候硬吃底层 ,是为了提高自己的代码水平。年限大了就会发现 ,底层代码其实都差不多 ,哪怕看过了流程 ,转头就忘 ,就算不忘 ,大多数地方一辈子也用不上。


📍 总结 : 所以我现在对自己的规划是针对于特定场景, 进行深度的思考 ,更偏向与架构层面



寻求突破 - 其他部分 :



其他的大部分精力 ,都没有局限当前的语言上面 , 一直在研究新的东西。


image.png


image.png


image.png


@ gitee.com/antblack/an…


重要的精力都放在了 Python 和 大数据 , AI 层面。 他们针对的目的性都是不同的。



  • ❤️ Python 的目的是为了开辟自己的副业

  • ❤️ 大数据是当前行业的升级 ,大数据能让我在当前领域尝试更多的创新模式

  • ❤️ AI 是未来 ,记住 , 人工智能是未来


这3个方向都没有把自己局限在编码层面了 ,而这3个模块都有可能让我在脱离工作后 ,也能拥有更多的出路, 不管是创业还是寻求更好的工作,他们都能有所帮助。


📍 总结 : 所以没必要把自己限制在一行行代码之间,CURD 已经在工作中写的够多了,去看看一些关联的领域。


给自己一点奖励吧


写代码 6-7 年了 , 我对编程还是一如初心, 其实只是对自己经常进行一些小奖励 , 这里我也许可以给苦恼的朋友们一些小方向 :



每年奖励自己一门新语言 :



这些年来 ,我陆陆续续尝试了 JavaScript , Android , Lua (这个不算大, 算是偷懒了) , 到今年用 Python 写了一个开源工具。


我每年都会让自己去了解一下其他的语言, 他们都不会学的太深 ,主要的定位是能用他们产生一个生产力的应用。


比如 JavaScript 主要用来写了一个小程序 (最后不好玩都没上架)。 Lua 是为了自己实现一个 Nginx 的工具。


Android 是为了实现一个简单的 App , Python 是为了能炒股。


👉 奇奇怪怪的想法和思路 ,以及实现后的一点点成就感 ,是维持兴趣的一大核心。



每年奖励一些新东西 :



年初 AIGC 大火的时候 ,就一直在尝试 AIGC 转换成生产力,最简单的实现就是帮我老婆实现了一个 SD 的文生图服务器 ,不过后面太贵了就下了(真老贵)。


然后又陆陆续续的尝试各种 AIGC 的直接使用 ,当你切实的做出一点什么后 ,成就感老多了。


AIGC : 真的要失业了 , 让 ControlNet 带来一点小震撼


然后这一年都在让 AI 帮我提高生产力 ,可以说非常成功。 比如我的 Python 项目 ,其中80% 的代码都是 AI 实现的, 这让我最后落地的压力大大减轻,成功率提高了很多。


👉 新的东西 ,总能让我感觉到我还很年轻 ,未来还有无限可能。



时不时的让自己彻底放松一次 :



不要去思考工作 ,不要去思考未来 ,就彻彻底底的为了去玩。


一开始是黑神话大火 ,那是真的下班准时走 ,技术是一天不带看的 ,就是为了玩, 连续玩了大半个月 ,通关后整个人都舒服了,谁也别想让我学。


然后后面又给自己奖励了一台小相机 ,那每周拖着家人出去拍照 ,学 ? 学个屁学,那不拿个摄影奖 ,学什么学。


👉 玩的不多 ,每年也就2-3次 ,但是真的能让人压力降低很多。


总结


2024 已经过去了 ,2025 也将到来 ,计划年初就已经定完了 , 又是充满期待的一年。


希望各位都能在生活中找到自己的节奏 ,不要有了工作失去生活。


祝大家新年快乐。


最后的最后 ❤️❤️❤️👇👇👇



作者:志字辈小蚂蚁
来源:juejin.cn/post/7463442625900281907
收起阅读 »

年终 :别自我内耗了 ,每年奖励自己一点新东西

前言 前两天看到一个评论 ,答主说 : 代码写了几年 ,已经没有刚毕业时候的热情了,不想深入,没有欲望。 这其实是一个很普遍的现象 : 当一件事情成了工作 ,那必然有麻木的一天。 关于自我内耗 当 写代码 和工作挂钩了 ,那他就会离生活越来越远。 我们去做这件...
继续阅读 »

前言


前两天看到一个评论 ,答主说 : 代码写了几年 ,已经没有刚毕业时候的热情了,不想深入,没有欲望。


这其实是一个很普遍的现象 : 当一件事情成了工作 ,那必然有麻木的一天


关于自我内耗


写代码 和工作挂钩了 ,那他就会离生活越来越远。 我们去做这件事情的时候,就会自然的和 收入 ,未来 等要素进行强绑定。



  • 工作压力大了 ,兴趣度 - 1

  • 每加一次班 ,兴趣度 - 1

  • 每和产品打一架 , 兴趣度 -1

  • 不涨工资不升职 , 兴趣度 -1

  • 。。。。。


每一次工作上的不如意 ,都会让你对编码的兴趣降低!!


久而久之 ,你可能会想 : 你是不是不喜欢编码 ,你可能根本不喜欢写代码 , 你不想再为这个你不喜欢的兴趣花精力了。


而这篇文章的目的 ,就是为了给大家一个方向 : 如何维持自己的兴趣 ,找回初心


关于我的一年



发布的文章 - Java 部分 :



今年和往年大差不差 ,发布了 40+ 篇文章。其中 Java 只针对一些特定领域进行了加强 :


image.png


加上一些零零散散的 JVM 文章 ,总共应该15篇左右。 但是这些其实已经够了 ,到了5-10年这个年限 , 单纯编码技术上已经没有太大的空间了。


年轻的时候硬吃底层 ,是为了提高自己的代码水平。年限大了就会发现 ,底层代码其实都差不多 ,哪怕看过了流程 ,转头就忘 ,就算不忘 ,大多数地方一辈子也用不上。


📍 总结 : 所以我现在对自己的规划是针对于特定场景, 进行深度的思考 ,更偏向与架构层面



寻求突破 - 其他部分 :



其他的大部分精力 ,都没有局限当前的语言上面 , 一直在研究新的东西。


image.png


image.png


image.png


@ gitee.com/antblack/an…


重要的精力都放在了 Python 和 大数据 , AI 层面。 他们针对的目的性都是不同的。



  • ❤️ Python 的目的是为了开辟自己的副业

  • ❤️ 大数据是当前行业的升级 ,大数据能让我在当前领域尝试更多的创新模式

  • ❤️ AI 是未来 ,记住 , 人工智能是未来


这3个方向都没有把自己局限在编码层面了 ,而这3个模块都有可能让我在脱离工作后 ,也能拥有更多的出路, 不管是创业还是寻求更好的工作,他们都能有所帮助。


📍 总结 : 所以没必要把自己限制在一行行代码之间,CURD 已经在工作中写的够多了,去看看一些关联的领域。


给自己一点奖励吧


写代码 6-7 年了 , 我对编程还是一如初心, 其实只是对自己经常进行一些小奖励 , 这里我也许可以给苦恼的朋友们一些小方向 :



每年奖励自己一门新语言 :



这些年来 ,我陆陆续续尝试了 JavaScript , Android , Lua (这个不算大, 算是偷懒了) , 到今年用 Python 写了一个开源工具。


我每年都会让自己去了解一下其他的语言, 他们都不会学的太深 ,主要的定位是能用他们产生一个生产力的应用。


比如 JavaScript 主要用来写了一个小程序 (最后不好玩都没上架)。 Lua 是为了自己实现一个 Nginx 的工具。


Android 是为了实现一个简单的 App , Python 是为了能炒股。


👉 奇奇怪怪的想法和思路 ,以及实现后的一点点成就感 ,是维持兴趣的一大核心。



每年奖励一些新东西 :



年初 AIGC 大火的时候 ,就一直在尝试 AIGC 转换成生产力,最简单的实现就是帮我老婆实现了一个 SD 的文生图服务器 ,不过后面太贵了就下了(真老贵)。


然后又陆陆续续的尝试各种 AIGC 的直接使用 ,当你切实的做出一点什么后 ,成就感老多了。


AIGC : 真的要失业了 , 让 ControlNet 带来一点小震撼


然后这一年都在让 AI 帮我提高生产力 ,可以说非常成功。 比如我的 Python 项目 ,其中80% 的代码都是 AI 实现的, 这让我最后落地的压力大大减轻,成功率提高了很多。


👉 新的东西 ,总能让我感觉到我还很年轻 ,未来还有无限可能。



时不时的让自己彻底放松一次 :



不要去思考工作 ,不要去思考未来 ,就彻彻底底的为了去玩。


一开始是黑神话大火 ,那是真的下班准时走 ,技术是一天不带看的 ,就是为了玩, 连续玩了大半个月 ,通关后整个人都舒服了,谁也别想让我学。


然后后面又给自己奖励了一台小相机 ,那每周拖着家人出去拍照 ,学 ? 学个屁学,那不拿个摄影奖 ,学什么学。


👉 玩的不多 ,每年也就2-3次 ,但是真的能让人压力降低很多。


总结


2024 已经过去了 ,2025 也将到来 ,计划年初就已经定完了 , 又是充满期待的一年。


希望各位都能在生活中找到自己的节奏 ,不要有了工作失去生活。


祝大家新年快乐。


最后的最后 ❤️❤️❤️👇👇👇



作者:志字辈小蚂蚁
来源:juejin.cn/post/7463442625900281907
收起阅读 »

DeepSeek 出现的最大意义,是让老美意识到"闭源"死路一条

OpenAI 因为 DeepSeek 的崛起,导致 OpenAI 坐不住了。 虽然 OpenAI 的创始人兼 CEO 奥特曼曾在推特上大方表示:像 DeepSeek 这样的对手的出现,让他们感到兴奋,马上他们也会发布更好的模型。 于是在昨天凌晨,OpenAI ...
继续阅读 »

OpenAI


因为 DeepSeek 的崛起,导致 OpenAI 坐不住了。


虽然 OpenAI 的创始人兼 CEO 奥特曼曾在推特上大方表示:像 DeepSeek 这样的对手的出现,让他们感到兴奋,马上他们也会发布更好的模型。


于是在昨天凌晨,OpenAI 发布了全新推理模型 o3-mini:



甚至是免费提供 o3-mini 给用户使用,这也是 ChatGPT 首次向所有用户免费提供推理模型。


但又正如你现在也没有听说多少关于 o3-mini 的新闻那样,这个新模型的发布,更多只是 OpenAI 一方"自认为的大招",并未在 AI 圈掀起多少波澜 🤣🤣🤣


虽然 o3-min 不怎么样,但在 OpenAI 和奥特曼这段时间的丝滑小连招中,给外界传递了一个重磅信息:OpenAI 将重新考虑开源。


好家伙,这才是 DeepSeek 对世界的重大意义 👍👍


在最近一次的 Reddit(老美的贴吧)问答中,奥特曼表示:OpenAI 在开源问题上一直处于"历史错误的一边",需要制定不同的开源策略。


众所周知,OpenAI 中的 Open 一定程度就是指 "OpenSource 开源",旨在通过开源促进 AI 技术共享,早期他们也确实开源了部分 GPT 的版本(比如 2019 年开源了 GPT-2 的部分版本),但自从 ChatGPT 爆火之后,开源的工作他们就彻底不做了,也开始自主摘掉"非盈利性"的帽子,转而考虑融资和盈利问题。


这也是世界首富(同时也是 OpenAI 的早期投资人)马斯克一直吐槽的事儿:OpenAI 前期打着"推动世界 AI 发展"的口号,拿了不少捐赠和资源,等到小有成绩的时候,就开始盘算如何"藏着捏着"来大赚一笔。


如今 DeepSeek 的出现,已经打破了 OpenAI 领先业界的局面。


奥特曼现在公开表示重新考虑"开源问题",并不是良心发现,而是深切知道,差距在缩小,如果再坚持"闭源"将会死路一条。


相比于让大家免费使用上推理模型,能让 OpenAI 重新考虑开源,才是 DeepSeek 对这个世界而言的最大意义。


...


年初五接财神,祝大家 2025 财源广进。


继续安排一道简单算法题。


题目描述


平台:LeetCode


题号:553


给定一组正整数,相邻的整数之间将会进行浮点除法操作。


例如, [2,3,4] -> 2 / 3 / 4


但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。


你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。


你的表达式不应该含有冗余的括号。


示例:


输入: [1000,100,10,2]

输出: "1000/(100/10/2)"

解释:
1000/(100/10/2) = 1000/((100/10)/2) = 200
但是,以下加粗的括号 "1000/((100/10)/2)" 是冗余的,
因为他们并不影响操作的优先级,所以你需要返回 "1000/(100/10/2)"

其他用例:
1000/(100/10)/2 = 50
1000/(100/(10/2)) = 50
1000/100/10/2 = 0.5
1000/100/(10/2) = 2

说明:



  • 输入数组的长度在 [1,10][1, 10] 之间。

  • 数组中每个元素的大小都在 [2,1000][2, 1000] 之间。

  • 每个测试用例只有一个最优除法解。


数学 + 贪心


我们假定取得最优解的表示为 ab\frac{a}{b},可以留意到任意的 nums[i]nums[i] 的范围为 [2,1000][2, 1000],因此我们应当让尽可能多的 nums[i]nums[i] 参与 aa(分子)的构建中。


因此一种可以构成最优表示的方式为「将除第一位以外的所有数作为一组,进行连除(转乘法),从而将所有可以变成分子的数都参与到 aa 的构建中」。


即有:


nums[0]nums[1]/nums[2]/.../nums[n1]=nums[0]nums[1]×1nums[2]×...×1nums[n1]=nums[0]×nums[2]×...×nums[n1]nums[1]\frac{nums[0]}{nums[1] / nums[2] / ... / nums[n - 1]} = \frac{nums[0]}{nums[1] \times \frac{1}{nums[2]} \times ... \times \frac{1}{nums[n - 1]}} = \frac{nums[0] \times nums[2] \times ... \times nums[n - 1]}{nums[1]}

综上,我们只需要从前往后进行构建出连除的答案,如果 numsnums 的长度大于 22,再追加一对大括号即可。


[a0,a1,...,an][a_0, a_1, ... , a_n] => a0/a1/.../ana_0/a_1/.../a_n => a0/(a1/.../an)a_0/(a_1/.../a_n)


Java 代码:


class Solution {
public String optimalDivision(int[] nums) {
int n = nums.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(nums[i]);
if (i + 1 < n) sb.append("/");
}
if (n > 2) {
sb.insert(sb.indexOf("/") + 1, "(");
sb.append(")");
}
return sb.toString();
}
}

C++ 代码:


class Solution {
public:
string optimalDivision(vector<int>& nums) {
int n = nums.size();
string ans;
for (int i = 0; i < n; i++) {
ans += to_string(nums[i]);
if (i + 1 < n) ans += "/";
}
if (n > 2) {
ans.insert(ans.find("/") + 1, "(");
ans += ")";
}
return ans;
}
};

Python 代码:


class Solution:
def optimalDivision(self, nums: List[int]) -> str:
n = len(nums)
ans = ''
for i in range(n):
ans += str(nums[i])
if i + 1 < n:
ans += '/'
if n > 2:
idx = ans.find('/') + 1
ans = ans[:idx] + '(' + ans[idx:]
ans += ')'
return ans

TypeScript 代码:


function optimalDivision(nums: number[]): string {
const n = nums.length;
let ans = '';
for (let i = 0; i < n; i++) {
ans += nums[i].toString();
if (i + 1 < n) ans += '/';
}
if (n > 2) {
const idx = ans.indexOf('/') + 1;
ans = ans.substring(0, idx) + '(' + ans.substring(idx);
ans += ')';
}
return ans;
};


  • 时间复杂度:O(n)O(n)

  • 空间复杂度:O(n×C)O(n \times C),其中 CCnums[i]nums[i] 的最大长度,对于本题 C=4C = 4


作者:宫水三叶的刷题日记
来源:juejin.cn/post/7466448971695800347
收起阅读 »