中年危机,又要开始刷算法啦

跟 D-Horse 同学通电话的时候聊了一些找工作的话题,加上我年纪也快到程序员年龄歧视线了,想趁着后悔之前再努力一把,于是我又开始刷算法了。

上一次是跟同事一起刷,他每天2道,我每天1道,结果人家去了外企,我放弃了。这就是差距吧= =

在我第一次知道程序公司大厂都是靠算法题筛选人才时,我是不服气的。因为当时我对把控一定规模的代码项目已经有了一些经验和感觉,算是刚刚看到了自己想要努力的方向。这时候突然有人说不我们要的不是这个,你方向有误,我是不太能接受的。而且常用容器的实现以外的算法在绝大多数程序员的工程项目中确实不是重要的能力,甚至算不上有用。尤其现在各个分支方向都有专业人士打理的现代,他们能封装出易用的接口,隐藏危险精密的核心算法部分,让善于组织工程项目的专家用来打造复杂的功能。这种各司其职的行业细分是进步的表现。就像我如果应聘混凝土调配师,你考我化学天经地义,可我是建筑设计师,知道想要什么强度什么特性时使用哪种材料就行了,完全没必要知道其中每种原料的具体提炼混合放置搅拌的细节吧。在这一点上我始终坚持我的观点:重度的算法和数学训练对非相关领域的工程师来说是非必须的。以前常有人说算法和数学是程序员的核心技能,这种自我陶醉的话说给懂行的人听听也就一笑而过了知道你在撒娇,可当年我初入行的时候总看到这种无法理解却又无人反驳的观点时,真的是非常的动摇,可以说影响极其恶劣。

现在对面试需要刷题这件事,我已经可以接受了。就像高考一样,我为了高考而学的除了英语以外的所有技能对高考后的人生都是无用的,但为了进大学,我还是接受了这个条件。高考是挑选强者,那我就跨过你设下的障碍成为强者,之后再回过头来评价高考岂不是更有底气?就像以前中国西化的时候,去国外学习先进技术回国建立新式学校的人,也是国内写八股文靠科举考出来的。这本就是选拔者嫌麻烦设置的一道障碍,妄想用来跨过障碍的努力能对自己的人生有什么帮助是没有必要的,它仅仅只是为了跨过这个障碍。如果你想跨过去,它能帮你跨过去,那就够了。这段努力的过程对你没有意义(有的话当然更好),结果才有。

