草庐IT

我的十年编程路 2021年篇

萧文翰 2024-01-17 原文

慢慢地,时光走过了8个年头,来到2021年。

站在2021年,回望8年的过往,没有大的起伏和波澜。或许是上天的眷顾,我的事业发展一直都很顺利。当然,弯路也走过一些,而且工作其实挺辗转的,如果看过我前几年的文章就会知道。但这都没关系,我的Plan B,也就是写作,提供了能力和经济上的支撑。甚至,现在,我已经分不清工作和写作,到底哪个是Plan B了。

2020年底,我又再一次处于失业状态,但这一次我并没有急着找工作,甚至还拒绝了一些面试邀请。因为那个时候我在写《深入浅出Android Jetpack》,一本关于Android开发的书。

进入2021年之后,一个偶然的机会,我去面试。整个面试过程非常轻松,结果就轻松地入职了。想来因为是创业公司,刚开始比较缺人,才这么轻松。当然,更大的原因,应该是我的能力还不错。

入职的日期是1月8日,也就是一开年,我就又上班了。这是荣科旗下的创业公司,荣科本身是家历史悠久的上市公司,作为创业公司的我们,处于起步阶段,做的是互联网医疗业务,主要涉及App、网页前端、微信公众号和小程序。刚开始写代码的只有技术总监和我两个人,他是个酷爱编程的工作狂,前端后端都能做。不过从我的角度看,他应该是更擅长后端,于是我一直搞所有的前端。也正是有这段经历,让我有了前端开发的经验,快速地上手了Vue前端框架,什么Element UI、有赞UI等框架都玩了一圈,还集成了老相识——即时消息IM,只不过这一次的提供商不再是容联了。

从客户端上手前端的我,感受就是前端页面写起来比客户端效率高多了。再加上蓝湖这种可以自动生成样式代码的工具,效率实在是不知道翻了多少翻。

工作效率的提升带来的就是工作时间的缩短。我记得当时我有一段时间就是只花半天时间编码,半天时间创作自己的书,基本上每天都是准点下班。到了天暖的时候,还会选择骑共享单车回家。后来经同事介绍,我尝试了共享电单车,发现确实省劲很多,于是后来就一直骑共享电单车。

从冬末春初,到夏末秋初,我一直任职在这家公司。在这期间,我收获了前端开发技能。同时,我辛勤耕耘的写作也开始产生那种有温度的收益。

某一天,有位读者添加我的微信,他应该是大学的老师,是《Flutter从0基础到App上线》那本书的读者。据他说,他完全靠我的书,完成了两周的高校技术实训。我在知乎上的文章也受到了首次赞赏,金额是2块钱。其实,那本Flutter的书,签的不是版税合同,销量多少和我其实没有关系,2块钱的赞赏其实也不多。但这都是对我非常大的鼓舞,我知道有人在阅读我写的内容,甚至还把这些内容当作教材教授给年轻的一代。这就让我更有动力、有使命感,也更加感动。从另一个方面讲,一个人孤单地做内容产出,其实真的很孤单,很累。我记得在没有入职之前,我从早上起床后就开始写,一直写到晚上,除了中午吃饭的时间,差不多10多个小时。结束之后,真的是连话都说不出一句完整的来,似乎在那个时刻,语言能力都丧失了几成。写书,有收入是必然的,但读者的互动,则是更加有温度的,也就更能激励我创作更多有价值的内容。再辛苦一点,也不觉得有什么。

技术方面,受前端开发体验的影响和华为鸿蒙操作系统的火热,我跑到iLearning平台,取到了HCIA鸿蒙应用开发工程师在线课程的认证。后来得知这个认证似乎没有什么含金量,不过聊胜于无吧,也算是对鸿蒙App开发有个初步的了解。

后来,忘了基于什么理由,收到了CSDN CTO俱乐部的《程序员增刊》。还先后收到两次,就记得收快递的时候感觉沉甸甸的,我都不知道是什么东西,拆开之后还蛮惊喜的。

另外,我又忘了是基于什么理由,收到了掘金平台的首个纪念品:一个杯子。说是杯子,其实就是大茶缸子,我这么说,大概就能有画面感了。至少我国北方的朋友应该都能想象得到,就是那种金属的圆柱形,然后镀上一层漆。比如那种影视剧里特别常见的,军绿色漆,也有白色漆的,然后上面印个主席头像,下面写“为人民服务”的那种杯子。只不过我收到的是白色的油漆,上面写的好像是“码上掘金”还是啥的。这种杯子特别实在,特点就是能盛的水多。

大概在下半年开始,我突然决定要考个PMP。想到自己年过30,考个PMP以备转型管理使用。奈何当时疫情很严重,本来年底就能去考的,硬是拖到了2022年的夏天。算下来,将近一年的战线。

同样是在2021下半年,我所在的公司撑不住了,这次的原因是现金流断了。不过这家公司的做法还是挺仗义的,给了赔偿金。虽然没有在三星那样丰厚,但能按规定给付赔偿金的公司,特别是对于已经快发不出工资的公司来说,已经很不容易了。算下来,到目前为止,我已经拿过三次赔偿金了。一次是三星天津给了一笔赔偿金+安家费,另一次是三星广州给了一笔赔偿金,再就是这一次公司倒闭给了一笔赔偿金。以至于后来我12月入职的时候,公司问我为什么离职,如果我如实说,我都会担心公司会不相信我的经历。

