3—5年程序员的发展和出路在哪里?

是继续做技术人,还是向管理者发力?是继续留在大公司,还是转投潜力小公司?如果没有核心竞争力,入行一两年的新程序员朋友是可以替代你大部分工作的,而且薪资还低,要怎么办,何去何从?

中坚力量的程序员们,是相对稳定的一群人,整体跳槽率低于三年以下经验的程序员,但是结合开头的迷茫,这个稳定其实也有点尴尬。

5年的程序员们正在面临的窘境是,必须快速成长,成为技术总监,否则很可能会被0—3年物美价廉的程序员替代。

那么程序员究竟要有怎样的核心竞争力,才能不迷茫,完成进阶呢?

1.从思维角度理解

正确认识自己

很多人会笑?最了解自己的人当然是自己。没错,但正视自己的优缺点,客观做出正确的选择却很难。

有了5年的工作经验之后,你应该非常清楚自己适不适合IT这个行业,并且对于自己将来走技术路线比如成为架构师;还是走管理路线比如成为CTO还是创业有一个大致的思考。

但是这些必须基于你对自己的了解,如果你性格非常内向,不喜欢和别人沟通,但做事有条理,完美主义,细心严谨,就算不为了工作自己也会写开源代码,并且乐在其中,说明你很适合做技术方向,想要做管理岗位还需要更多磨练。

回归编程的本质

让我们回归编程的本质,重新去理解程序员这个职业。

很多人认为程序员只要能按照需求写代码就可以了。虽然这也没什么错,但以上的工作,即使你完成了,依然很难拉开你与别人的差距,拔高自己。

有三点建议:

(1).用代码解决问题

写代码的最终目的什么?是为了产品的诞生。对产品功能进行分析、思考、代码落地的能力是重中之重。

写代码不是在完成一个任务,而是在解决一个问题,你需要了解清楚这个问题的前因后果,调查清楚同类问题的相同点、关联性、痛点,举一反三,真正去解决问题所以程序员不就能之纠结于代码是否写得漂亮,而应该落实到它是否能解决问题。

(2).理解产品和用户

记得知乎上有一个问题是,程序员应该给产品提建议么?当然应该,不是有句话说,人人都是产品经理吗?何况还是和产品经理并肩作战的程序员。

程序员不仅要提建议,还要给出自己对产品的思考、理解、规划。代码写出来的是是实实在在的产品,只有理解产品和用户才能真正生动起来。

(3).商业思维

我们要从更高层面去看待和理解编程的工作。

我国不像美国那样有那么深的技术积累,在技术创新方面的能力远远落后于它,所以我国的互联网产品更多是商业模式的创新,而非技术创新。

程序员所掌握的技术的淘汰速度可能还没有商业模式淘汰的速度快,商业模式的快速进步和更新必然要求技术能够快速更新以支持其发展。

2.从技术方面入手

在BAT这样的公司里,商业上的变化非常之快,要求技术体系能够适应这样的变化,直接导致了几乎所有的架构体系都不停地往通用性、扩展性方向发展,都以提供商业能力为自己的最终目标。如果没有商业思维,如何去理解和更新庞大的技术体系呢?

技术为商业服务、商业推动技术进步,这是互联网公司的基本法则。商业思维的一个体现,可能就是前瞻性了。能看到未来的技术需求和发展方向,你就是行业专家了。

现如今互联网最火最新的技术知识有哪些呢?

根据阿里巴巴的面试入职标准定义

1.架构师筑基专题

(1)并发编程

并发编程几乎是所有互联网公司面试必问问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。目前网上没有系统的全面的并发编程学习大纲,我搜集了很多资料总结出来一个最全面的学习大纲:

 

 

(2)JVM性能调优

性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环,本屌在性能优化这一块虽然不能算专家,也可以自信的说是精通了(注意:自己的简历上一定不要写精通xxxx,要不然面试官会怼死你。好在本屌这一块还算自信)

 

(3)网络编程和高效IO

(4)Tomcat进阶解析

(5)MySQL深度优化,Linux基础及进阶以及设计模式实战

2.开源框架解析专题

阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。在阿里面试中,MyBatis,Spring等框架的底层原理是经常会被问到的

 

3.高性能架构专题

