注:本文发布于2023年2月6日 最近硅谷几大公司都在裁员,看了些报道,被裁的员工真是不好过。损失经济来源不说,有些人还面临身份问题,这可真是屋漏偏逢连夜雨。 我也留意到,不少被裁的人会不停追问自己:为什么我会遇到这样的事情?为什么这样的不幸会降临到我头上?…… 实话说,我挺能理解这种态度。这挫折如此巨大,似乎又来得全无预兆,不由得让人对命运、对人生、对世界产生深重的怀疑。尤其是对已经走入社会,取得一定成就(如果非要抠字眼,那就用“进展”吧)的人来说,更是如此。 但是我更想说,如果被裁员了,当务之急是赶紧找到下一份工作,哪怕只是机械地行动。要知道,成年人找工作,容不下那么多愁善感。 我之所以这么说,是有切身经历为基础的。之前我讲过找德国工作的经历。最开始是信心十足的,因为虽然毕业多年,手艺没丢,基础还在,随时打开leetcode,中等难度题目基本都不在话下,不但能解对,解法也基本接近最优。既然网上都说“刷题就能找到工作”,估计自己应该没大问题。 没想到真的找起工作来,仍然充满了意想不到的挫折。如果不相信,我且举几个例子吧。 (more…)
最近的一条热点新闻是“‘北斗’导航掉线,大货车司机自杀身亡”。据报道,当地政府已经成立了专门调查组调查此事,并发布了初步的报告,许多媒体也在跟进,相信真相不久就会水落石出。 略去事件本身的是非曲直不谈,“‘北斗’掉线”也引起了许多讨论。毕竟,按照之前的报道,“北斗”作为我国拥有自主知识产权的导航系统,是国之重器,稳定可靠。如果竟然在大货车轨迹记录这么简单的场景中都会出问题“掉线”,实在不能不让人心生疑惑。 坦白说,我没接触过大货车上的“北斗”导航仪,也不了解技术细节。但是凭借我在IT行业工作的经验,还是可以做出一般性判断的:“北斗”不可能掉线,也不应该掉线。或者说,“掉线”与北斗无关。 (more…)
按:2018年,一个偶然的机会,我以审校者的身份,参与到蒋楠先生翻译的《计算机简史》的过程当中来,并在这个过程中获益良多。今天这本书终于上市了,这是我的推荐序。 我始终认为,有一些课程是计算机专业本科应当认真教,却很遗憾没有做好的,比如软件工程,再比如今天我要说的计算机简史。 (more…)
前段时间,遇到朋友的求助,说以前运行的好好的系统现在出问题了,而且看不懂报错到底是什么意思。 我仔细看看报错信息,应该是MySQL数据库报出来的,大意是说:collation不兼容,一个是 utf8mb4_0900_ai_ci,另一个是utf8mb4_general_ci。 utf8mb4_general_ci这玩意儿我见过,是针对utf8mb4编码的collation,但是utf8mb4_0900_ai_ci是啥,我也没见过。 于是我问他,这玩意儿从哪里出来的? 他说:“我也不知道,我完全没见过啊。再说,我数据库编码已经是utf8mb4了,怎么还会有这么多名堂?” 看他着急又不知所措的样子,我便花了点时间来研究,还真学到点新知识。而且我也发现,有许多程序员天真的以为“用了UTF8就等于做了国际化了,不用再担心编码问题”。看来,这个话题还真值得多讲讲。 (more…)
“软件工程”是个老话题了,我以前写过一篇文章《名不副实的“软件工程”》,当时还引起了不小的争议。回头看,当时更多的思考还是在“软件工程”本身。我们完全可以把讨论的范围扩得更大一些:“软件工程”和“工程”有关吗?如果有,到底有多大的关系?(这里的“软件”泛指IT的各种开发,不存在“软件”和“互联网”的分别。) 不要以为这些问题很好回答。在大学里,“计算机/软件开发”专业到底属于理科还是工科?似乎一直没有明确答案。到了社会上,一说起“计算机/软件”,很多人都觉得它既不同于文科,也不同于传统的“工程”(硬件)。 那么,“软件工程师”和“程序员”究竟有什么区别?似乎一直也没有人说清楚,只是名称不一样。就我所知,不少搞软件开发的人认为,软件是全新的领域,应当有全新的知识体系和工作范式,所以学校教育根本没啥用。甚至,有些人在内心看不上传统的工程人员,认为那都是“夕阳行业”的过时经验。 “软件工程”真的有这么特殊,可以大喊“我们不一样”吗?中国历史上有过“白马非马”的辩论,“软件工程”和“工程”之间也是这种关系吗? 下面结合软件工程,讲几个“传统”工程的故事。如果你也好奇“软件工程”和“工程”的关系,相信可以得到启发。 (more…)
因为工作的关系,最近面试了很多软件架构师,遗憾的是真正能录用的很少。很多候选人有多年的工作经验,常见的框架也玩得很溜。然而最擅长的是“用既定的技术方案去解决特定的问题”,如果遇到的问题没有严格对应的现成框架,就比较吃力。这样的技能水平或许适合某些行业,但很遗憾不符合我们的要求。 软件架构师到底应该做什么,又为什么这么难做好,这都是近来的热门问题,我也一直在和朋友们讨论。正巧,最近我看完了新鲜出炉的《微服务设计》,所以大概可以谈谈自己的看法了。因为这类问题比较抽象,也没有统一答案,我努力尝试把思路整理清楚,把表达变得流畅。最终有没有讲清楚,说的对不对,欢迎大家给我留言。 (more…)
“全站HTTPs”俨然成了目前的热门话题,很多网站都在摩拳擦掌要实行全站HTTPs。凑巧,我们(沪江)也在推行这个计划。 一开始大家想得都很简单,把证书购买了、配好了,相应的路径改一改,就没有问题。事实也确实如此,单个独立站点的HTTPs改造是很容易的。一旦走向“全站”,才发现事情远远比想象的要复杂,全站意味着所有资源面对所有客户端,涉及的因素异常多,网络上又没有太多资料,只能自己摸索。下面我简单讲讲遇到的几个问题,提供一些经验给大家参考。 (more…)
按:本文的很多观点来自与七牛云存储首席架构师道哥(李道兵)的讨论,在这里对道哥表示感谢。 高校的计算机教育与时代脱节,这已经成为大家的共识。如果要问哪些课程脱节最严重,我的答案是“软件工程”。其他的课程虽然也有脱节,但多少有点用处:编程语言虽然不教怎么把程序写漂亮,至少教了语法;网络课程虽然没有形象直观的展示,毕竟通讯协议还在使用;数据库课程不讲数据库的安装和调优,关系代数理论仍然是不少问题的原型;数据结构与算法即便看起来与开发没有直接关联,有了概念总不会吃亏…… 只有软件工程,是例外。顾名思义,“软件工程”讲的应当是把软件开发出来的学问。所以,它是名不副实的:如果你按照“软件工程”教的去做,多半开发不出来软件,至少开发不出好的软件。一方面大量毕业生不会写程序、写不出好程序,另一方面合格的“软件工程师”奇缺,对这种怪异的景象,名不副实的“软件工程”功不可没。 (more…)