主要是对最近在公司招聘过程中,和面试者进行一番沟通交流之后的一点自我感想。
0. 总结
为了节省各位看官的时间,在经过一番斟酌后,将原本打算放在最后的总结挪到最开始的位置。
公司对人才要求是没有上限的,我们当然喜欢同事的能力越强越好,可以有讨教的机会。
个人希望公司的架构师能够拥有大量的各类项目和技术经验 + 扎实的基本功 + 拥有自己的想法和思维方式 + 广泛的技术涉猎 + 对行业饱满的热情 + 旺盛的求知欲。
勤于思考,善于思考,乐于思考,并且已经坚持了很长时间的人,加上优秀的个人品质,这才我所钟意的和最为认可的,这也是我非常希望能与之共事的同事和相处的朋友。
1. 前提
首先我需要对本文产生的背景做一下简单的交代。
本人所在的公司,之前的人员面试都只是偶尔一两个,加之平时开发任务比较多,事后又回忆不起过多的细节,所以相关的总结很少。
而最近这两周突然面试的需求有了相当明显的增加,也就借机总结了下从公司需求到行业相关的一点粗浅理解。
再次强调本人无意说教,只是一点个人看法。所在的公司部门也是传统的业务开发,面向政府机关,技术方面以求稳为主,没有那么激进的技术更新欲望。
2. 一般招聘要求
在开始阐述自己的想法前,我们先列举下一般情况下公司看重的面试者素养。
- 第一看重的当然就是年限。毕竟时间长了,没见过猪肉也见过猪跑。很多问题见过之后,下次就直接靠经验解决了。
- 然后就是行业经验。这一点也是公司非常看中的,毕竟软件最终是要解决问题,而问题都是需要在特定的上下文环境下,这个上下文环境又十有八九都与行业有关。
- 其它的就是诸如最高学历,稳定性,发展方向,是否能适应公司文化等等。
以上几点,尤其是前两点是容易量化的,所以也是相当为公司HR所钟爱。
3. 个人理解
如果只为讨论上面这几点,那么本文就没有多大存在的必要了。所以在本文接下来的内容里,我将重点表述下鄙人在面试中所看中的品质,仅为一家之言。
3.1 拥有扎实的基本素养
这是必须具备的,不论你面试的职位高低。因为这也不是必须得在大公司或者科班出生才能拥有的;只要真正热爱这个行业的人,就一定会拥有这项素质,而反过来,缺乏这项素质的,很难让人相信他对这个行业的热情。任何时候,任何行业,大家都希望同事对所从事的事情充满热情,毕竟情绪是会传染的。
而且这类素养,对它的培养没有终点,只要在这个行业里一天,你就不能停下来对其的追求。它是决定你所能达到的最终高度的关键性一环。地基不稳的房子注定建不了多高,也无法长久。
我见过不少人,即使是最基础的访问修饰符用得叫一个随心所欲,看得人无比无语。
发现不少都号称爱好技术的,底层不研究,却又说对新技术很有兴趣嘛,却都是一堆Demo制造者,复制两个官网或者他人博客里的Demo就算“有所了解”了?
3.2 了解基本工具集
Java发展到现在,成功的最大源泉毫无疑问正是其活跃的社区。也因此诞生了一大堆久经考验,志在消除重复性代码,简化开发工作的工具集,例如Apache的lang3,Google的Guava等等;除此之外还有国内的,例如码云上的明星项目hutool等等都能帮助我们规范和统一化项目中的代码。
干了两三年,甚至四五年之后,在心中没有一套开源工具集的清单,这实在是有点说不过去。
像上面提到的工具集,你说你可以很快学会,但是你根本不知道里面有什么,你会用到吗?而且好几年经验了都没碰过,打算啥时候用? 或者说没有外力的逼迫,很难让人相信你会去学。
3.3 拥有解决未知问题的能力
对于高级研发或者架构师的话,这种能力才是最需要的,这也是最体现价值的地方了。
来应聘高级职位的开发人员,基本能够胜任公司一般项目的技术要求,搭个项目框架也是没啥问题,毕竟基本框架就那么几个,都发展了几十年了,用的人也多,按照问题的二八原则和公司的业务范围,所要求的基本技术要求和可能碰到的问题,基本在工作年限内就能涵盖其中的八成,如果仅仅是这类问题,三年经验和十年经验并没有多大的区别。
我们不希望招聘来的高级别开发人员的问题解决都是从搜索引擎来的,虽然这也是解决问题的能力之一。在遇到问题的第一反映就是百度,这个是初级开发人员才应该有的反映。“面向百度编程,解决问题的速度取决于网速。”这句话虽然是一句戏言,但在一般的小公司还真是很应景。
这并不是阻止你使用搜索引擎,而是作为高级人才,你应该有着一套自己的解决问题套路,在碰到问题时,能够带着清晰的思路去探究,有着自己的思考和总结,最终有所积累和触类旁通。
3.4 有自己独到的见解
这一点是最重要的,也算是最高要求了。就是希望应聘者对技术有着自己的理解。
作为想得到更高认可的技术人员,你应该有自己的思路。例如对于一个问题的解决方案,如果你的大脑里出的解决方案只有一个,那它并不是你的选择,只有一个选项的并不是选择题,我们希望的是你能在多个选项(对它们都有所了解,并且对其中一两个有深入的自我理解)里,按照当时的情景(业务场景以及技术背景),深入考虑之后抉择出在当时看来最合适的技术选型。不要离开了Spring连代码都不知道怎么写了,除了Spring脑子里没有别的选择项。
3.5 架构能力
在这一点上,我自己没有话语权,这里仅仅谈下一点个人粗浅的感悟。
基于现有的框架的非常简陋的二次封装(例如就是隐藏掉一些细节,提供几个工具方法),个人认为这也就勉强算的上封装,和架构毫无关系。架构能力至少得是从零设计并写出一个适应性强较强框架的能力,这才能配得上架构师。
4. 补充
如果你宣称自己是搞技术的,而且自认为发展方向也是技术。那么请稍微留意下下面这句话:“人都有自己选择的自由,但同时也需要尊重自己的选择;自己选的路,还是需要靠自己扎扎实实地走完”。
不是在这行业里呆的时间长了莫名其妙地就成高级研发或架构师了。几年甚至十几年的积累全部来自上班期间,很难让人相信你是希望搞技术的。
如果你思考问题的时间仅仅限于工作时间内,那么势必你会落后于其他业余时间依然不放弃思考和学习的人,而且随着时间的推移这种差距会越来越大,这就是所谓的工作年限并不等于能力。两年经验干死十年的例子,并不罕见。
最后,所有称得上人类美德的事物,只有通过不断的学习,反思,经受住这个过程中三观的冲击,痛苦的挣扎之后才能获得。