对IT技术的初学者来说,除了编程之外,还应该掌握哪些技能,才能找到并胜任工作?

很多人都在说自己学Java,学CSS,学JS,学了半天发现自己其实还是没办法达到一个公司的要求。那么公司期望一个人应该具备什么样的技能呢?有没有一些隐…
关注者
1,409
被浏览
196,030

40 个回答

做过4年项目经理,招过不少开发人员(主要是JAVA WEB方向),既然题主问的是初学者,那么就聊聊站在项目经理的角度招初级开发人员的体会,希望能给你有所启发。

招人有个背景,不同的项目,系统,对开发人员的要求是不一样的。 我带的团队当时做的是上海大众商品车运输管理系统(TMS)和仓储管理系统(WMS)。 这是一个业务系统,所以对于初级程序员的要求没那么复杂,就是来了之后,可以较短的时间内上手,干活。 业务系统嘛,主要还是围绕CRUD进行。

建立在这样的技能需求的基础之上,我进行面试的时候,就分几个层次进行了

1. 根据求职者简历上的项目描述,我会选一个典型功能让他说是怎么做的,比如登陆/注册/购买/分页

从求职者的表达里,我会观察他是否把基本的业务逻辑搞明白,技术调用思路理清楚没有,当然还有表达是否通顺。 这个功能说不清楚,我会再换个功能让他说。 既然是写在他简历上的,自然默认这些都是他做的,如果连自己做的都说不清楚,会怀疑其真实性,就Pass了。只要是自己做的,那么就像讲述自己的故事一般自然而然就可以这部分内容阐述出来了。

2. 然后是理解程度的问题

还是以一个简单的登陆为例子,如果把流程都说明白了,我就会问关于http协议的理解,不同提交方式的区别,中文的处理,SQL注入,页面跳转背后的区别等等,也就是按照调用过程里面涉及的到的各种技术,深浅不一地挖掘一下他都掌握到什么程度。 这样我问起来也轻松,按照思路走就是了,反正一路上都是各种技术,都会有各种坑,看看他碰到过些什么,自己都是这么解决的。 在这个过程中,我就会观察到他对技术的理解程度,也能反映第一个问题是背书答出来的,还是确实是自己做的。 业务系统嘛,对初级程序员要求真不高,只要走过一遍了,其他的相仿功能都能触类旁通。当然,前提是,你得把走过的这一遍里的坑,七七八八都踩过,并且自己解决过,光是抄别人的项目,在这里是很容易露馅的。

3. 第二步答上了,那么七七八八差不多就是候选人了,和其他几个候选人比较一下是否有亲切感,薪资要求的差别,感觉会不会好相处什么的就定了。 如果第二步答得比较理想,我还会问一些对初级程序员来说比较难的问题,实际工作也不怎么用的,比如反射,JVM是如何进行synchronized处理的,ClassLoader,垃圾回收的几种算法以及优缺点等等。 看看求职者的技术积累如何,学习意愿如何什么的。 这里也有一个心理,如果你问的求职者都答上了,他来了,会不太好管,他会觉得什么鸟公司,要求这么低,老子全都会。 如果你有几个问题难住他,都是搞技术的,你在他心中地位会不太一样,带起来也听话一点。 当然了,这些问题,我也不期待他全部都答上,都答上,你就奔中高级开发人员去了,初级程序员这点钱,你也呆不久。 换句话说,去求职初级岗位的同学们,就算碰上特别难的面试,也不用太慌张,初级岗位嘛,又给不了多少钱的,哪能什么都要会,心放宽一点,哈哈

总体来说:

我希望你给我的简历是真实的,假的很容易被识破,直接就pass了。

我希望你做过的一些典型的应用场景,来了能够举一反三很短的时间就上手干活。

我希望你比较好相处,大家可以比较愉快地共事。


至于说编程之外其他的,说实在的,我并没有经历过任何一家公司真正在乎一个初级程序员的职业发展。 所以心态放好,拿钱干活,工作任务完成之余,再根据自己对业务的体会,对技术的感知,对未来的规划,对自己性格的了解,该学什么就学什么吧,所有的积累,在最后都会以某种形式回报给你。

我不建议你一开始全面开花,拼命学习各类技术,特别是没有相互强关联的技术。到最后,很可能是什么都会,什么都不精。走技术路线的话一般有两条路

  • 把某一些技术学到极致,成为大牛

这个很好理解,比如你学PHP,你就把PHP吃透,而且积累丰富的PHP开发经验。或许你不会整个网站的管理和开发,但是当遇到一些PHP技术难题时,在你的圈子里大家都知道只有你能搞定。


  • 掌握一套相关联的技术,成为这些技术的整合者

这个和前面一种相反,不是每一种技术都是大牛,而是做到为了实现某一个目标,你了解所有相关的技术。还是举网站开发的例子。你不需要成为PHP的大牛,但是你得知道PHP是如何开发网站的,自己也能写出合格的PHP代码。同时你也懂数据库,你虽然不如资深的DBM那样能把数据库玩的很溜,但是你能做到能搭建一个最基本的能支撑网站运作的后台数据库系统。然后还得知道如何让PHP程序和数据库系统进行稳定的交互和链接。当然,你还得懂CSS,Javascript,HTML等等等等。当你能做到这点的时候,一旦你接到一个任务,你脑子里就能搭建出一个网站的技术结构图。然后把各个细节上的实现分配给下面各个领域的大牛去做。

-----------------------------------------------------------------------------------

所以你一开始要确定你的发展方向,然后在确定为了实现这个发展方向需要学习的技术及学习的深度。且不可以见什么都学什么。你说一个搞软件开发的学硬件有什么意义?一个搞通讯的学SEO也没用是吧?

很多人学各种各样的技术,由于自己精力有限,都没学到根上。再加上没有规划,这些技术往往很难组合配套使用,结果就是迷茫。老板公司让你学技术的目的是要能解决问题。所以从解决问题出发。当然最重要的是要订好自己的发展方向。

----------------------------------------------------------------------------------------

从公司对员工的要求方面来看,一般也分两种。大公司的要求,小公司的要求

  • 大公司对员工的要求是单一领域的专精

大公司往往岗位划分的相当细,一个人不会也不可能让你负责多个领域哦工作,你是写代码的你就专职写代码,别的事情你别插手,也不会让你染指。你是搞数据库的,你就一心一意搞数据库,代码的事情你别管。所以大公司不会要求员工的能力全面开花。

而且大公司往往较为规范,一旦让你做一个领域的工作的话,基本会有人带或者培训的。至少会告诉你,你需要往哪个方向发展,及至少你的能力要达到哪个层级。从题主的问题可以看出,题主你应该是在小公司工作。因为你现在还很迷茫。

  • 小公司对员工的要求是独当一面

小公司没有大公司那么强大的资源支持,对成本敏感,生存压力大,而且组织管理更不规范。所以小公司的老板往往要求下面的IT最好什么都会。你不需要是某一领域的专家,只要你的能力够解决问题就可以了。但是你需要解决所有的问题。

别说你是程序员,只管程序的事情,如果要处理数据库请老板再招个数据库管理员。你分分钟被老板骂死。你是IT,IT的事情你都得负责,你怎么处理我不管,总之别掉链子。这就是小公司老板的心声。

所有小公司的IT你在学技术的时候特别要注意,别上来就是高大上的理论和流行的技术和名词。解决问题是王道。小老板们不会在意程序的效率问题,不会在乎用户体验。他们要的是:省钱,管用,快速上线。所以你遇到什么问题就学什么,千万别为了花狸狐哨的东西花太多的时间。


==================================================

先写道这儿吧。想到再补充。