查看原文
其他

一次线上分享的干货整理

大飞码字 大飞码字 2019-04-04

昨天受邀参加了一个技术群的分享活动,我作为嘉宾给大家分享了: 在校生如何快速提升竞争力 这个主题。 分享结束后,大家提了不少的问题。 有的是在校生,有的刚参加工作,也有工作几年对职业发展有疑惑的同学。 我结合自己的经验做了解答,虽然不一定都正确,但觉得对大家也会有些帮助,所以就想在这里分享给大家。对主题不感兴趣的朋友,可以跳过分享,直接看后面的答疑部分。(To参与分享的同学: 你们的热情超出了我的预想,谢谢你们对我的支持 :)  )


以下是分享的内容:


一个从事技术岗位的毕业生,要想在短期内提升竞争力,获得周边同事,直属leader的认可和赞扬,我觉得需要关注以下的一些方面。

一 代码能力

无论你用什么语言,做什么项目。代码能力就是基础中的基础。说实话,代码能力无法在短时间内获得巨大提升,需要的是日积月累。所以强烈建议,在校学生平时就要有做题刷题的习惯。特定领域的知识是可以短期内获得的,但代码能力这种内功只有慢慢的练,才能练出来。这个是在工作前就应该充分准备的。 再多说一点。虽然实际工作中,不会让你去手写平衡二叉树什么的,但做题刷题确实可锻炼你解决问题的思维能力和将想法变成代码的能力,在项目中实际编码的时候,有巨大的帮助。实际工作中,有参加过算法竞赛的同学的代码质量和产出速度确实是比较好的。搞竞赛的同学在这方面是有天然优势的,没搞竞赛的同学,我觉得日常刷题也是很好的方法。至于刷多少合适,我觉得如果是大学四年,尽量往1千题靠拢吧,当然是越多越好。

二 语言和框架

当你已经拿到确定的offer,明确要就职的公司和部门后,你接下来要进行的工作应该就比较确定了。后面会使用到的语言框架也应该是确定的。比如你的部门可能是用java做crm系统或者用c++开发分布式系统或者是ios客户端,andriod客户端等。语言和框架应该都是确定的,这两部分的知识是可以在入职前就做充足准备的。你想在早期就树立竞争力,这块的准备是必不可少的:ide环境的搭建使用,对应语言的语法,语言特性细节,入门工作中会用到的框架。这个阶段不要去抠很偏门的知识点,学习或者复习常用的知识点,提高熟练度更有意义。当跟你一起入职的同学,还在就一个框架使用或内部实现机制在请教前辈同事的时候,你已经掌握了这些,你就已经快人一步了。也更能获得周边同事和直属leader对你的认可。

三 要开始熟悉特定的工作领域

当你确定入职一家公司后,具体的部门,后面要走的方向也是确定的。当这些确定后,你需要开始去了解那个领域。比如你在校的时候,可能没接触过分布式系统,分布式领域的东西虽然没办法在短时间内就能搞清楚,但你可以通过搜索引擎,书籍等来建立基本的认识和了解一些基本的概念。就是让自己的脑子里,对这个领域有个基本的认知。这样你在实际工作的时候,就不会连基本的概念都分不清楚,在跟其他同事交流的时候,也会更加的顺畅。

四 做好第一个项目

信心是建立在成功经验的基础上的。需要在实际工作中去获取。所以对于接到的前几个任务,都要用心的去做好。我估计大部分的同学都会认知到这点,但确实不是所有人都能做好。给几个建议

1 不要钻牛角尖。我遇到一些毕业的学生,他们确实是想做好,但感觉走偏了,有点吹毛求疵了。工作是为了解决问题,不是学术讨论,新人也不要通过这种方式来展现自己的能力,有时反而会适得其反。 我带过一个同学,让他帮忙给一个系统做个工具。当时的初衷是想让他通过做这个工具,慢慢的熟悉这个系统,然后再逐步参与进去的。里面有个地方需要用到hash函数,但因为只是工具,性能要求也不高,一般的hash函数就可以的。结果他花了三天时间去研究各类的hash函数。却没有花时间去熟悉工具对应的系统。这么做当然不对了。还好后面及时沟通了,回到了正轨上。所以,我觉得新人尤其要注意这个问题。自己把不准的时候,最好多问问前辈同事。

