恍惚间,发现自己在这个行业里已经摸爬滚打了五年了,但是今年在换工作的过程中却遭到了重大的挫折,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,详细过程我就不再叙述。在此,只想给大家说一说被拒绝的原因,看看大家有没有相似的经历,和类似的感悟。
面试官对我的答复大致是这样的,我们不需要熟练工,我们需要在某领域拥有超过常人的积累认知,和拥有整套完整思维模式和优秀认知事物能力的人…他很诚恳地告诉我,你还年轻,真的应该好好地静下心来,深入地研究一些东西,自己写一些东西,而不是这也用过,那也知道,但是多半都是局限于仅仅见过,会用,却从来没有认真思考过其代码背后蕴含的思想,更少有人研究过源码,进而体会大师们在某些问题的解决上秉承的思想和思维的风格。
个人感觉,这也算是国内大部分程序员最让人悲哀的地方了,当然这也与外界浮躁氛围的蔓延不无关系。不了解这一行的人总觉得程序员都是代码民工,如果自己也认为自己是敲代码的机器的话,我诚恳地建议您尽早转行吧,也许我这么说会得罪伤害一些同行,毕竟转行对任何一个人来说都是有相当的风险和挑战的。
不过这绝对应该是善意的忠告。相反,我强烈地认为,程序员应该是最有活力和最有思想的一个群体,只要你不肯让自己浮于表面,更重要的是,必须勤于思考。如果你认可我这句的话,就请您继续往下看看我的感慨,否则,那就希望您好好利用好自己的时间做您最需要做的事吧。
由于面试中被问到Spring,MyBatis的时候,让面试官问得人仰马翻,哑口无言,所以回来之后洗心革面,下决心要把Spring,MyBatis好好研究个明白,再也无法容忍自己只知其一不知其二了。
清醒的认识自己
我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕。
当年纪越来越大后,我开始变得不能加班。我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样,她们仍是抱怨)。我在本地教育委员会社区里提供一些帮助,还组织开源兴趣小组参加活动。
我在思考,为什么以前会把如此多的时间全部用在编程上。大量的编程。那是我渴望深入研究一个类库,一个框架或一门技术。
现在的技术的学习曲线的增加,让我的忍耐性越来越低。各种新技术,因为新奇让人兴奋,但最终变成一场场争论。我越来越无法忍受这些充满市场宣传气息的喧嚣。我对技术看重的是稳定,清晰。
据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万。而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。
那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级工程师或架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。
为了帮助初学者少走弯路,我总结出一个Java程序员的工作1-3年成长路线图。
需要上面资料的伙伴可以在评论区给我说,也可以直接加我的Java技术群:3907814 ,自己浏览。
在过去几年中,政府和社会一直在努力使“Geek”再次酷起来。总统和总理提倡计算机程序设计成为学校课程的一部分。今天,除了政治,成为一个合格的程序员比以往任何时候都更具挑战性。只是一个内向的天才不再合格。
公司和组织正在寻找有认知能力的人来增加他们的技术能力。这很难用数字表示,因为它非常依赖于公司,但可以在这里应用70/30规则。意即人们应该拥有大约70%的技术技能和30%的软(认知)技能。
如果他/她缺乏所需的软技能,那么“硬核”开发人员几乎进不了管理阶段。我曾跨越多个垂直领域管理过许多团队,开发了一些被若干世界上最大的公司所使用的职位描述和职业发展路径。让我们总结一下在公司招聘或晋升时,看上去有点像模式的几个方面。
技术能力
嗯,这是一件明摆着的事;技术技能才能让你得到面试机会。当招聘一个Java开发人员时,公司会考虑若干因素。
基础
对Java编程语言基础的理解。
知道如何编写代码是很好的,但是知道代码背后的推理和/或所选择的算法将使你从人群中脱颖而出。
主流编程工具
今天,事实是,你不能成为一个样样都懂的人(杂而不精)。你必须选择你要掌握的工具。有时这是由工作的环境决定的,但是按照下面说的去做也是一个很好的选择:
构建工具:Maven或Gradle。SCM:Git(不是GitHub。大不相同)。构建自动化:Jenkins。IDE:Netbeans或Eclipse——不仅用于编写代码,而且还从IDE中重构和调试代码。我遇到了很多没有如何从他们最喜欢的IDE调试的开发人员。Bug跟踪:Bugzilla或Jira。
主流编程框架
Spring MVC用于Web开发JSF的知识
应用程序服务器
所有Java开发人员应该知道如何在Apache Tomcat中部署。当Glassfish开发停止时,下一个最好的事情是JBoss WildFly。
云开发
在Amazon EC或PaaS上获取免费帐户。Amazon的另一个选择是Red Hat OpenShift。
认知技能
对Java编程语言和各种工具有深入的了解自然是一件好事,但你的雇主/客户也会从以下方面对你进行评估。
沟通
沟通是我们做好一切事情的关键。我们必须与我们周围的环境互动,无论是在我们的私人还是职业生活中。这不仅仅是把字词放到一起的能力,也包括如何沟通我们面临的问题,或者提出这些问题的解决方案。一个伟大的沟通者知道如何在各种团体前面表达自己;记住,对你来说显而易见的东西,从让他人的角度来看可能并非如此。
问题解决
开发人员是问题解决者,也是哲学家和思想家。不要做那种只会写代码,不参与讨论如何解决问题的程序猿。不要成为那种只会说“告诉我要创建什么,我就创建什么,不要问我这是否为最佳方法”的程序猿。
有团队精神
无论是结对编程还是大型项目,所有开发人员都是作为团队的一部分在工作。你需要致力于团队的目的和目标。帮助指导初级成员,或帮助苦苦挣扎的团队成员克服障碍。不要有那种“我在这里只要做好我的工作,然后就可以回家了”的态度。成为团队的一部分。你不需要成为“团队小丑”或总是出去参与团队活动,但要成为团队的一员。
自学
这是一个非常重要的技能;在你自己的时间学习新技能的能力。不要总是等待公司为你提供培训。你需要自己去学习新技术,提升自己在相关领域的水平。从前端开发到架构模式,总是有一些新生事情值得学习。阅读博客和文章,尝试加入本地聚会小组。你学到的东西可以为你的事业开辟新的顶点。
这个博客不应该这么长,但目的是为了帮助那些有抱负的开发人员——甚至是老手。谢谢各位阅读!