程序员做外包,有前途吗?程序员如何通过空余时间提升自己?

没有,不只没有前途,甚至连钱途也没有。

直接讲一个身边的例子吧,之前在杭州合租时认识的一个大四实习生,在一家外包公司上班。每天朝九晚十二,一周六天周日补觉。

别问为什么,问就是在赶工期,问就是做完一个项目又来一个项目。

每天我躺床上要进入梦乡了,就听见他推门回来了,哗啦啦的水声吵得我只能继续玩手机。一看,凌晨一点。

有一次,我们几个住一块的问他,说你这么拼,工资应该不低吧?

他说还好,一问才3600。

我当年实习工资都有4000,正儿八经的互联网公司,朝九晚六,每周加两天班,周末大小周。

他说转正了就会高一些。

另一个朋友就问转正了有多少。他报了一个数字之后我们就开始劝他要么转行要么跳槽。

他不听劝。因为入行第二天就开始准备跳槽了,就是工资被扣了一个月,实习期过了一次性结算。

所以,有前途吗?

我看没有。

有钱途吗?

我看也没有。

所以,乘着还没有陷进去,赶紧跳槽吧。

至于选什么方向,目前来说:

人工智能大数据物联网 > 操作系统游戏开发 > 软件网页小程序开发

至于选什么公司:

BAT、美团、网易、字节跳动、京东 > 前沿领域创业公司,拿了不少融资的那种 > 互联网领域中小型企业 > 外包公司 > 传统行业伪互联网企业

所以说最最好的地方还是BATJ大厂,所以我整理了最新的BATJ面试资料和笔试题。

需要的朋友可以点击:点这个!点这个!,暗号:csdn。

在这里插入图片描述

如果你现在技术达不到那个要求,没关系,接下来我就讲讲程序员如何通过空余时间提升自己。

程序员如何通过空余时间提升自己?

一个人的能力就像一个池塘,不断的输入又不断地输出,水池的容量以及水的质量决定了输出的高效与否,输入大于输出,你的池塘就会不断扩大,换句话说你会的技能就越来越多,只输入不输出,你的池塘就是一滩浑浊不堪的死水,一实操就bug满屏。

所以想要提升自己,就得同时做好输入和输出这两块。而输入又在输出之前,要想提升自己,首先就得做好输入,学习更多的深度知识。

根据我与很多同行交流后得出来的结论,程序员要想学习效率高,学习效果好,只需要做好下面两点最基础的事情:

- 学习基础知识
- 巩固基础知识

其中学习基础知识,又有两点要注意的:找对方向、用对方法。说的更直白一点就是学什么以及怎么学。

学什么?

首先要将基础打牢固,最基本的算法和数据结构一定要滚瓜烂熟,拿起来就能用。

比如下面这些个算法和数据结构类型就一定要熟练掌握。

10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。

10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;

不要小瞧了这小小二十组词,展开了去学,怎么都得花你个一年半载,例如单单排序算法就又可以分为以下十种:
在这里插入图片描述

然后,当将这些基础知识吃透了之后,注意是吃透,至少得做到要用到的时候就能直接用不用回去再翻书,你就可以去学习一些更深入的内容:

比如:

  • 编程框架是如何运转起来并输出“Hello World”的?
  • 如何让自己更正规,更有章法地使用Mysql呢?
  • Key、List、Hash、Set、ScoreSet各自的使用场景有何不同?
  • 主流的编程框架都和设计模式相关,那他们有没有共通性?

当你把这些问题想清楚了的时候,你的程序员进阶之路就走了一半了。

如果你有java基础,但是实在没有一个清晰地学习路线。可以看看下面这张图,内容太多了,所以就没有全部打开。

需要的朋友可以点击:点这个!点这个!,暗号:csdn。

在这里插入图片描述

怎么学?

每个人的学习方法都不一样,有的人喜欢边做项目边学习,有的人则喜欢学一段时间做一个项目,有的人喜欢看书学,有的人喜欢看视频学,这些都不是问题,重要的是找到适合你自己的。

但下面这几点,最好还是不要去做了,因为我带了这么多人,敢这样做的都是事倍功半,结果惨不忍睹。

1.一味的对着别人的代码去敲。