Comments

  1. 我也曾尝试过去刷leetcode,但每次都没坚持过一天…我在德国也算面试过几十家IT公司了,但被问到算法的印象中就一个,不过我面的都不是谷歌亚马逊苹果之类的大厂(投都不敢投),也不是什么高端岗位,可能数据不能让人信服。每次面试基本上项目经历是必问的,然后像我面试Java程序员职位,会被问到一些基础问题,比如原型、map,set,list之类的数据结构、接口和抽象类,还有一些框架问题比如Spring,最多再问下数据库的一些知识,一半几率会被要求现场编程(上机或在白纸上写)。Leetcode上的成绩如果比较好写在简历上确实比较漂亮吧(但是我有github可能也不差?),而且对面试算法相关岗位确实有帮助,就像kaggle之于数据科学家,是个能直接证明自己有相关能力的方法。
    如果你确定你想去的那家公司会考leetcode上的题,那去有针对性的刷一下确实有必要(好像可以买高级会员看内部题库?),否则感觉意义不大,别给自己太大压力。
    但我最近倒是越来越觉得数学挺重要其实也挺有意思的。黑五亚马逊二手书打折买了两本讲游戏引擎基础的书(主要是想借机把C++捡起来),基本上都是在讲数学。不过当作业余兴趣来随便读读和当作必须跨越的障碍来深入研究肯定是两种不同的心情啦。
    至于中年危机,在很大程度上来说还是由程序员这个职业带来的吧。教师、律师、医生这类靠经验和人脉吃饭的职业多半就没什么中年危机,而程序员基本都靠脑力输出,随着年龄增长,超过一定岁数,智力和体力都会逐渐退化,在职场中必然不再具有优势,所以我一直觉得要找一条当程序员以外的路才是正解…

    1. leetcode 刚开始刷的时候最抵触最难受,我是花了好长时间调整心态才做进去的。
      日本的企业也极少有考算法的,一般都是看经验和过往项目之类。我应届的时候找游戏公司也就capcom考了几道3D场景的计算题,算是考验你有没有3D编程经验吧,没考算法。其他公司都没有这类笔试,或者考的非常常识性。
      白纸编程我想想都觉得很恐怖。我已经不能适应没有代码自动补全的开发方式了。之后得专门练练这个。
      数学看学到多深了。3D游戏开发的话,矩阵运算什么的也会用到。如果做图形学相关工作,对数学的要求会更高,他们工作中用到的算法都是出自论文了。作为业余爱好的话,我倒是挺喜欢看数学物理之类科学方面的视频啊文章什么的,反正学不会看个热闹也挺开心的。
      日本对老程序员似乎没有国内那么排挤。年纪大了也许找不到正式员工的合同,但是日本的个人事业主程序员的工资更高,我都有点心动想正社员转个人事业主了。不过正社员社保养老金交税什么的比较省事,对怕麻烦的我来说还是很有吸引力的。反正我两边都可以。
      程序员这行我是真的喜欢,也真的非常擅长了。以后如果不遇到大的变故,我应该会一路做程序员做到退休的。不过找条副业技能树培养一下我也挺感兴趣的。现在我愿意花时间培养的技能只有画画,和写故事如果有机会我也挺想学的,只是基础太差不知道有没有这个机会了。另外我觉得给别人解释技术细节很开心,所以IT培训讲师也不错。这个要练一下我把现在碎片化的知识点组织成体系记住和传达出去的能力,可以做视频配ppt练练。

    2. 也刷过leetcode,一般是兴致来了刷几天,一周就放弃。所以刷来刷去总是那几道题,没成气候。
      后来因为工作刷了一阵人工智能算法相关的,算是最有耐心的一段时间了,约莫有50道题,身心俱疲。
      之前有面试一些新加坡迪拜之类公司的,约莫70%公司会问一点基础的数据结构,环链表hashmap之类,人工智能也就问问最简单的线性递归和梯度下降,没有了。感觉刷的投资不划算。
      当然我面的大多也是中小企业,名牌没敢投,英文不过关是硬伤。
      我和DHorse看法一致,不打算全职程序了,不仅仅是身体退化,而是新东西实在太多了,很多东西感觉都是学个皮毛就调去做其他的,等过一段再回来自己研究的时候又出了新框架新机制,感觉拼不起。
      吾生有涯,而技海无涯。虽说进一分有一分的欢喜,却是竞争不起。
      虽然很喜欢程序,但不想以之为职业了。说不定,只有闲暇下来才能做出FACEBOOK,MINECRAFT呢。
      总之,我想转行了,希望程序成为我的兴趣。

  2. 我一直觉得强如你已经不需要靠算法过面试了,拍一个github的链接过去就行了吧。别人业务不知道你的强,但我是深刻体会过,只有今晚是deadline,啥也能解决。加油!
    ps:好久不点进来看,才发现你换了新模板,挺清爽的,不错。

    1. 其实我这个水平在市面上并不十分出众,还是得靠刷一些算法来给面试官一些好感的。
      我的github… 那真是光秃秃啊 T-T 。尤其这两年基本没什么动静。我做的很多个人项目都是热情在 1.0 版完成之前就耗尽了,所以最终从私有状态公开出来的项目基本没有。相比之下,现在20出头的有为程序员的github看得让人激动又惭愧。比起和他们竞争,我更想和他们交朋友,一起聊聊天。
      我也很喜欢这个模版!就是换了之后每次评论提交后都会进入一个错误页面,有点尴尬。。

回复 freeknight 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注