禅
工作和学习时,帮助自己集中注意力的小工具:小睡眠 + 翻页时钟。
![]() | ![]() | ![]() |
---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
未来我打算做独立开发,不论是软件还是游戏,肯定避不开全栈开发。以前没接触过后端开发,粗略了解了一下相关知识后,决定从学习 Go 开始。
最近一个月,我的业余时间基本都花在学习 Go 上。前半个月主要是在熟悉 Go 的基本语法,关掉了所有代码提示和补全,跟着 Go by Example 一行一行地敲。自从有了 GPT 和 Copilot 后,很久没有敲这么多代码了,仿佛回到了 2018 年秋天。
那时,我工作内容还是画图,用 SW 绘制钣金结构之类的东西。那时的甲方是蓝思,我有段时间一个人被公司扔到湖南待了两个月。刚开始的一个星期,我几乎每天进厂 3到4次,每次七八小时,夜班白班都有。虽然没什么事做,但要穿全身防护服,别说手机了,连手表都不能带。就只能蹲在角落里冥想,一蹲就是一个通宵。因为上班时间不固定,那段日子日夜颠倒,我几乎失去了时间概念,每天就凌晨出去吃顿饭,不去工厂的日子就在酒店打游戏。前几天感觉还挺好的,就那样混了几天后就厌倦了。
第二个月,甲方就不怎么使用我们的设备了,我也不需要进厂,每天凌晨出门去吃个饭,剩下时间都在酒店。那段时间,我一度很迷茫,几天后,就下定决心转行做程序员。当时公司的产品是自动化检测设备,有不少桌面客户端的软件开发需求。我选择了学习 QT。没有人带我,没钱报班,也不知道怎么学,瞎琢磨。最后决定不想了,敲了再说。自己就照着《QT学习之路》开始一行一行手敲代码。
我几乎在酒店里昏天黑地地敲了半个月,敲完之后花 300 买了 feiyangqingyun 的那 23 个 Demo 项目接着敲。当时我完全不纠结逻辑和能不能看懂,只要代码能跑就行。那会就是纯硬敲,后来有个问题截图去群里问,别人说你这代码格式看的想吐我才知道,原来有个东西叫编程规范和自动格式化。敲了俩月后,我对语法和一些简单需求的实现方式就知道个七七八八了。从湖南回到公司后,我自告奋勇,主动接了一个小开发需求,需求简单,一周内就完成了。看到同事们用得还挺顺手,功能一切正常,给了我很大的信心。
每次想起最初开始学编程时的模样,真是满脑袋的懵逼和一堆不知道从哪里下手的迷茫。回头看,这几个月过得挺充实,也挺“揪心”的。每一项新技能的学习,都像是踩在荆棘上走路,痛并快乐着。用最简单的语言来总结的话,就是“一手好牌,打得七零八落”,每做一件事都好像要重新从零开始,但每当跨过一个坑,回头看时,才发现走了这么远。

学习 Go:从敲代码到实际应用
这次学习 Go,跟当初学 QT 时一样,我也没有多想,花了一天时间了解了一些背景知识,然后就选择了《Go by Example》开始敲。由于工作比较忙,学习进度有点慢,80多个文件敲了半个多月才敲完。敲完后,我就琢磨开始做一个小项目来练手。写了一个简单的项目 go-service-hub,集成了微信公众号的回复和登录,并将之前用 C++ 写的 易航阁 后端服务重新用 Go 实现了以下。虽然进度很慢,但不得不承认,Go 的开发效率比 C++ 高了好几倍。
选择 Go,其实也没啥复杂的理由。22年那会跟风学了俩月的 Rust 感觉没有用的地方就放弃了。刚开始接触 Go 的时候,觉得它的语法简单、清晰,没什么花里胡哨的东西。最关键的是,Go 的 goroutine 和 channel,那种轻松处理并发的方式,让我一度对编程产生了久违的兴趣。当然,我也意识到一个问题:Go 的优势在于高效,但如果不真正掌握其内存管理、性能优化等深层次的特性,开发起来也会有一堆“坑”在等着你。所以,虽然现在能快速搭建一个小项目,还是得一步步去了解更多细节,避免未来越来越复杂时踩到更大的雷。