2 要多交流。一般都会给新人安排导师,要多跟导师交流,看看导师怎么理解这个事情,怎么做更合适。同时也要跟导师去交流上一点提到的问题。那些点是应该重点解决的,那些点可以不用花太多精力。

五 持续保持一定强度的学习

一般工作两三年后,同时期入职的同学间的差距会开始显现出来。造成这种差距的主要原因,我觉得是你在学习上投入的时间。其实大家能进入到同个等级的大学,同间公司,大家的智商,其实不会相差太大。两三年的差距,真的就是来自时间的投入了。 我所在的公司是995,但毕业的前几年,我都维持着一定强度的学习状态。 一般工作,我在晚上8点前便完成了。剩下的一小时,我会看些自己感兴趣的知识点或者就工作中遇到的问题再深入的去了解。毕业的第一年,周六也基本去公司,虽然公司没要求。一般去到公司,有时候是完成工作任务,有时候是重构些自己觉得写得不好的代码,有时候时看公司内部的技术文章(这个也是大公司的一个好处了吧,有很多外面看不到的技术文章)。积累久了,差距就自然出现了。没有捷径。

以上,是对在校毕业生的一些建议。第一点是大学就需要开始的积累。二三四点能帮你快速提升工作能力,提升竞争力。第五点能长期的提升你的竞争力,让你在几年后,跑在别人的前面。


以下是大家的提问和我的解答:


Q: 已经工作几年的,想进大厂,有什么建议吗?或者有内推吗?

A: 对于工作几年的同学,建议要开始有自身的职业规划。 做技术也分:技术型技术和业务型技术。看看自己想往那方面发展。进大厂是个好的选择,不过有客观因素,不一定所有的人都可以达成,当然这个需要自身的努力。关于技术划分这点,我的公众号上有一篇文章,描述了这块的区别,有兴趣的可以去看看 从公司发展看技术人才需求

Q: 现在有许多教学视频。对于学习时看视频您怎么看待?相比书籍

A: 教学视频的学习门槛比较低,对于开始上手一种新的技术和新的领域很有帮助。对于一个特定领域的前期,可以采用视频教学的方式。但如果想在某个领域深耕,最后还是要回归到书本甚至是论文。所以看书学习的能力是不能丢的。

Q: 对于毕业想要找工作的学生而言,科研重要吗?还是说更应该注重代码能力这些呢?

A: 这个要看具体的工作。就互联网来说,算法类的职位: 例如机器学习,数据分析,对学历要求是比较高的,有科研经验的会很有优势,因为理论研究偏多。 对工程类的,例如前端开发,后台开发,实际经验就更加重要了。至于代码能力,如果你是纯搞理论研究,要求可以不用太高,不过工程类要求就要比较高了。

Q: 想请教下前辈,技术人员和什么类型的pm合作比较愉快呢对产品经理有什么诉求~有没有您认为好的沟通方式和合作方式 ,pm可以借鉴下

A: 沟通这个事情,不但是技术和pm,所有领域都一样的,做事先做人嘛。 我喜欢真诚的沟通,不要老是忽悠。 对于互联网的pm,如果有技术背景,会比较好,跟技术人员的沟通会更加的顺畅,而且不会提些无厘头的需求。

Q: 老师好!我是情报学的学生,编程非专业自学,现在的代码学习给我的感觉是毫无头绪,需要用到什么就去看什么,没有体系,很多东西联系不起来;另外就是不确定把什么语言当做主攻方向。想知道这种情况该怎么办。谢谢老师~