阿里巴巴有很多大团队,这种大团队里有很多小团队,到小团队之后,做的业务都不相同,如果想立足成为一线互联网公司中的万能选手,最主流的分布式架构中有很多知识都是必须要去了解与学习的。并且在阿里面试过程中,面试官会问到实际应用场景的问题:比如微服务化、用户量、并发量、业务复杂度以及可扩展程度等,这里不多赘述。本屌提供一个分布式架构的学习思路也是自己目前还在学习中的体系:

(1)分布式架构思维以及分布式协调和分流

 

(2)异步与消息中间件

 

(3)缓存和Nosql

 

(4)高可靠数据存储以及分布式常见场景解决方案实战

4.微服务专题

微服务是现在互联网架构技术中最火热的话题之一,也是本屌目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术

(1)springboot,springcould,Docker虚拟化技术

(2)dubbo应用及源码解读,RPC原理

 

5.团队协作开发

 

6.B2C商城实战

 

三 Road的更多相关文章

  1. The Road to learn React书籍学习笔记(第三章)

    The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...

  2. bzoj 2752 9.20考试第三题 高速公路(road)题解

    2752: [HAOI2012]高速公路(road) Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1545  Solved: 593[Submit] ...

  3. HDU 1598 find the most comfortable road(最小生成树之Kruskal)

    题目链接: 传送门 find the most comfortable road Time Limit: 1000MS     Memory Limit: 32768 K Description XX ...

  4. 杭电 1595 find the safest road

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. hdu 1598 find the most comfortable road(枚举+卡鲁斯卡尔最小生成树)

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  6. Codeforces Round #365 (Div. 2) Chris and Road

    Chris and Road 题意: 给一个n个顶点的多边形的车,有速度v,人从0走到对面的w,人速度u,问人最快到w的时间是多少,车如果挡到人,人就不能走. 题解: 这题当时以为计算几何,所以就没做 ...

  7. HDU 1598 find the most comfortable road 并查集+贪心

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000 ...

  8. HDU 1598 find the most comfortable road (MST)

    find the most comfortable road Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  9. HDU-1598 find the most comfortable road

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. subprocess.run()用法python3.7

    def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): "&q ...

  2. JDBC连接MySql例子

    1.注册MySql连接驱动 2.设置连接MySql连接字符串.用户名和密码 3.获取数据库连接 代码如下: // 加载驱动 Class.forName("com.mysql.jdbc.Dri ...

  3. 小白学 Python 爬虫:Selenium 获取某大型电商网站商品信息

    目标 先介绍下我们本篇文章的目标,如图: 本篇文章计划获取商品的一些基本信息,如名称.商店.价格.是否自营.图片路径等等. 准备 首先要确认自己本地已经安装好了 Selenium 包括 Chrome ...

  4. spring security几大核心组件

    一.SecurityContext 安全上下文,用户通过Spring Security 的校验之后,验证信息存储在SecurityContext中 SecurityContext接口只定义了两个方法, ...

  5. 解决:Field xxMapper in xx.service.impl.xxServiceImpl required a bean of type 'xx.mapper.xxMapper'

    1.启动 SpringBoot项目报错,使用的是Springboot.Spring.Mybatis连接Mysql数据库,启动SpringBoot项目报错,错误如下所示: _____ .__/\ .__ ...

  6. java list 清空列表所有元素

    Java list 清空列表所有元素 List<String> list = new ArrayList<String>(3);list.add("hello&quo ...

  7. 凭什么相信 5G 很安全?

    导读 电信行业及其专家指责科学家说,他们研究的5G无线技术所带来的手机辐射制造了恐慌.由于我们的许多研究工作都是由公共资助的,因此我们相信从道德的角度来看,我们有责任告知公众,经过同行评审的科学文献究 ...

  8. 关于Android Studio中点9图的编译错误问题

    Android中的点9图想必大家都非常熟悉了,能够指定背景图片的缩放区域和文本内容的显示区域,常见如QQ聊天界面的背景气泡这种文本内容不固定并需要适配的应用场景. 这里也给大家准备了一张图,详细介绍了 ...

  9. UCOS-III API函数

    附录:UCOS-III API函数 任务管理 就绪列表 挂起队列 时间管理 信号量 消息队列 内存管理

  10. js中各种类型转换为Boolean类型

    数据类型  转换为true的值  转换为false的值 Boolean  true  false String  任何非空字符串  空字符串 Number  任何非零数字值(包括无穷大) 0和null ...