开发者的日常
作为一名996的开发者,我几乎每天只有两件事,制造bug和解决bug,这两件事,既替我解决了温饱问题、也替产品经理、测试工程师等一票人解决了吃穿问题。
嗯,有人为我这种程序员评了一个等级,我大概是第五等程序员。
但是。。。我是真的想写bug吗?。。。并不是。我也渴望能够编写更加优秀的代码,能够掌握更优秀的互联网技术框架、掌握更加优秀的开发方法,但是每天沉迷于搬砖之中不可自拔,哪怕每天认真阅读Robert大叔的《The Clean Code》,掌握好代码的速度也远远赶不上我写烂代码的速度。
(好吧,10个小时的写烂代码,却只有20分钟学习整洁代码。。。)
好吧,我的工作大概是这样的:
~溪源,你那个功能做完了吗?可以发布了么?
~可以发了,啥毛病都没有。
~那行,现在发吧。
~等下,我又发现了一个bug。
~那我等你五分钟。
~好的,只剩最后一个bug了,改完这个bug就可以发,就可以下班了。
-哎呀,卧槽,怎么天亮了。。
~你就不能做一个不写bug的程序员吗?
~对不起,我做不到啊。
~为毛啊。
~那天我去庙里上香,我虔诚的对菩萨说,菩萨,保佑我成为一个不写bug的程序员吧~
---然后我获得了永生。
以上内容纯属虚构,如有雷同,纯属巧合。
中国程序员的现状
中国的程序员大概是国内最苦逼的行业之一,每天996,下班还要回家学习各种新技术哪怕是BAT这样的大厂,优秀的开发者也不过是公司前进路上的一块砖石,无时无刻不面临着被牺牲的后果,如果未能在指定年龄之前,成为最拔尖的那一批人,那不管你多优秀,跟其他开发者没有任何区别。
“中年危机”,就像梦魇一般,既激发我们向前,更驱赶我们向鸭子一般,盲目的向前拼搏。或许我们可以逃出这座围城,但是围城之外却是留不住躁动心的舒适区。
无论如何,我们都得努力提高自己,先写更加优秀的代码,才能获得更多的机会,但是,bug却像魔咒一般。尤其是为了紧跟技术的步伐,我们会选择一些新技术,这就得迎接更加严酷的考验。
博客园翻车事件
例如,前不久,博客园就英勇而壮烈的翻车了。众所周知,博客园选择了一个构建在.NET平台之上的博客系统,而随着.NET Core的推出,博客园内部的许多系统也完成了从.NET FX到.NET Core的技术改造;而前不久,博客园也将博客系统升级到了.NET Core 3.0 Preview7,然后开始了挖坑、踩坑、填坑的过程。
前前后后,博客园进行了五次尝试,
【故障公告】发布 .NET Core 版博客站点引起大量 500 错误。
https://www.cnblogs.com/cmt/p/11302666.html
【网站公告】.NET Core 版博客站点第二次发布尝试。
https://www.cnblogs.com/cmt/p/11316324.html
暴风雨中的 online : .NET Core 版博客站点遭遇的高并发问题进展 。
https://www.cnblogs.com/cmt/p/11328141.html
Powered by .NET Core 进展:验证高并发性能问题嫌疑犯 docker swarm。
https://www.cnblogs.com/cmt/p/11335456.html
同“窗”的较量:部署在 Windows 上的 .NET Core 版博客站点发布上线。
https://www.cnblogs.com/cmt/p/11347507.html
Powered by .NET Core 进展:第5次发布尝试(Windows部署)。
https://www.cnblogs.com/cmt/p/11357365.html
问题也从最开始的Docker swarm切换到Docker Compose的组件故障,到后来的.NET Core本身的一些故障,期间从博客园团队发布的一些内容来看,也似乎陷入了扯毛线扯掉了一件毛线衣的怪圈,不过最终还是发现了问题的核心,是来源于DbContextPool的线程池限制。
https://www.cnblogs.com/cmt/p/11355978.html
将这个对象去掉之后,终于尘埃落定,取得了短暂的平静,当然,即便如此也无法证明已经真正解决了所有问题,下周是否会重现本周的局面?不得而知。
问题分析
博客园对于.NET的执着,让无数优秀的.NET开发者钦佩,但是这些翻车事故,我个人认为,暴露了博客园的一些现存问题。
1、使用还是处于预览版阶段的.NET Core Preview7,虽然已经属于go live,bug少不了,使用了非主流的容器编排技术Docker Swarm。
2、未充分对业务进行大规模的压测和AB测试。
3、将生产环境作为测试环境。
我也冒昧的提几点小建议:
1、将这次环境切换过程的珍贵过程复盘,形成系统的.NET Fx互联网应用升级改造典型案例,让其他互联网开发者能够从中获益。
2、将博客系统开源,让更多开发者参与其中来。
除此之外,也暴露了国内.NET技术圈存在的一些问题。
多如牛毛的学习资料,却显得不够系统,许多博客都是面向初级开发者,介绍的都是如何编写HelloWorld这样的知识。更高层次的开发者,往往只能借鉴于科学上网,从国外获取有用的学习资源。
由于国内基于.NET的互联网企业不多,使用容器技术构建互联网体系的更是少之又少,所以缺乏真正能够让企业快速借鉴的容器知识分享或社区交流氛围。
NET技术圈对于大并发的经验不足,对类似的技术缺少分享。
闭塞的行业应用范围是.NET技术圈的硬伤,与其他技术社区很容易针对技术点发生讨论相比,.NET技术圈依然过于安静,例如当出现问题时,往往大部分开发者都只能看热闹,想插手都无能为力。
总结
在这样的大背景下,博客园的勇气依然值得赞赏,毫无疑问,博客园的初衷是渴望通过这次新版本的发布,成功的将.NET Core的优秀宣传出来,让更多开发者能够亲历技术的变革、加入.NET Core的转型之中,不过过程中遇到了太多坎坷。
这恰好跟我们平时开发过程中经常遇到的问题或我们采取的解决问题的办法一模一样。
所以,不要妖魔化博客园,也不必神化博客园,在技术这条道路上,每个人都需要更加努力的学习,并不是为了面子、也不是为了成为第一,而是为了打造更加优秀而完美的产品。
限于时间仓促,胡言乱语,还请诸君见谅。