离职之后,我开始通过人脉关系,和两位前辈一起,创作《Go语言从入门到项目实战》一书。我负责基础部分、PPT和视频讲义,还有一些杂活,比如创建读者QQ群之类的。也正是在这次创作中,我学到一句话:“一为约束,万事不入”。我认为这是一种真正的取舍,决定做一件事,就意味着放弃另一件或一些事,都想要做是贪。这个世界就是这样,想得到很容易,难的是放弃。确实有时候会陷入两难,觉得两件事情,都舍不得放弃,又找不到一种两全的方法。但现实就是这样,总是会放弃一件事,然后去努力成就另一件事。当然,最坏的结果就是该放弃的放弃了,不该放弃的也没做成。不过,放在当时做选择的那个时刻,又如何得知最终的结果呢?所以,不如就过好当下。正所谓不念过去,不畏将来。

紧接着又是一段有趣的经历,年底面试的时候,给我面试的人是拿着我的书来的,所以结果也没问什么技术问题。这样的经历让我更加明确了写作对我来说是必须要做的事情,甚至是现在,在我写这些回忆录文章的时候,我的面试邀请明显增多了。所以,写作,特别是在这个时代,是非常重要的一项能力。当然,类似的还有短视频等等。总之,就是那些表达自己、体现能力的非常好的方式,都值得耕耘。

于是,毫无悬念,我入职了我现在这家公司,时间是12月6日,做测试开发,现在又做管理,管理算我在内5个人的小团队。

2021年,也是我成家后的第三年。11月15日,是我们当年在天津领结婚证的日子,一转眼就过去三年。那一天,我发了一条朋友圈,写道:“你是年少的喜欢 也是余生的甜蜜”。配的图是来自里尔克的《给青年诗人的信》的摘录:“我一向认为两个人相处,这是他们的最高职责:保护对方的孤独”。确实是这样,回首婚后的三年,正是有老婆照顾我的饮食起居,我才能心无旁骛地做我喜欢的事,她用实际行动保护了属于我的那份“孤独”,我真的很感谢她。也正是这个原因,我包揽了家里的几乎一切家务,还有每天遛狗。因为我也同样不希望这些琐事耗费她太多的时间,我也很想保护属于她的那份“孤独”。另外就是,因为我们本身是南北两地的结合,再加上婚礼在不同的国家、城市办了规模不同的三次,所以纪念日就显得特别多。我觉得自己还算是那种“会来事儿”的人,几乎是每到这些日子,我都会给她一些惊喜。

好了,毕竟是说事业的故事,家庭的事就回头再细聊吧。

也许是时间久了,感情深了。我家的小车服役了6年,在一次做保养的路上,电瓶做了它一生最后一件事:把车和我送到保养目的地。等我把钥匙交给修车师傅之后,车子就再也无法启动了。所以,2021年的劳模奖,毫无疑问地要颁给电瓶,它称职、可靠地完成了它的使命。

不知不觉,忙碌、充实的2021又要过去了。在这篇文章的最后,我再一次引用我在朋友圈中引用过的一段话,这段话我已经找不到出处了,但它确实激励着我不停下前进的脚步。我愿意分享这段话,与正在看这篇文章的你共勉:

“我和各位分享的第一个自我突破,是朝着自我真正热爱的那个方向,建立你的约束,自我管理不容易,那就和那些眼前的人、心上的人立约,这个丰盈的果实是属于自己的。我现在的心情就像农夫收完了一片庄稼,至于是不是“草盛豆苗稀”,我还不知道,但我觉得明年会比今年好些。我的时间宝贵,各位的时间也宝贵,从理智出发,没有道理不去努力做得更好些。”

有关我的十年编程路 2021年篇的更多相关文章

  1. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  2. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  3. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  4. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  5. ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure' - 2

    我正在开发我的第一个Rubygem,并捆绑了cucumber、rspec和shoulda-matches进行测试。当我运行rspec时,出现以下错误:/app/my_gem/spec/spec_helper.rb:6:in`':undefinedmethod`configure'forShoulda::Matchers:Module(NoMethodError)这是我的gem规范:#my_gem.gemspec...Gem::Specification.newdo|spec|......spec.add_development_dependency"activemodel"spec.a

  6. ruby-on-rails - Heroku 吃掉了我的自定义 HTTP header - 2

    我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份​​验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby​​脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby-on-rails - rspec - 我怎样才能让 "pendings"有我的文本而不仅仅是 "No reason given" - 2

    我有这个代码:context"Visitingtheusers#indexpage."dobefore(:each){visitusers_path}subject{page}pending('iii'){shouldhave_no_css('table#users')}pending{shouldhavecontent('Youhavereachedthispageduetoapermissionic错误')}它会导致几个待处理,例如ManagingUsersGivenapractitionerloggedin.Visitingtheusers#indexpage.#Noreason

  9. ruby - 为什么 return 关键字会导致我的 'if block' 出现问题? - 2

    下面的代码工作正常:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson)do|key,oldv,newv|ifkey==:aoldvelsifkey==:bnewvelsekeyendendputskerson.inspect但是如果我在“ifblock”中添加return,我会得到一个错误:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson

  10. ruby-on-rails - 为什么用户必须输入 7 位数的 Twitter PIN 才能授予我的应用程序访问权限? - 2

    我正在为我的用户实现一些ruby​​onrails代码推特内容。我正在创建正确的oauth链接...类似http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv但在我的测试帐户授予对twitter的访问权限后,它会弹出一个页面,上面写着“您已成功授予对.我不知道用户应该在哪里输入此PIN以及他们为什么必须这样做。我认为这不是必要的步骤。Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?更新我找到了thisarticle声明我需

随机推荐