A: 对于这种情况,一个是你可以找下一些大学计算机专业的课程结构体系, 他们的设计,肯定是科学合理的。如果是专为了找工作的话,就需要看具体的工作岗位而定了。不过一般来说,计算机有基础课程,对于所有方向都是适用的。比如算法,操作系统,网络等。这块,也可以看看我公众号写的一些文章,有提过这部分。说说后台开发的一些事

Q: 请教前辈,我是网络与新媒体的学生。我们学校的课程设置是在大三的时候教授C++语言,但是我们师兄师姐反映都说大三学很赶太迟了。如果我们自己提前学的话有什么建议吗。(比如JSBox这个app入手)

A: 我是提倡提前学的, 我自己高中就开始接触编程。 大一的时候,我们C语言的课程,我已经自学完了。 到大二,专业课程,我几乎都自学完了。 这块没有特别的建议,学就是了。学的过程中,再慢慢调整,改进。

Q: 感觉现在算法(计算机编程算法)很流行,所以如果从事技术方向,都应该打好算法基础吗?因为感觉算法用心学还是需要大块时间的

A: 计算机编程方面的算法能力是很核心的内功,付出的时间,是有实际意义的。有过一定时间的算法锻炼,代码能力和思维能力会好过没有锻炼的同学,实际工作中会特别有优势。

Q: 前辈好~我是今年要毕业的学生想问一下求职的时候如果不是特别满足意向的工作岗位的技术要求 公司会招这样的人吗?比如说想做安卓开发,但是之前没有做过,公司会考虑其他方面的的经验或者基本能力吗

A: 对于毕业生,其实比较松,对特定经验不会有很强的要求。 更看重的是潜力和基础。所以基础好,问题就不大。

Q: 对于工作一两年近期没有找工作需求的人,需要保持刷题能力吗?如果要的话能拿LeetCode的难度举例吗?

A: 看你个人时间,如果时间能规划,建议保持刷题的状态。 难度方面,leetcode 中等半小时解出,国内互联网算法面试基本没问题。

Q1: 感谢分享哈。 我请教一个问题,工作几年的技术人员,在职业发展上有什么建议吗? 一般从事一个发展比较快的行业,比如前端,分布式,云计算。 这几年技术都是非常快的发展,也许设计和方法论可以积累,但是不可避免出现技能和工具的迭代过时。 如何面对技术的知识焦虑呢?或者换句话说,年轻的时候,技术人员可以靠时间和技术更替有比较好的发展,但到一定年龄后如何规划职业发展有更纵深的积累,有什么建议吗?

Q2: 请问前辈,您觉得互联网行业技术方向,相对于其他行业而言,对于年龄是不是要求更加年轻化?是因为技术更新迭代,相对于其他行业更快,所以经验的积累显得不那么重要的缘故吗?对于工作很多年的工程师是不是大多都往管理岗转了?

A1&2: 这个问题其实比较难,客观来说,程序员确实是个吃青春饭的职业。如果非要有建议的话。一个是往技术专家发展。一个可以往业务或产品方向迁移。都是有难度的事情。 有想法,有条件的可以考虑创业。

我个人觉得,管理岗这个理解是不对的。 技术管理其实不是特别有保障的事情,一旦你换一间公司,你就不一定还有的管理。 我个人觉得技术能力,产品能力,业务能力是核心竞争力,管理能力是依附于此的,不能脱离。

Q:我有个疑问,在写代码的时候是只要知其形就可以了,还是也得会其意呢?比如用到某些函数的时候,只去看如何使用它,或者去搞清这个函数内部是怎么定义的。这两种更推荐哪种呢?不只是写代码,很多事情都会想要一切都准备好了再开始做,感觉这个有点像前辈讲的“不要钻牛角尖”那部分。

A: 当然理解的深入更好啦。计算机编程是很讲求实际操作的。不用想太多,动手做就是了。


以上是这次分享全部的内容,希望对各位读者有帮助,希望以后有更多这种形式的分享  :)


推荐阅读:

技术人, 请不要封闭自己

高端职位应聘闲聊

说说高龄程序员


我是delphi, 微信早期员工,腾讯高级工程师,技术leader

支持就给个好看呗 :)




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存