试问:一个自学代码、参加了相关训练、但只会 JavaScript 的人,突然拿到了 Java 开发的 Offer,第一反应是什么?
该故事的主人公 @sam_kings 回答:慌,慌得要死,慌到迫切想在 Reddit 上发帖求助的程度。
于是在入职三周后,@sam_kings(以下简称为小 K)终于忍不住了:“找到了一份 Java 开发人员的工作,但我对 Java 几乎一无所知。”
我刚刚开始了作为 Java 开发人员的第三周工作,但我对 Java 真的知之甚少,更不用说 Spring 或 Spring Boot 了。我先是自学了代码,然后又参加了一个训练营,但我只会 Javascript。
入职三周,接近崩溃
据小 K 介绍,面试并录取他的这家公司,早就知道他对 Java “一窍不通”,但还是愿意给他一份待遇不错的 Offer:“这份工作的薪水,是我之前从事非开发人员工作的两倍。”
在接受这份 Offer 之前,只掌握了 Javascript 的小 K 实际上有些犹豫,但公司说会对其进行 Java 培训,于是他才放心入职——然而,事实情况与之前承诺的完全不同。
小 K 表示:“在过去的两周里根本没有培训,我只能靠自己在 Youtube 上看教程,还有其他 5 个新员工,情况也跟我一样。”
在 Youtube 上看了两周 Java 教程的小 K,现阶段只知道如何用控制台做简单的 CRUD,可公司现在要安排他去参与真正的项目了,导致 @sam_kings 接近崩溃:“他们所有的代码对我来说都很陌生,我怕项目被我搞砸!大家有什么建议吗?”
小 K 的这则求助帖吸引了不少开发者的注意,其中不少人都很好奇:“你是如何得到这份工作的?” “这是哪家公司?我这就去申请!”
对此,小 K 进行了回应:
网友:怎么做到的?在我的国家,这类岗位面试要通过现场编码测试和入门级工作考试。
@sam_kings:这公司也是这样的,不过只是简单的逻辑和不同的语法,并不难掌握。
工作第一天,发现跟想象中“完全不同”
相较于工作三周才发帖求助小 K,29 岁的 @Shot-Craft5144(以下简称小 C)在第一天工作结束后就陷入迷茫了。
原本从事零售管理的小 C,去年 12 月从一个网络开发训练营结业,并从中体会到了网络开发的乐趣与成就感。为此,小 C 一直想找一份技术领域的相关工作,并每天坚持着编码和构建项目,期间还参加了编码挑战赛。
由于较为缺乏 DSA(数据结构和算法)知识,小 C 的许多面试都失败了。出乎意料的是,后来小 C 就近投了一个工作,第二天就接到了安排面试的电话,面试官是 IT 经理,问的都是一些关于 SQL 和 Javascript 的技术问题。隔天,公司要求小 C 提供推荐信后,很快就录取他了。
整个过程顺利得让小 C 有点懵,不过看到较低的薪资待遇时,他觉得这可能就是公司聘用他的原因之一。
时间来到了小 C 上班第一天,他发现“和想象中完全不同”。他所在的团队由 4 名 IT 人员和 1 名软件开发人员(就是小 C)组成,然后只给了他一份超级模糊的文档,代码库到处都是 jQuery、bootstrap、.net core MVC、razor pages、C# 和 Javascript。
“很多东西我在训练营里根本没学过,面试我的人也只是给我分享了 Github 上的软件仓库,让我去看一看。我一整天就做了这些,我根本不知道自己在看什么。” 小 C 无奈表示:“我真的打算另谋高就了。因为我逐渐明白,我的热情和专长可能只是前端开发。”
“要坚持下去”
看过小 K 和小 C 的分享后,许多开发者表示他们也都有过类似经历,即意外应聘上了一份并不擅长的工作,其结果有好有坏。
“我也经历过类似的面试。面试时我已经告诉他们我只有 C# 经验,并向他们展示了我之前所从事的项目,但我得到了一份 C 嵌入式开发人员的工作…后来与经理交谈时,经理说他觉得我很聪明,相信我会弄清楚的…之后大约半年我都在努力交付软件,但我的经理时常抱怨我在按时交付软件时问题不断,却完全忽略了我没有 C 语言的经验…所以目前,我已经在疯狂寻找新工作了。”
“当我开始我的新工作时,我对 .NET 或 Azure 一无所知,但掌握了多种不同语言的知识。入职前 3 周我只阅读文档并盯着代码库,不过一段时间后,一切都会自然融合在一起。”
另外,也有部分开发者结合其自身学习 Java 的经验,向小 K 分享了一些学习建议。
有人推荐 @sam_kings 线上参加一些免费的 Java 编程课:“推荐你参加免费的在线赫尔辛基 MOOC Java 编程课程,这是结构最好的在线 Java 课程,涵盖了所有基础知识。相信几周后,你就将成为一名中级 Java 开发人员。”
有人推荐 @sam_kings 好好学习设计模式,用 InteliJ IDEA 并进行逐步调试,之后“大量学习 OOP、SOLID、各种设计模式,以及 SQL 和数据库规范化,了解 ORM 的作用。”
还有开发者在盘点 Java 学习方法时,建议小 K 劳逸结合:
“(1)对于语言方面的东西,我建议你使用 Java 官方教程作为参考,它是最清晰、最易读的 Java 参考资料。先阅读前两节,然后根据自己的需要进行参考。
(2)可以买一本《Effective Java》和《Java Concurrency in Practice》,然后开始学习。看看你老板是否有 OReilly 订阅服务,否则就去买。
(3)阅读 Oracle 有关 JVM、垃圾回收和应用程序故障排除的文档;阅读 Spring 的官方文档,直到你明白它在做什么;阅读有关依赖注入的资料,了解它为什么是件好事,尤其是对 Java 来说。
(4)使用 IntelliJ 在本地运行你的一个或多个项目,这样你就可以设置断点并进行调试。如果不行,也可以进行远程调试。编写和运行单元测试是另一种逐步检查代码并了解其工作原理的好方法。
(5)最后,需要休息时就休息。Java 是一个庞大、复杂的世界,与你以前所做的工作不同。作为一名 Java 开发人员,你将接触到一些普通人接触不到且非常棘手的语言部分。”
而更多的人,都在鼓励他们要坚持下去:“处理别人的代码真的很困难,但是放轻松,熬过半年就好了”,“要坚持下去,我也是这么坚持下来的”,“对于开发人员而言,这种情况经常发生,你能做的最好的事情就是经历并克服它。”
那么你是否也有过类似经历,具体又是如何解决的呢?欢迎在留言区分享。
参考链接:
https://www.reddit.com/search/?q=openAI&t=week
https://www.reddit.com/r/learnprogramming/comments/1646ou8/got_a_job_as_a_java_developer_but_i_barely_know/