最初学习后端开发时,我是想实现微信扫一扫功能。学完 Go 语法,注册好公众号,真正去实现时才发现,未认证的公众号是无法支持这个功能的。研究了半天文档后,我灵机一动,想到了一个奇葩的方案:通过输入验证码来完成登录。客户端发起登录请求到服务器,服务器生成验证码并返回给客户端。用户通过微信回复验证码,公众号会将消息转发到服务器,并附带一个 UID,利用这个 UID 完成用户绑定。每个微信号和每个公众号之间都有一个唯一的 UID,不过微信开发文档并没有这个 UID 的任何说明,我很关心它是否与时间相关,比如加密时跟当月的月份有关,如果真是这样,那我就完蛋了。

扫一扫功能实现后,我又尝试了数据库的增删改查。说实话,工作六年了,我几乎没用过数据库,如果让我写 SQL 最基本的指令都得去百度。我的工作大多是单机桌面客户端开发,数据库的应用大多是存储用户信息之类。我的 go-service-hub 目的是通过微信扫一扫实现多个项目的统一登录。一开始,我设计了数据库表结构,但后来感觉我这个用户量和访问量基本就是 1(也就是我自己),根本不需要这么复杂的设计,干脆直接存文件,数据库只记录下登录设备和微信用户信息,每个微信用户每个应用有一个独立的文件。
由于需要调试网站、本地客户端和微信公众号,我尝试了之前只听说过的远程开发。没想到 VSCode 对远程开发的支持已经这么强大了,虽然服务器性能一般,但远程开发的过程非常丝滑,连 Copilot 都能直接用本地服务。再加上 Go 自带的快速编译特性,整个开发体验简直爽到不行。用了几天之后,我觉得自己仿佛打开了新世界的大门。

最近,工作时我已经换上了自己的背景音乐播放器应用。这软件更适合两块屏幕,我用下来感觉良好。现在还处于早期版本,就只实现了个基本的登录和播放,在线更新和下载功能还没开始做。关于自定义视频、图片、音乐,存储分享白噪音组合、翻页时钟样式调整、声波柱状图等功能,现阶段还只存在于我的笔记本上。不过,我并不着急,毕竟我是要走长期主义路线。

未来的事暂时也不急。我还是保持原来的想法——一步步来,不抛弃不放弃。每次学到一个新知识点或者实现一个新功能时,我都会告诉自己:“这只是下一个步骤,走到这里就已经足够好,别急着追求完美。”沉下心去专注一件事时,反而能看到更远的地方。
技术与生活:编程的意义
我逐渐理解到,“程序员”这个身份,其实是一种不断“玩乐”中的过程。它并不单纯是为了“解决问题”或是“优化效率”,而更多是享受在代码中探索、实验、玩耍的过程。每当我写下一个功能,调试一个 bug,或者解决一个看似无解的挑战,那种“破解”的瞬间,带来的快乐远超你想象。
对于我来说,编程是一种乐趣,是用代码创造的游戏。不管是做一些小工具,还是尝试新的框架和语言,最重要的是在这个过程中能够发现乐趣,享受解决问题的过程,而不仅仅是看到“功能实现”或“上线”这两个终极目标。毕竟,编程最吸引人的地方,正是在这堆看似枯燥的代码里,能不断发现新的可能性,能不断创造出意料之外的东西。
所以说,我并不单纯为了最终实现一个完美的功能而写代码,而是享受在这过程中各种探索的乐趣。每一个小项目,每一次技术上的突破,都让我感到非常充实。我并没有“改变世界”的宏大梦想,但在我自己的世界里,我在不停地用代码玩乐、做实验,挑战自我,发现新的突破点。
未来,我依然会在这条充满探索和乐趣的路上,玩得开心,学得更深入。技术对我而言,既是工具,更是一个不断创新、不断突破自己的平台。通过每一个小小的项目、每一段有趣的代码,我会继续享受其中,去迎接更多意想不到的惊喜。
- 下载 : 关注微信公众号 【三十儿艺】,回复“666”即可获得下载链接
- 交流群 : 967640625