毕业三年了,我开始明白为何说三年是一个坎

话题开始以前,请先容我哀悼一分钟。程序员

1,2,3.................60,好了,一分钟过了,我又凑多了几个字。web

毕业三年了

哈哈,开个玩笑。面试

之因此写这篇文章,也是最近才觉察到本身已经毕业三年了,从2017年6月30号算起,整整三年多的时光。时间不知不觉地飞逝,转眼之间,我也从一个青春少年转变成了一个老油条,额。。。说老油条好像早了点,那就叫中油条吧。算法

记得当初校招找到工做以后,我热情满满的对本身的将来作了详细的规划,像什么三年升高级,五年作架构师。现在看来,这一切也只不过是一个初出茅庐的小白的自我陶醉而已。固然,每一个人都会有年轻的时候,毕竟刚出校园嘛,对将来有幻想是正常的,可幻想事后终究仍是要面对现实,不得不接受本身就是一个菜鸟的设定,接受本身就是一个普通人的设定。数据库

学历通常,能力通常,一个没有天赋的农村小伙能跟别人竞争的最大优点可能就只有奋斗了。毕竟,再差的菜鸟也有成为老鸟的一天,这三年的时间里,我也许没有作过什么特别有价值的事,最大的价值也惟一算得上价值的可能就是我这三年以来的从业经验了,三年的时间说长不长,说短不短,但我能够信誓旦旦的说,比起刚毕业的时候,我对本身所在岗位和行业的认知都上升了一个高度,也正是从业了三年的缘由,让我开始明白为何现在不少公司的社招岗位广泛要求要三年以上的工做经验。安全

为何是三年

为何是三年这个时间段呢?不是一两年或者是五年?网络

我我的认为,三年是一个小坎,对于工做流程的熟悉度和岗位须要的协调能力都有必定的积累,简单来讲,就是能够直接上手作事,不用花太多时间去调教。数据结构

比起一两年的求职者,三年工做经验的人对工做的熟练度更甚,跟其余同事协做的能力也已经具有,同时还能承担部分重要的职责,主导部分重要的工做,好比带新人作项目之类的,这样的一个门槛限制,能够过滤掉不少不合适的求职者,给企业招聘省下不少的人力。多线程

比起五年左右的求职者,虽然能力和经验稍逊一筹,但贵在便宜啊,并且岗位的能力不是特别高的话三年的经验足够胜任了,因此,不少岗位的要求也就三年以上,最多也就3-5年,五年以上的相对不是不少。架构

三年经验的程序员

前面说到,我是2017年6月底毕业的,但其实,当时4月份的时候我就开始工做了,个人第一份工做作的是Java开发,直到如今依然是作Java方面的项目,这么算起来,我也有三年多的Java开发经验了,想起当初大学时候跟同窗调侃,简历上写精通Java必定有不少面试机会,同窗戏谑地反驳我,呵,年轻,没有三年以上的经验还敢说本身精通Java。如今想一想,即便过了三年我也不敢说本身精通Java,这条路还长着呢,真的是太年轻了。

固然,虽然没有作到精通,但我对这个职业也算有必定的认知吧,从我我的的角度来看,一个合格的三年经验的程序员,他应该具有如下的几种特质:

一、扎实的基础。

基础的重要性不言而喻,在我看来,基础方面是否扎实是衡量一个程序员是否合格的入门门槛,也是几乎全部的互联网公司都会考量的重要知识体系。

什么是基础呢?就拿Java的知识体系来讲,基础包括但不限于:

Java基本语法,Java集合,多线程开发,JVM,数据库,计算机原理,计算机网络,基本的算法和数据结构,web端相关技术,经常使用框架的使用和原理等等。

千万不要以为不少,也不要以为基础不重要,有时候,你的基础知识不扎实,你写的代码可能会造出你本身都理解不了的bug,好比下面这段代码,

public class ThreadSafety implements Runnable{
 //共享数据
    public static int i = 0;

