十月,金秋季节,本是丰收之时,却因为陆续有同事离职,心中多少有些悲凉之意,顿然想起从参加工作到现在,五年已过,当年青涩懵懂的小年轻,如今出街招摇过市时,被小孩子看到都会喊声大叔。回想这五年,有心酸和无奈、有快乐和期待、也有不断的蜕变和成长。趁着国庆长假,写下这一路的心路历程,于己,是一个总结和督促,于读者,是一个故事,兼听则明,希望对你们有些许启发,足矣。
1. 毕业 = 失业?有可能的
2013 年 6 月底,虽然此前早已被某软(国内最大的软件开发商)的政府事业部录用并被寄以厚望要培养成核心人员,但出于对乡土的眷恋和对南方的热爱,还没领到毕业证的我, 怀着极大的憧憬,拖着一个行李箱,兜里怀揣着几百块钱,坐了三十多个小时的绿皮从山东回到广州。
“初来乍到,请多多指教”,踏入广州那一刻,我满怀热情的对广州说。
本以为,作为 985/211 大学毕业的我,在国内最大的软件服务商被寄予厚望的我,在广州应该也是个热饽饽,不愁吃不愁穿不愁 offer 的。然而现实是广州的公司对我并没有多多指教,而是多多抛弃。
到广州第二天,我就开始海投简历,可能是 985 的原因,我得到了不少的面试通知,忙的不亦乐乎,可结果却是事与愿违,有些是嫌弃没经验,有些是因为基础还不够好,有些是因为技术要求高 … 林林总总,总而言之就是 offer 一个都没拿到,以致到后面自己信心都丧失了,一再降低标准,修改简历,改成实习生、甚至跟着舍友学了几天 AS3,投一些游戏公司的简历,可惜都没用。
每次回到住处,舍友就关切的问“还没拿到 offer 吗?”每次打电话回家,家里人都问“找到工作了吗?待遇怎样?”甚至到最后,家人已经对我失去了信心,打电话来说“我们想去旅游,要不你回来看一下家,反正你也找不到工作的”。…. 各种打击,内心充满了伤毕业前满满的希望,想要凭借自己的实力,掌控一切,至少,至少也能找到一份很好的工作,如今现实摆在眼前,毕业 = 失业,对于我来说,这不是假设,而是真命题。住处是个只有 10 平米的单间,却住着三个人,两个人睡床上,我睡在床边的地铺上,每当夜深人静的时候,总能感觉到地板里传来的寒气,直接渗入体内,刺骨的凉让我彻夜难眠,我想挣脱这一切,我想摆脱这样的困境,更加努力的准备面试笔试,无论待遇的高低、无论公司的大小、无论距离的远近,只要给发我面试通知,我都会去面试。
记得最困难的时候,几乎身无分文,没有能力办信用卡,也不敢问家里要,每天的中午饭都是舍友从公司带回来的盒饭,晚饭就去住处旁边一家三个菜 8 块钱、饭和刷锅水免费随便吃喝的小店解决。有一次和大学舍友聊天,说到此事,舍友说我给你打 500 块钱来吧,因为异地异行取款要收 10 块钱手续费,为省下这 10 块钱我走到三公里外的银行才把钱取回来(那时候还没有摩拜、ofo 之类的共享单车)。
最终功夫不负有心人,7 月的尾巴,中山大学旁边的一家小型外包公司给我发来了 offer,那一刻,感觉出人头地了,一切都变得那么亲切,天是那么的蓝,空气是那么的清新,地沟油是那么的香,就连我睡的地板,传来的都是凉爽。
笔者建议:
作为一名毕业生,千万不要高估自己的实力,过去的辉煌代表着过去,对于每一次面试,都必须抱着谦虚的心认真的去对待。
不同城市对毕业生的需求不一样,北方的公司(北京、大连、济南等)更看重 985 学校的身份,认为你是一个潜力股,因此在北方公司的简历,多写些在学校获得荣誉能对面试加不少分。而南方的公司(广州、深圳等)则更注重你当前能为公司做些什么具体的工作,产生多少的效益,因此在南方的公司的简历里,多写你的项目经验、实习经验,会对面试加分。当然这只是个人经历总结,不能以偏概全,权当是一个参考吧,笔者更加倾向于针对每个公司都有不同的简历内容,摸清公司的招聘喜好,有助于你找到心仪的工作。
一定要坚定自己的方向,不要因为工作不好找,就转向其它方向,这样只会让你浪费更多的时间更多的精力,得不偿失。
2. offer= 工作?不一定!
我迫不及待的告知亲友,仿佛这件事值得举国同庆一般。可能太开心的缘故:
上班第一天: 我就迟到了几分钟,我的上级见到我,也没说什么,就交给了一个任务:“用 ssh 写个简易博客”,看字面是个非常简单的任务,但由于只给了一句话,其它什么都没有,连要有什么功能、界面大概做成什么样都没有,这就增加了难度,于是我先到网站找一些管理系统的前端模板,过程非常犹豫不决,感觉 bootstrap 的兼容性不好、感觉 easyUI 又太大材小用、感觉 …
上班第二天:没有迟到,但惊慌地发现:上级比我早到,我赶紧跑到座位,这时上级也转过身来“进展怎样了?”,我赶紧说:嗯,框架搭建好了,已经实现了部分功能。说完自己都心虚,还想着今天再花点时间找个好模板呢,真慌,赶紧随便找了个模板,就开始搭建开发环境,下载 eclipse、下载 jdk… 发现网络特差,于是等待等待等待,直到下午终于弄好了,草草建了个 ssh 项目,就开始编码,没多久就下班了,我也没加班,想着来日方长呢。
上班第三天:一到公司,上级就说进展怎样,给我演示一下吧,顿时心慌,只能硬着头皮把项目跑起来,他把我做的仅有的一点点功能看了一遍之后,就走了,没过多久,hr 走过来,递给我 100 元:
**“不好意思,三天的考察期到了,你不符合我们的预期,这是公司给你三天工作的一点补偿”“为什么?为什么?具体什么原因?我不要这钱,请相关的人给我说明一下”我愤愤不平的说,“这是领导的意思,我也不是很清楚,你看就先把钱拿着吧收拾收拾回去吧”。她把钱放到我桌面上就走了。**
我伤心到了极点,坐在我前面座位的已经成为“前上级”的那位他也没有回头跟我说一句话,也没有说任何原因,我更加愤怒,直接到经理办公室敲门进去问总经理为什么这样对我。
经理示意我坐下来,不要生气:“小 X 啊,你不要伤心啊,三百六十行,行行出状元,你长得又高,身材挺拔,外表也阳光,其实你去做保险业务员会很有前途,写代码这个工作并不是很适合你啊,我跟你讲个故事,我大学一个宿舍的同学,毕业之后,我写代码,他跑业务,现在已经做到大区经理,开保时捷了 …”
听到这些,我的心已经凉凉,再讨公道已经没有意义,在一家不被老板认同的公司,注定是不会长久了,我说了句“谢谢老板这 3 天的照顾,希望公司早日上市(当然后来我每年都去查一下这家公司的经营状况,终于在第三年的时候倒闭了)”,就回到我的座位上默默的收拾东西,关电脑,临走时决定把那 100 块钱带了。
笔者建议:
千万不要认为 offer 拿到手就是铁饭碗了,每个新员工都会有几天的考察期和 3~6 个月的试用期,只有过了这两个期,你才是真正的受到《合同法》保护的,除此之外,两期之内,公司要开除你,也不需要付出什么代价的。
作为一名新员工,初来乍到,一定要谦虚地和老同事多打交道,多请教,如果我拿到任务之后,不是自己闷头做,而是多请教老同事怎么做;开发软件的下载,公司一般都会有相应的 ftp 工具库,省去很多搭建时间,提高开发效率。
对于新员工来说,你的上级就是你两期内的神,如果不讨好他,你会为此付出代价的。
一些常识不能少:比如不要迟到,比如进度慢了要主动加班 …
3. 困境 = 绝境?只有努力
怀揣着 100 元巨款,我回到住处附近,点了份平时舍不得吃的最贵的猪脚饭,一点味道都没有,回到住处,舍友问我怎么中午就回来了,我说“我被开了”,鼻子有点酸,差点哭了,舍友不敢多问,赶紧让我先休息会。我躺在地板上,脑子一片空白。
我该怎么对我的父母说我被开了。我该怎么面对那些关心我的人。我该怎么找工作。我真的那么差劲吗。我真的不适合写代码吗。也许 …
没有过不去的坎,只有过不去的自己;再伤心也得努力,躺了一会地板之后,起来继续投简历,这次我注重所投公司的专注的行业,挑选一些自己喜欢的行业去投,比如做体育、电商类的公司,第二天就得到了一个面试通知,我把一切都准备的好好的,还提前半个小时到面试公司楼下,是在小区里的一个公司,进门那一瞬间,有点小失望,一个家庭作坊的样子,大厅摆着几台电脑,两个员工在那盯着屏幕,我说来面试的,一个 hr 样子的女生就起来进去,一会带出来一个高个子领导样子的中年男子,笑眯眯的叫我进他办公室,问了一些基础问题之后,就给我讲了现在公司的状况(我进来就是二号员工)、公司业务(体育彩票类,我喜欢)、福利待遇(实习工资 2.5k????)、还有我进来之后要做的事情 … 讲完之后,就让我回去等通知。
两天之后,就顺利收到了 offer,虽然工资很低,但因为是我喜欢的行业,再者目前找工作困难,我没多想,就答应了。
经过了前一份工作的洗礼之后,我对这份工作特别珍惜,每天提前半小时到办公室,不懂的东西就缠着仅有的一位同事给我讲,以前没学过的知识晚上回来加班加点学习(至今还记得舍友睡了我还趴在地上敲着电脑,中秋那一夜,月亮特别亮),老板让我做的东西,我主动每天下班前都发一份邮件附上今天所做的内容给老板,以此坚持了一个月,到后面,老板说你不用写那么认真,大概列一下工作内容告诉我就行。
第一个月,拿了 1.6k 的工资,虽然少的可怜,还不如一个端盘子的拿得多,但收到短信的那一刻,有种热泪盈眶的感觉,我终于可以靠自己的本事拿到第一份薪水了(上次的 100 块钱更像是耻辱,而不是薪水),为了不让家里担心,我打电话跟爸妈说我领了 4k 工资。
到实习期满,老板给我开了 5k 的工资,对我说之前给你这么低的薪水,是故意考察你的,想不到你能坚持下来并且把事情做得很好,现在这个工资才是符合你的工作能力和态度。
笔者建议:
毕业生找工作是一件很困难的事情,尤其是在准备不周到的情况下,你需要对自己的能力、兴趣做一个评估,投简历也要圈一个行业、公司实力的范围,这样你才更有胜算。
工作是一件持久的事情,你需要有持续的付出,领导才会看得到,才会得到回报。
人生本来就是困难,困境之下,你依然需要努力,再坚持一下,说不定就是出路了。
4. 工作 = 薪水?太肤浅
经过实习期之后,一切步入正轨,对于领导安排的一切事情,我都充满兴趣的去做。
一开始的工作是做 iOS APP,此前我都是做 Java,没办法,我花了两个通宵装了个黑苹果学了一周之后,领导就给我 Mac Air 开始开发 iOS,压力和动力并存,那时心无旁骛,只想着怎么把事情做好,那时候公司甚至还没有 UI,我就求着那位会 UI 的全栈同事给我切图,写代码时遇到难题我就骚扰大学舍友(有两个舍友做 iOS)解答,历时三个半月终于完成了第一版本,上线那晚上,我们出去庆祝了一番。通过这个项目,我学会了 iOS(虽然现在已经忘得差不多了)。
2014 年初,那时候 H5 刚刚火起来,领导让我尝试把 APP 的内容做到 H5 中,仅仅在大学学过一点 HTML+CSS 的我,接受了这个项目,花了一个月我才开发出第一个业务,之后几乎每周就能增加一个业务,通过做这个项目,我学会了 PHP,同时加强了前端的技术能力以及势头很猛的 H5 开发。
公司接到一个集成的项目,需要去 A 城对接,说到要安排人出差时,我想到这也是一个很不错的学习机会,于是很快就举手申请出差,出差一个月,我负责 web 项目的对接,当时有个非常困难的问题摆在眼前,那就是有一些非常复杂的涉及到较多算法的业务以前根本没开发,现在甲方要求有,我硬着头皮研究,领导天天打电话来问有没有头绪,甲方也在问,最终一周多的时间之后,终于解决,因为这次任务的完美完成,出差回来之后,领导直接把我的工资提到 7k,当然不仅仅是薪水,通过这次出差,我不仅学会了项目对接的一些流程,还学了一些高深的算法,还趁这个机会把 A 城中的所有大学同学见了个遍。
甚至有一次,领导让我帮忙去投标,我也跟着去见识了一番,往后的日子了,说到项目投标,我都知道大概是怎么个回事了。
就这样,时间过得很快,转眼来到了 2014 年的夏天,从毕业到现在快一年的时间里,我从来没在意过自己的钱有多少,也没想过有什么假期,基本上就是朝九晚十一并且每周六天班,我只是不断的努力,不断的学习,不断地的汲取一切能学习到的知识,不知不觉地,我的知识库中已经增加了 iOS、PHP、HTML、CSS、JavaScript 等语言,而我的待遇也大幅度的提高,到了我之前没想过的高度。
笔者建议:
作为刚入行的你,薪水对你来说并不意味着更多,放下那该死的薪水吧,好好沉淀自己,如果你盯着薪水工作,那就太肤浅了。
要抓住一切机会学习,只有不断的学习,才会不断的提高,你的努力,随着时间迁移,一切会回馈给你的。
5. 编程 = 工作?多挖掘潜能
当我逐渐的掌握更多技能和得到更好的待遇的时候,我的心态也发生了改变,一年前闷头闷脑写代码的我,因为渐渐的成熟以及公司的转变,得到了其他方面的锻炼,比如面试、带新人、带小团队。
有些人说我是技术宅,我只想钻研技术,做其他的事情会浪费我的时间,而且我也不喜欢
其实这种想法是不对的,无论你以后的路子是要成为技术大咖还是进入管理层,首先有要技术,这确实是永恒不变的先决条件,但与人交往,并不是一种浪费时间的行为,而是另一种方式让你汲取知识和技术的途径,比如这些年,我面试过的人,少说有三五百了,最疯狂的一天面试了 6 个人(作为技术人员,当然不能和 hr 比啦)。
面试者的群体中,有还没毕业的、有刚毕业一年的、也有毕业十多年的,不管哪个层次的面试者,与之交谈,是一种自我回顾和自我提升的途径,与年幼者(技术层面)面试,会使我的基础知识得到一次回顾和巩固,与年长者(技术层面)面试,会使我的知识深度和广度得到一次拓展和加深。记得在我工作的第三年就面试过好几个工作十多年的老程序员,那时候初生牛犊不怕虎,我拿着简历就冲进面试室,让大牛先来个自我介绍,当听到他提到自己有多少开源项目,GitHub 有多少 star,在什么开源论坛上写过博客时,顿时感觉自己渺小到无地自容,幸好大牛面善心不恶,不但没有拆穿我,把我提的问题回答的通通透透,还顺便把知识点延伸出去,那些我根本没听过的技术,知道但是不了解的技术,都给我理了一遍,顿时觉得免费听了一节高级技术课,抵得上自己学习一个星期了。
因此技术固然重要,但一个人的力量太单薄,无论你的同事、朋友还是面试者,只要你肯与之交流、探讨,有时候会比自己一个人闭关苦读效率要高得多。
我发现有那么一批老程序员群体,他们年纪都在 30 多岁,地中海就不说了,在公司属于技术骨干,平时露面不多,但一露面给我们讲课,都是口吃很严重的,一个 spring 都要分开发音 s~s~s~pring,虽然我不确定是不是天生如此,但是有那么一段时间,需要我破解一个难题,大约有一个月的时间吧,我都是处于一种思考~ 敲代码~ 思考~ 敲代码的状态,一天下来,除了上厕所和打水,就没动过,更别说说话了,后来任务完成后放松下来,想和同事唠唠嗑,却发现发言有点吃力,总感觉讲不出话来,只能断断续续的说一些..h~h~h~tml,瞬间感觉自己要完了。
因此你不能认为工作就是写代码,其它与你无关,当你把面向外界的窗户关上的时候,你就会渐渐地于外界脱节,你所有的潜能和时间,也仅换成那些可能有用也可能没用的代码和一点点薪水而已。
说实话的,我很喜欢技术,但技术不是终点;我喜欢和 PM 谈需求,喜欢和技术聊代码,喜欢和 hr 规划招人,也喜欢参与集体活动,因为这些都能让我学到很多东西,技术的、产品的、运营的、行政的 … 当你投入去做好每一件事的背后,收获都是超乎你想象的,有些同事来公司两年了,可能还有不少运营的同事不认识的,有些同事明明对公司做了很大的贡献,可老板都叫不出姓名来,这就显得有点悲凉了。
因此不要抗拒和外界接触,你需要与外界交流,方能知自己的潜力和兴趣,你过去的爱好是写代码,或许仅仅是因为你觉得玩游戏很酷,想自己造一款游戏呢;又或许是因为你发现淘宝很赚钱,想自己写个网页出来卖东西呢;又或许是你哥哥在你面前炫耀那看起来很恐怖的控制台输出把你迷倒了呢;过去不等于现在,当你涉足的东西越多的时候,就越容易摸清自己更喜欢什么,就像我有朋友从游戏转到产品,也有从戏剧转到游戏,甚至还有从写代码转到了空少的 …
笔者建议:
工作不能仅仅是工作,它也不是仅仅为了你的技术有长进和获得更多的薪水,实际上,再多的薪水,你也是打工的,也有被老板炒掉的风险,有失业的可能,只有在工作中,学习更多的技术和技术之外的知识,以后的道路才会更宽广,也更平坦。
技术成长有很多种方式,我们往往会选择闭关修行的方式,但实际上,如果你懂得怎么学习,任何场合下,都会让你学到更多的技术和其它的能力。
技多不压身,只有经历更多多元化的工作内容,你才知道自己的真爱是那一行,只有做自己喜欢的工作,才能做得快乐、长久。
6. 编程 = 未来?身体第一
时间来到了第四年,我依然喜欢写代码、经常加班、甚至有时候通宵达旦的编码,然而,身体素质相比五年前已经差了很多,记得刚毕业时,压力动力都有,每天几乎都是十一点过后才打车回家,睡一觉第二天照样精神抖擞的上班去,如今身体渐渐地变得不经折腾,加班一次回来累得不想动,早上睡到醒不来,爬个楼梯都气喘不止。
< 又一程序员 996 加班猝死 >、《又一个程序员倒下》、《34 岁程序员猝死:年轻人,谁为你的过劳死买单?》、《又一名程序员倒下,内心悲哀:我们只是新时代农民工》、《华为程序员跳楼,难道这就是我的 35 岁?》…. 程序员死亡这种新闻在网上已经是屡见不鲜了,有人可能认为我吃得好睡的香身体棒棒的,猝死离我还很远,其实不然,程序员长期与电脑作伴,一天坐在电脑前脑力风暴十几个小时,对身心的摧残都是极大的,刚开始工作可能感觉没什么,但是随着年龄的慢慢增大以及久坐不动,地中海、啤酒肚、四眼仔、鼠标手 … 等就不知不觉的伤身了。
因此不要认为年轻就是资本,如果不注意劳逸结合,不注意休息,不注意经常运动,用不了几年,麻烦就找上门了。
可能是压力大的原因,从上个月开始,每天中午休息的时候都觉得头脑发胀、睡不着,到了下午就变成了偏头痛,整个右脑处于瘫痪状态,时不时还出现心悸的现象,那时候顿时感觉人生已经没有什么意义了,连身体都照顾不好,写再多代码,赚更多钱又有什么用,后来狠心决定每天早起半个小时去公园跑步,坚持了半个月之后,之前那些不舒服,都慢慢地恢复正常,工作起来效率更高了。
因此,健身绝对不能成为浪费时间的理由,一副好的身心,能帮你提高不少的工作效率,事半功倍。
笔者建议:
不要像我这等到身体出问题才去健身,一定要坚持坚持再坚持,去健身!!!
身体是革命的本钱,你要超越别人,不仅仅是技术,还要时间,还要有一个好身体,有一个健康的躯体,是你成功的强大后盾。
7. 附上一份技术清单
在毕业之前,很多学生都很迷茫但也很好奇,那些炫酷复杂的商城网站,那些硕果累累的技术博客,要是我也想做出一个来,都需要学那些知识呀,下面,我就做一个简单的 Javaweb 项目所需的技术列出一个技术清单,仅限我个人的经验,列举一些比较常见的技术而已,希望对大家有帮助。
1. 前端:
语言:HTML+CSS+JavaScript 开发工具:webstorm/vscode 调试器:Chrome
学会 HTML 的常用标签、元素、以及它们的属性。
学会 CSS 的基本语法、各种样式的使用,理解 CSS 的盒子模型、文档流,会用定位、浮动和清除等常见的知识点。
学会 js 的基础(变量、函数、数组、字符串等)、理解 JavaScript 的面向对象思想;会用一些常用的 js 库(如 jQuery、bootstrap 等);能用 js 写出一些常用的插件(轮播组件、选项卡等)。
能用 HTML+CSS 编写网页,实现基本的网页布局,能用 JavaScript+CSS 编写常用的动效,能用 ajax 实现和后台接口的数据交互。
会用 Chrome 做开发调试以及简单的性能调试。
2. 后台:
语言:spring、SpringMVC/springboot 开发工具:eclipse/idea 调试工具:Chrome
了解 Java 起源和发展史以及语言特性,理解 jdk 和 jre,学会配置 Java 开发环境。
学会 Java 基础,包括标识符、常量变量、关键字、标识符、数据类型、运算符、流程控制语句、数组、方法等。
理解 Java 面向对象的思想,理解类和对象的概念,理解面向对象的三大特性(封装、继承、多态),理解 this 和 super 的区别和使用,理解 Java 的接口、内部类、抽象类等。
会用一些常用的 Java 类(Object、String、Arrays、Math、Date、SystemDateFormate、Calendar 以及一些包装类等)。
学会一些 Java 的高级特性,集合、多线程、IO 等,还有反射的原理和使用。
学会至少一种 Javaweb 的开发框架(spring、springmvc、springboot 等)
学会使用 eclipse 或 idea 创建 web 项目以及常用的开发流程、还有一些快捷键的使用。
3. 数据库
数据库:Oracle/MySQL、Redis/mongdb
开发工具:Navicat、Redis 命令行
学会至少一种关系型数据库(Oracle、MySQL 等),和一种非关系型数据库(Redis、mongdb 等)
学会关系型数据库相关的理论和基础知识,学会非关系型数据的原理以及优势。
学会 SQL 的基本操作如数据库表、视图、索引的增删改查操作。
学会 SQL 的一些高级特性如锁、函数、触发器等。
会用 Navicat 等 SQL 客户端连接工具进行数据库的操作。
具备一些 SQL 性能优化的能力。
4. 版本控制:
git/svn/Cornerstone
理解版本控制的原理和应用场景,理解数据仓库中各个库的作用和使用方式。
熟悉 git 常用的操作命令(创建本地 / 远程分支、查看本地 / 远程分支、切换分支、提交版本、回滚、合并版本、拉取和推送分支等)。
5. 项目构建工具:
gradle/maven
这个就不多说了,项目开发必备的工具,至少得学会其中一种。
6. 运行环境:
Tomcat、nginx
了解 Tomcat 的组成和运行原理,理解 server.xml 各个熟悉的配置
学会查看和分析 Tomcat 的项目运行日志
学会在 Tomcat 中部署 Java 项目
了解 nginx 的原理和作用,学会安装 nginx
学会 nginx 的项目配置
7. 服务器环境:
Linux
了解 Linux 的基本原理和一些常用的命令
能在 Linux 是安装 jdk、Tomcat、nginx 等 web 程序必备的软件
学会一些服务器性能调优的命令
一念之下发此文,不为名不为利,只愿与君共勉。
觉得本文对你有帮助?请分享给更多人关注「编程无界」,提升装逼技能