刚开始不会做只有跟着别人敲,这不是问题,问题是跟着别人敲了之后你要自己理解自己记忆把它变成自己的东西。照着别人代码敲一遍两遍哪怕三遍,除了让你看得仔细点,练了打字外并没有其它任何帮助。

因为模仿复现不是关键,思考才是关键。你要能做到思考学习别人思路后,脱离书本和博客,完全自己实现功能。只有这样,你的学习才是有效的。

2.想着一口气吃成个胖子

这一块的情况稍微少见,但也不是没有,有的人急于求成,学习只学个大概只求个会用,没有做到知其然还知其所以然。

一个典型的例子,我两年前带的应届生,北京一所高校来的。当时他做的那部分出了点问题,我就推荐了一本书给他,让他看完后把这个问题解决,因为不是很急,我说一个星期搞定就行了。结果两天后,他就跑过来跟我说书看完了,问题也解决了。我问他怎么做的,他说他看了个大概后直接照着书上做了。

技术这玩意儿,不是看了个大概能照着做就会了,一口气吃不成个胖子,必须得扎扎实实地把事情做好。所以不要试图一次性解决所有问题,这里给个建议:可以将每天的学习过程拆分成小块,分阶段学习,这样的效率会更高些。

说完了第一点如何学习基础知识,接下来说说第二点如何巩固基础知识。方法千千万,最有效的我认为还是刷题,有方法的刷题。

下面这个刷题方法很普通但也很实用,推荐给你:

第一遍:可以先思考,之后看参考答案刷,结合其他人的题解刷。思考、总结并掌握本题的类型,思考方式,最优题解。

第二遍:先思考,回忆最优解法,并与之前自己写过的解答作比对,总结问题和方法。

第三遍:提升刷题速度,拿出一个题,就能够知道其考察重点,解题方法,在短时间内写出解答。

在学习的过程中,希望你能做到下面三点:

  • 让编程成为一种习惯。
  • 学练结合,从做项目中找知识漏洞。
  • 思考更深层次,更底端的东西。

因为只有这样,你的这方池塘才能生生不息,源源不绝。

你也应该庆幸自己没有去传统行业为互联网企业,外包公司好歹还有真的项目可以做,可以练手,有利于你的技术提升。

如果你觉得公司的项目太重复,提升不大,可以试试下面这三种方法:

1.做一些实操性强的个人项目,自己练练手

田纳西大学助理教授奥斯汀·亨利结合自身经验,给出了一份“程序员都应该尝试的挑战性项目”清单,包含下面六个项目,我之前做了一遍觉得还不错,推荐给大家:

  • 文本编辑器
  • 2D游戏-太空侵略者
  • 编译器-Tiny BASIC
  • 迷你操作系统
  • 电子表格
  • 电子游戏机模拟器

每一个项目都存在不同的挑战,比如文本编辑器就要求在不使用GUI框架中内置的文本框组件的情况下,搭建支持光标移动、选择、插入和删除操作的文本框并将文本文档存储在内存中。

如果你能解决掉这些项目中的这些问题,然后把项目独立完整的做出来并且运行成功,你的能力肯定能再上一个台阶。

2.写技术文章

大家想必都知道费曼技巧,这也是其中的一种应用了,把你自己弄懂的东西教给别人,让别人也能看懂,在这个过程中你肯定还是要把一个完整的项目给做出来的,一整套下来,你会将自己理解的东西掌握的更透彻更深入。

也算是一种不错的实操方式了,能让你的基础更加牢固。

3.接一些开发兼职

这是三种方法中实操性最强的一种了,没有之一。

而且不用说,这也是最快最有效的方法了,毕竟编程这件事,光有理论是不够的,动手实践才是关键也是最终目的。

但兼职也有很多坑很多小门道,你首先得注意项目是不是靠谱,像那种没有需求文档的就不要接了。

最后

提供免费的Java架构学习资料,学习技术内容包含有:Spring,Dubbo,MyBatis, RPC, 源码分析,高并发、高性能、分布式,性能优化,微服务 高级架构开发等等。

需要的朋友可以点击:点这个!点这个!,暗号:csdn。

还有Java核心知识点+全套架构师学习资料和视频+一线大厂面试宝典+面试简历模板可以领取+阿里美团网易腾讯小米爱奇艺快手哔哩哔哩面试题+Spring源码合集+Java架构实战电子书+2020年最新大厂面试题。
在这里插入图片描述