    public  void increase(){
        for (int j= 0;j<10; j++){
            i++;
        }
    }
    @Override
    public void run() {
        increase();
    }
    public static void main(String[] args) throws Exception{
     ThreadSafety demo = new ThreadSafety();
        Thread t1 = new Thread();
        Thread t2 = new Thread();
        t1.start();
        t2.start();
        t1.join();
        t2.join();
        System.out.println(i);
    }

咱们知道运行后的结果确定不是20,由于没有对共享变量作线程安全的操做,若是你的多线程基础不扎实的话,这样的代码你可能不经意间就写出来,最后程序跑的时候数据就不一致了。

固然,通常人不会这么蠢,即便是我刚学Java的时候都知道这种代码有问题,但基础确实是很重要。

若是你是一个即将毕业的大学生,相信我,学好这些基础的知识将是你跟同龄人拉开差距的最大优点,由于多数的大学生没有经历完整的企业项目开发,在实际项目方面即便不是一张白纸,也不会有多丰富的经验。这个时候,企业招聘考察的最好方式就是大家对基础知识方面的掌握程度,扎实的基础将帮助你在激烈的同龄竞争中脱颖而出。

二、良好的编码能力。

除了能正常实现功能外,还须要有优化代码的意识和习惯,最基本的习惯就是注释要清楚明了

一个项目每每须要多人的协做,你的代码并不仅是给本身看的,极可能会通过不少人的接手,若是注释不清楚的话,别人光看你的逻辑就要仔细的揣摩半天,并且可能还偏离方向。

我看过不少人写的代码,一个方法的业务流程注释很不清晰,有些人一个方法100多行就一两句注释,彻底让接手者摸不着头脑,像我本身的话,通常写业务代码会按照步骤来写注释,这样看上去每一步的逻辑都比较清楚,

public GardenUserFruitDetailDesp userFruitDetail(GardenBaseReq req, Long userId) {

    // 一、查看有没有正在参与活动的用户果树,没有的话返回 "未选择水果" 状态
    .......................

    // 二、水果仍是未选择状态,证实用户未经过新手教程
     .......................

    // 三、果树成熟,返回可采摘状态
     .......................
    
    // 四、获取用户果树的相关数据
     .......................

不过,注释清晰也只是基本的要求,即便是新手也能很容易的作到,但说到代码的优化方面就另当别论了。

一个有经验的开发者除了专一功能的实现外,代码的优化也是其比较上心的部分。

举个例子,好比说逻辑有共通性但分类较多的状况下,不少人会写大量的if/else语句来表示,虽然也能实现功能,但从可读性和扩展性来讲是比较差的,若是想更上一层楼的话,能够引入一些其余的设计理念来优化一下代码,好比能够引入策略模式或是适配器模式的设计来处理代码,兼容不一样分类的共通性逻辑,不只实现功能,还让代码看上去更加的高端,便于维护。

固然,这方面的能力不是一蹴而就的,除了多写以外,意识和习惯方面的培养也不能少。

三、承担一个项目的设计开发任务

若是是刚入行的新人,通常上级的任务是让你修改一些bug或者实现一些小功能,厉害点的人会让你负责单个模块的开发工做。

随着你经验的增长,你负责的工做内容会慢慢的开始扩展,从单个子模块到多个子模块,而后是重要模块的研发和维护,甚至最后多是负责一个中小型的完整项目的研发过程。

当你有三年左右的工做经验以后,咱们平常负责的将不只仅是代码的编写工做,可能须要经历一个完整的项目生命周期,从技术评审,到模块设计,以及分配工做、功能实现,还有项目维护这一系列的工程。除此以外,若是你能力和经验足以胜任的话,上级还会给你分配新人,让你来带他们作项目开发。

四、对架构方面有必定的理解

算起来,三年经验的程序员也是有必定经验的工做者了,从经验上看不能归为普通的初中级,但也没有达到高级程序员的高度,大概就是中级到高级程序员之间的过渡阶段吧,毕竟要成为高级程序员的话,除了基本的编码能力以外,对架构方面也要有必定的理解,我姑且称之为架构思惟吧。

什么是架构思惟呢?就是当你的视野和思考已经有足够的高度,能对项目全局或部分作一个总体的架构方面的设计和优化。

举个例子说,如今公司有一个电商类的项目,由于项目初期没有考虑到将来业务扩展快速的缘由,因此在架构设计方面有所欠缺,形成如今单表数量太多,单个工程代码量太庞大,平常qps太高致使页面响应过慢等问题。针对这些问题,若是让你来对项目的总体架构作优化的话,你会怎么考虑?

在实际中,公司或许不会把项目架构优化这么庞大的工程量交给咱们这个阶段的开发者来设计,但工做之余的咱们也能够学习思考一下,若是让咱们来接手的话,咱们该怎么结合实际业务场景来优化架构?

又或者说公司的架构师或者是业界已经有成熟的架构方案了,咱们能够拿他们的方案和本身思考的方案作下对比,看看有哪些地方须要改进,而后看看本身的架构技术盲点,课余时间去进一步的学习和补充。

我相信,这样的学习策略对于本身的架构方面的理解必定会有所帮助,久而久之的思考方式也必定能够提升本身的架构思惟能力。

总结

固然,上面所说的几点也只是我我的的看法,现实中没有哪一个通用的考察标准,虽然说是合格的三年开发者必备的特质,但说实话,我本身都达不到这样的要求,因此,我也不知道本身算不算得上合格,也不知道现阶段的我跟同龄的程序员相比是否有优点。但有一点我是坚信的,那就是,无论本身如今是什么阶段,无论本身从业了多少年,只有终身的学习,不断的精进本身的知识技能才是保持咱们竞争力的最大优点。

ps:虽然是吹水文,但撸了那么多字也是挺难为个人,我不知道正在看文章的读者你看完本文后有什么想法,但我想说,若是你也感同身受的话...............快给个三连吧,臣妾不容易啊!


做者:鄙人薛某,一个不拘于技术的互联网人,欢迎关注个人公众号,每周不按期更新干货文章,这里不只有技术,还有吹水~~~

相关文章
相关标签/搜索