我的十年编程路 序
算起来,从决定并从事编程开始,已十年有余了。
这十年是怎么算的呢?
我的本科是从2009年至2013年,现在回想起来,应该是从2012年下半年,也就是大四还未正式开始的时候决定从事Android开发。参加了培训班,就是很流行的那种可以先贷款参加培训。先是培训上课,然后工作“包分配”,其实就是辅助修改+投简历,工作后再慢慢还款的过程。
但实际上呢,我参加培训确实也走了贷款过程,但最终的工作仍然留在那家培训公司,做助教。所以也算是找到了一份工作,再后面就是还款的正常流程了。
我记得那是在12年的夏天,开始参加实训。到差不多年底的时候,就做起了助教。所以到今天为止,总的工作年限可以算是有十年了。
这也是“我的十年编程路”系列文章的缘起。回想自己过去的十年,虽小有所成,但也走过一些弯路。相信做为“过来人”,都不希望看到年轻人走自己的弯路,反正我是这样想的。所以写下一些文字,这些文字就是我这十年来的经历以及复盘。回看自己哪里做得不足,想想现在的自己有没有从过去的经历里走出来,学到点什么。再就是给所有读到这些文字的人一个启发,如果有可能,避开我失误的部分。也就是取我的精华,去我的糟粕。
如果哪里的文字有触动到你,那将是我十分荣幸的事。
接下来,我将以年份为单位总结每一年的工作。第一年,也就是2013年,就是下一篇文章要详细纪录的年份。但是,毕竟2012年我也做了一些事,助教的工作也做了一小段时间。恰好,这篇序言到此为止还略显单薄,索性现在就和各位看官说说那些发生在2012年的往事。
2012年,我在上大三。那一年的上半年尾声,总有一些培训机构来学校做宣讲。说白了就是忽悠学生去参加培训班,赚钱。一开始是打着Oracle旗号培训Java的,再后来有哪家我就记不清了,反正是直到来了一家培训Android开发的,我最终选定了这家。
如果不参加培训班,我会去做什么呢?我依稀记得那个时候我一心想做视频/图像设计,毕竟我拿过两次相关奖项;要么就是去做网络工程师,毕竟我买了全套的Cisco培训教材。但最终选择了Android开发,究其原因,一方面是宣讲的内容蛮吸引我的,另一方面就是22岁的我认为Android开发很有前景。现在看来,当初的选择还是挺正确的。
那个时候交通不如现在方便,地铁只有1号线,虽然家门口就有地铁站,但它却并不通往我的目的地,所以只能选择公交车。
早上8:30(好像是)开始上课,我最迟6:30从家里出发,步行大概10-15分钟的路,坐上公交车。大概过1个钟头,下车,再转另一辆公交车。由于另一条公交线路是城郊线路,不仅车次少,而且人多。所以单程2小时,时间还蛮紧张的。当然,下午课程结束,我还要花2个小时回家。算起来,每天有4个小时左右都要浪费在路上。那个时候,心里别提多羡慕那些工作地点离家近的人们了。
培训内容是半天 - 半天进行的,半天讲课,半天练习。内容上就先是Java基础,学到能做出个推箱子小游戏就算可以了。接下来就是Android开发,就是Android API的使用。最后呢,就是项目阶段,会选定一个App作为实战,体会团队协作编程,顺便学习SVN(对,不是Git)。
说到底还是年轻,虽然起得早,睡得晚,但每天精力都很充沛,深受那些培训老师的喜爱。再加上我自己的个性,编程能力真的突飞猛进,成为了培训班的“小大哥”。为什么是“小大哥”,因为真正的大哥是培训老师。除了常规上课和练习之外,中午的订饭工作有时也是我来做。管纪律的老师知道我离家远,考勤也不怎么追究,甚至教我说:“迟到了别说起晚了/看错表/表没电了之类的,可以说是堵车了,这样就不算迟到了。”
所以总的来说,在培训机构的小世界里,承蒙老师们的照顾,我过得很舒服,也学到了更多。
再到后来,我就成为了……助教。每天半天的学生答疑时间都是我来负责,那段时间过得比参加培训还要充实。培训老师跟我讲,培训出来基本都是赶鸭子上架,Java基础是很薄弱的,也就是停留在会调用API的阶段,再往深就不行了。而且也并不是所有常用API都会讲到,还得自己学习。
所以我利用当助教的时光啃下了《Java语言程序设计》基础篇和进阶篇两个大部头,也是我第一次感受到:当注意力投入足够的时候,是真的会错过身边的事物。有一天我在研究书中的知识,有个培训老师喊我,我是真的没听到,直到他走到我面前叫我,我才意识到他的存在。他当时很惊讶地跟我讲:“你是真的吗?”我也很无语,说“是”怕他不信,“不是”又显得我故意,不过最后还是坦率地讲了事实。
这种“投入”的状态,无论是当时的学习,还是后来的编码。直到前几年我才明白:这就是所谓的“心流”状态。在这种状态下,会感觉时间、空间仿佛都不存在了。专注于投入的事情,会感觉时间如飞一般。刚刚看时间,还是早上9点,怎么一下子就到了午饭时间?对,就是这种感觉。
内容上则既不是低水平的重复,也不是难到完全无法处理。而是游离在舒适圈稍稍远一点的位置,像登山一样,虽有难度,但可挑战。正是这种状态,是最能提升我的编程水平的状态。
另一方面,地铁线路修通了,我可以坐地铁上下班了。地铁和公交相比,时效和舒适度都上了一个台阶。我从原来的往返4小时通勤,缩短到了仅需要2小时。恰好赶上冬天,能晚起一个小时,早回家一个小时,真的挺舒服。而且面对那些初学者的问题,我终于也能够处理地游刃有余,对答如流。
但是,那种“心流”的状态渐渐的离我远去了,我觉得工作越来越没有什么挑战性,没有难度,尽是些重复性地劳动。不过,毕竟年轻,不懂得“天花板”的概念,在舒适圈里确实很舒适。
就这样,2012年便结束了。我记得冬天的时候,下了雪,公司门口和地铁站出站口的瓷砖很滑。我们戏称它为“夺命黑瓷砖”,一个不小心,就要摔一个跟头。到公司后,大家打招呼都是:“你摔了吗?”大家谈论工作的内容越来越少,闲聊神侃的时间越来越多。虽然招生仍在继续,但似乎资金出现了些问题,但具体我不知道。教学内容居然由不懂技术,也没实际教过的人来定。现在看来,公司显然需要进ICU急救一下。
面对个人舒适圈和公司的状况,我走完了2012年。如果说这一年有何得失,那就是“心流”的状态,以及对“舒适圈”的认知。
“心流”是高效工作/学习的最佳状态,突破舒适圈,在其周围“登山”,是突破自己的最佳方式。
现在的我,如何确定一件事值不值得做呢?就要看这件事本身是否处于舒适圈外,不然就是低水平的重复,做来无味。想要让自己投入做一件事,如果周围环境比较嘈杂,就戴个降噪耳机,却不放任何内容,或放白噪音。目的就是不受打扰,让自己处于“心流”状态。
如果你也像快速成长,高效应对工作和学习,不妨试试我的方法,希望这些技巧能真的帮到你。
相关文章:
我的十年编程路 序
算起来,从决定并从事编程开始,已十年有余了。 这十年是怎么算的呢? 我的本科是从2009年至2013年,现在回想起来,应该是从2012年下半年,也就是大四还未正式开始的时候决定从事Android开发。参加了培训班&am…...
xs 180
选择题(共180题,合计180.0分) 1. 你被任命为某项目的敏捷教练,为了更好的交付产品,你与团队召开会议,讨论项目过程中团队应该如何做到有效沟通。最有可能确定项目过程中主要以下列哪种方式沟通? A 团队成员在各自的办公室自行办公&#…...
时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序)
时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序) 目录 时间序列分析 | BiLSTM双向长短期记忆神经网络时间序列预测(Matlab完整程序)预测结果评价指标基本介绍完整程序参考资料预测结果 评价指标 训练集数据的R2为:0.99302 测试集数据的R2为&…...
0101基础-认证授权-springsecurity
文章目录1 基础概念1.1 认证1.2 会话1.3 jwt1.4 授权2 授权的数据模型3 RBAC3.1 基于角色的访问控制3.2 基于资源的访问控制4 名词解析4.1 SSO4.2 CAS4.3 联合登陆4.4 多端登录:同一账号不同终端登录4.5 OAuth1 基础概念 1.1 认证 认证是为了保护系统的隐私数据和…...
一文简单了解THD布局要求
一、什么是THD? THD指总谐波失真。谐波失真是指输出信号比输入信号多出的谐波成分。谐波失真是系统不完全线性造成的。所有附加谐波电平之和称为总谐波失真。总谐波失真与频率有关。一般说来,1000Hz频率处的总谐波失真最小,因此不少产品均以…...
[C++]多态
🥁作者: 华丞臧 📕专栏:【C】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉LeetCode 文章目录一、多态…...
中国版ChatGPT高潮即将到来,解密ChatGPT底层网络架构
2022年11月30日人工智能研究实验室OpenAI发布全新聊天机器人ChatGPT,在中国用户无法访问的前提下,上线仅两个月月活用户就突破了1亿。ChatGPT如同重磅炸弹,一时间火遍全球。面对这一万亿级市场机遇,在国内,无论是资本方…...
PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞
导读 近日,TiDB Cloud 发布了 Chat2Query 功能,在 TiDB Cloud 上通过自然语言提问,即可生成相应的 SQL,通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的…...
力扣-销售分析III
大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…...
U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程
U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model(官方简称 DM) 驱动架构。这个驱动模型(DM)为驱动的定义和访问接口提供了统一的方法,提高了驱动之间的兼容性以及访问的标准性。 …...
大数据算法重点
1 大数据亚线性空间算法 场景:用二进制存储一个数字N,需要log(N)的空间 问题:如果N特别大而且这样的N又特别的多,该怎么办呢? 思路:减少一些准确性,从而节省更多的空间。 解决办法:使…...
【Eclipse】The import xxxx cannot be resolved 问题解决
在Eclipse使用过程中,某一个类明明存在,但是使用import导入时,却总是提示The import xxxx cannot be resolved的错误,解决办法如下: 点击Project->Clean......
LinkWeChat系统Docker版部署注意事项
具体部署手册:https://www.yuque.com/linkwechat/help/ffi7bu注意事项:启动类配置文件路径需要修改,各个模块启动类原配置如下:.properties("spring.config.name:bootstrap", "config/run/bootstrap.yml")各个…...
【高数】不定积分之有理函数的积分
文章目录前言有理函数积分的通用解法有理函数的特殊解法前言 这个专栏开始更新高等数学的解题方法,本专栏没有特别强调概念,主要是让大家熟悉考研中的一些题型以及如何求解 关键步骤用蓝色高亮提示 总结方法用红色高亮提示 注意事项用绿色高亮提示 希望…...
Java——数组
目录 前言 一、数组的定义 二、数组声明和创建 三、三种初始化及内存分析 Java内存分析 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 四、下标越界及小结 五、数组的使用 For-Each循环 数组作方法入参 数组作返回值 六、二维数组 七…...
产品分析|虎扑APP
不同于传统的体育新闻门户网站,虎扑以篮球社区起家,在经历了从体育论坛到体育新闻网站的发展后,又逐渐回归社区发展。 目前,虎扑汇聚了大量的男性用户,俨然成为了“互联网直男的自留地”。特立独行的发展方向使得虎扑不断发展壮大,同时也使得虎扑逐渐触碰到了行业天花板。…...
有限差分法-二维泊松方程及其Matlab程序实现
2.2 偏微分方程的差分解法 2.2.1 二维泊松方程 考虑区域 Ω \Omega Ω 上的二维泊松问题: { − ( ∂ 2...
【设计模式】6.代理模式
概述 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理访问目标对象 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是:远程对象、创建开销大的对象或需要安全…...
SRC挖掘之Access验证校验的漏洞挖掘
漏洞已修复,感谢某大佬的知识分享。 任意用户密码重置->可获取全校师生个人mingan信息 开局就是信息收集。 对于挖掘edu的信息收集 1.可尝试谷歌搜索语法,获取学号信息 2. 旁站的渗透获取 3. 学校的贴吧获取(大部分都是本校学生) 当然我就是闲&a…...
GG-21 100V 5A逆功率继电器
1 用途 GG-21逆功率继电器在出现逆功率时,从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成:上磁路系统和下磁路系统。电流线圈安装在上磁路系统中,它由接在发电机某相的…...
MyBatis中#{}和${}的区别
目录 前言 1、处理参数的方式不同 2、${}的优点 3、SQL注入问题 4、like查询问题 前言 #{}和${}都可以在MyBatis中用来动态地接收参数,但二者在本质上还是有很大的区别。 1、处理参数的方式不同 ${} :预编译处理 MyBatis在处理#{}时,…...
ElementUi的使用
ElementUi使用说明 element ui安装与配置 npm i element-ui –S项目入口文件main.js 导入 Element-UI 相关资源// 导入组件库 import ElementUI from element-ui; // 导入组件相关样式 import element-ui/lib/theme-chalk/index.css; // 配置 Vue 插件 Vue.use(ElementUI);文档…...
termux手机端安装mysql(MariaDB)
目录1 下载MariaDB2 配置MariaDB3 启动MariaDB服务器查看进程pid杀死进程4 登录 Mysqltermux用户登录MySQLroot用户登录MySQL5 配置 MariaDB 远程登录创建一个可远程登录的用户:用户授权:刷新授权:6 停止 MariaDB 服务器7 可选,但…...
Python枚举类定义和使用(详解版)
一些具有特殊含义的类,其实例化对象的个数往往是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。 针对这种特殊的类,Python 3.4 中新…...
京东HBase异地多活调研
京东HBase平台架构 HBase Replication原理 HBase的Replication是基于WAL日志文件的,在主集群中的每个RegionServer上,由ReplicationSource线程来负责推送数据,在备集群的RegionServer上由ReplicationSink线程负责接收数据。ReplicationSourc…...
【LeetCode】剑指 Offer 18. 删除链表的节点(题目一) p119 -- Java Version
题目链接:https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/ 1. 题目介绍(18. 删除链表的节点) 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意&…...
SpringMVC异步请求
背景 Tomcat等应用服务器的连接线程池实际上是有限制的;每一个连接请求都会耗掉线程池的一个连接数;如果某些耗时很长的操作,如对大量数据的查询操作、调用外部系统提供的服务以及一些 IO 密集型操作等,会占用连接很长时间&#…...
这七个100%提高Python代码性能的技巧,一定要知道
B站|公众号:啥都会一点的研究生 相关阅读 整理了几个100%会踩的Python细节坑,提前防止脑血栓 整理了十个100%提高效率的Python编程技巧,更上一层楼 Python-列表,从基础到进阶用法大总结,进来查漏补缺 Python-元组&…...
计算机网络笔记、面试八股(五)—— 浏览器输入URL
本章目录5. 从输入URL到浏览器显示页面过程中都发生了什么5.1 URL输入5.2 DNS解析5.2.1 域名的等级5.2.2 DNS解析的流程5.2.3 DNS查询方式5.3 建立TCP连接5.4 发送HTTP/HTTPS请求5.5 服务器处理请求并返回HTTP响应5.6 浏览器解析渲染页面5.7 HTTP请求结束,断开TCP连…...
【速记】快速调通算法项目的环境
1.创建新的conda环境,避免把原有的环境给搞坏。 在CMD中执行,而不是在anaconda的命令行中执行: conda create -n 环境名 --offline python3.8 2.在pycharm中配置conda环境: setting->Project Interpreter->齿轮->add-&g…...
淘宝找做网站/免费网上申请注册
之前,一直想集成Dapper到项目中,但是一直没成功,今天把abp升级到最新版,然后按教程来,就可以了,呵呵 现在,基于上一篇的源码进行升级和集成dapper,将abp升级到3.8.2 官方升级文档&am…...
做外贸网站效果图/最近三天的新闻热点
Percona集群制定的服务器节点如下: node #1 hostname: pzsd01 IP: 10.1.11.14node #2 hostname: pzsd02 IP: 10.1.11.15node #3 hostname: pzsd03 IP: 10.1.11.16*先决条件 *所有节点都是安装了Linux CentOS 6.4 *防火墙关闭 *selinux disabled *安装部署percona和e…...
怎么做体育直播网站/前端性能优化
以下列出mysql函数的使用,并不完全,涉及到多少写多少。length(str):返回字符串(str)的字符长度。一个汉字算三个字符,一个数字或字母算一个字符。select length(测试); --6select length(123abc); --6char_length(str):…...
网站开发工程师职业定位/长沙正规竞价优化推荐
携带式超声波扫描仪是一种检测从物体反射的声波并将其转换为即时图像的设备。通常使用两种类型的存储器:存储器和图像/报告存储器。配备存储器存储来自外部硬件的标志和配置信息,图像/报告存储器存储图像和相应的报告数据。即使这些存储器突然断电,它们也…...
怎么用word做网站/如何在百度上做推广
公司用的邮件系统三天两头有账号被人破解,乱发垃圾邮件害死整个公司,直到我发现Fail2ban这个软件。其通过扫描日志文件,利用正则式匹配登录错误的IP地址,然后可以将IP地址列入防火墙中,以达到我的目的。 文章转载自 开…...
任何用c语言做网站/网络培训心得体会
今天在做一个功能的时候,需要把 Request.ServerVariables 属性绑定给 Repeater 控件显示,Request.ServerVariables 返回的是一个 NameValueCollection 对象,一个键值对的集合。 谷歌了一下,居然无一例外需要在 Repaeter_ItemDataB…...