热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

4年,如何从草根成长成为CTO

茫然的求索那一年,刚好经济危机,毕业了。经过了很长时间的“网上海投”而杳无音讯之后,终于发现“经济危机真的和自己有点关系了”,曾经以为

茫然的求索

 

       那一年,刚好经济危机,毕业了。经过了很长时间的“网上海投”而杳无音讯之后,终于发现“经济危机真的和自己有点关系了” ,曾经以为经济危机和自己巴刚子打不着。

 

       拿着简历,开始到处去跑招聘市场,又发现,人才招聘市场里面的计算机岗位特别少,满街的招聘销售。即便有一两家招聘技术人员的,但是又被各种“硬性指标”拦在门外。

 

 

       看着钱包里面的钱一张张的变少,没有时间郁闷,也不能待在家里,没有收入的日子,待在家里就是耗钱。武汉的夏天很热,在家里带着要吹电扇(没有空调,使用空调那是很奢侈的),另外在家里要开电脑,都费电。

 

  无奈之下,开始“地推“,开启了扫街模式:把创业街,软件园等地方的公司,一个个上门去死磕。

  记得很多次被门卫挡在外面,多次被前台美女婉拒,多次被保安赶出来,不管怎么样,最后终于找到了一个工作。

 

 

  给我的理由就是:挺有激情的,胆子蛮大的,人也很阳光,我们需要公司没有活力,招你进来调节气氛(这是多年之后,当年的HR美女跟我说的)。这应该也算是“拼颜值,靠脸吃饭了“(呵呵呵)。

  得到了一份理想的工作,同时也收到了一份馈赠---有了慢性因喉炎,因为天气热,水喝得少,干渴了,留下了这个小毛病,至今陪伴着。

 

前辈的警示

 

  终于找到了工作,工资很低,完全达不到交税的标准。

  虽然曾经在大学期间在一些公司做过项目,也参加多一些软件比赛,也在很多的IT社区回复很多的技术帖子,提升能力,但是终究没有实战经验,不管自己如何说,至少在别人眼中,你就是新兵蛋子。

 

  能力不是说出来的,是干出来的。

  在日企里面,做事比较的严格,可以明显的感受到了每天那种紧张的气氛,每天进办公室,听到的更多的都是键盘敲击的声音,虽然大家在聚在一起讨论需求,但是更多的是在会议室。即便有时候在工位上面谈论问题,大家也是很注意,尽可能的不打扰到别人。

 

  我终于明白HR美女说的那句话了,需要新人进来,注入活力。

  入职半个月左右,我旁边的一个“老程序员”,我们一般叫他----陈工,走了。来了这么久,没有和他说一句话,只是知道他40多岁了,而且是一个基础的程序员,在级别上面,Leader都算不上。听到同事在八卦,说是陈工被公司“请走了”,因为他的待遇可以请到2~3个新人…..

 

  看到陈工默默的收拾东西,轻轻的走的时候,那一刻,我思考了很多:陈工也儿女,老人要养,现在被“请走了”,怎么办?而且被请走的时候,没有看到他的反驳,换句话说,难道是真的是“弱者连谈判的权利都没有”?四十多岁,已经算是不惑之年,自己不想这样子。

 

 

  陈工的离开让我明白,至少等到我四十岁的时候,不能混成这样子。

  生存的渴望

 

  进入项目组之后,终于看到什么是一个真正的软件项目,代码的庞大完全超出了自己想象。

  不要以为有人会来“慢慢的“的教你,这不是学校,而是公司。招你进来就是来做事的,不要以”我是新人,所以我不会“来扯理由。

  要么干,要么滚。

  

  项目leader丢给我几个文档,说是数据库的结构文档,让我看熟,之后给我分配任务。陌生的业务,陌生的行业,几百张数据表,肯定是一头雾水。很想找别人去问,看到大家都忙得像啥似的,也不敢随便去打扰。 

 

  凭着自己所谓的“经验”,开始尝试理解各个表,也看着一大堆英文需求文档,开始磕磕碰碰的尝试理解需求,然后把问题都记录下来,每次看到有人在喝水,或者在上厕所了,我就马上走过去问几句。

 

  进入项目组,一直没有分配任务,心里反而着急,因为我知道公司不会养闲人,什么都做不了的话,天知道什么时候会被开除了。每天啃文档,看似轻松,心里却是度日如年。

 

  大概4天之后,我告诉leader,我把数据库表结构看熟了,也知道了系统分了那些大的模块,每个模块大致的功能是什么,更加具体的功能,就需要在项目中学习了。

 

 

  Leader也吃惊,于是让一个老员工开始带我,他开始把手头的一部分任务给我,让我尝试着做起来。心中开始有了一个大石头,因为真的要“实战”了,做一个“商业项目”。这和以前实习,比赛是完全不同的。

 

  每次任务了之后,自己开始捣鼓。很多时候发现,自己在业务的理解方面有偏差,明明上午写的代码,下午就感觉不对了,因为觉得业务应该是那样子的。于是,自己赶快急急忙忙的去修改,因为任务的时间是规定好了,必须在规定时间之前做好。

 

  于是,每天不断的琢磨,但是自己天资愚笨,很大问题搞不动。很多同事下班就走人了。但是我自己的任务没有完成,肯定走不了,也不敢走,但是有些业务点,技术点自己确实不清楚。于是就想出了一个招: 每天看自己哪些点不懂,然后看看那个同事比较对这个比较熟,只要他下班,自己就跟着他一起走,一起挤公交,走路,同时,在路上不断的请教各种问题。当把同事“送到”家之后,马上自己回到公司,开始继续捣鼓

 

 

  自己每天基本干到12点回去。回去之后,不断的反思,任务是否做好了,代码有没有问题。很多时候,感觉自己越想,问题就越多,越发感觉自己写的代码有问题。心里一惊,一夜都睡不着,早上4点起来,摸到公司,然后在上班之后,把代码改好。

 

身边的惊雷

 

  在公司呆了一个多月了,而且也开始完成一些小任务,总算是“做了点事情”,心里依然稍微好受了点,毕竟我不是闲人了。但是心里依然不踏实,因为离转正还很远,离“自如的完成任务”还很远。

 

  有一天,看到和自己一起做事的那个老员工和HR争吵,第二天,那个老员工就走了。

  我震惊了:一个月以内,我看到了两个人被请走了,而且第二个人就是和我一直做任务的同事。他有四年的经验都被请走了,我一个新人,岂不是…..

  

  HR找到我,告诉我,那个员工的走,不是因为能力问题,而是态度问题,让我不要担心,好好干,而且这一个月干的也不错。

  不管怎么样,我心里的念头就是:我要留下来。

 

  于是,我开始更拼命的做好手头每一个任务。如果自己做完了之后,反复的审核,在审核,如果自己手头任务搞完了,就看周围有没有同事需要帮忙的,不管是帮他们“填充测试数据”,还是调整文档格式,还是给他们顺手倒垃圾,我都干。

 

 

  我要留下来!!!我需要工作!!!

  困境,突破

       做任务算是上手了,也逐步的开始做一些有点难度,稍微大点的任务。当时依然发现,自己每次都是花别人几倍的时间在做,虽然自己把任务做完了,其实中途缝缝补补,反反复复的修改还是蛮多的,所以,只能通过拼时间,狂加班来向别人看齐。

       这无疑是一个很危险的信号,如果遇到更大的任务,难度在复杂一点的,那自己就死翘翘了。

 

  于是,开始给自己“定目标”:争取在每次写完一个方法,或者几个方法之后,代码一次性通过编译。

  写代码更加用心了,不再犯不必要的低级错误。而且也感到自己的能力貌似真的有点长进,因为做任务开始有“多余”时间了。

  于是,都开始给自己“定目标”:争取在写完每一个方法,类之后,功能是可以跑起来的,业务逻辑是正确的。

  然后开始一步步的坚持,到了一定的时间,认为可以了,然后定更多的目标“写完几个类之后,功能OK”,“写完一个小模块之后,功能OK“。

 

 

  慢慢的,很多的功能都一次写完,除了一些问题真的没有考虑周全,一般都OK了。在写代码过程中,之前总是拿到任务,想了之后,就开始动手,边想边写,如果不对,代码删除,重来。很显然,这又是一个作死的事情。

 

  于是,自己拿到任务之后,不着急写,而是在纸上面画几下,然后大概的列出需要几个表,需要几个类,每个类大致有那几个方法,每个方法的基本逻辑是什么样的。开始的时候,不可能想的那么多,但是依然会想一些,然后边写代码边完善。所以,以至于后来,很多同事看到我一个在座位上面静坐很长时间,不敲键盘,然后过一段时间,就噼噼啪啪的狂敲键盘。

 

 

  刚开始的时候,这样思考很难,而且时间过去了,思考的结果也不咋样,这样导致任务可能会完不成。所以,自己依然会每天起早摸黑的把这段时间补起来。

后来,慢慢的开始熟悉,发现“心里有谱了”,写代码的速度质量都提高了。后来才知道,原来自己的那种折腾就是所谓的“设计design”,原来“软件设计师”中的“设计”是有含义的。

 

思维,出击

       经过自己不断的折腾,各种尝试,不断的把各种任务完成,自己的信心也有了,也开始敢于在团队中慢慢的说出自己的一些观点和想法。

但是,很多时候,毕竟自己各方面不足,不是所有的意见都会被采纳,其实很多时候,都不会被采纳,但是自己又认为是对的。

  怎么破???

 

  这个时候,肯定不要抱怨,更加不要谩骂别人是傻逼。毕竟刚刚毕业,很多东西都摆在那里。

  信任需要一步步的积累,实力需要一点点的证明。

 

  很多时候,自己也会认为项目中的某些功能,或者技术点可以改善的更好,如果意见不被采纳,那么自己就下班之后,自己一个人开始捣鼓,自己开始验证,自己的想法是不是对的。当然,捣鼓完了之后,代码不会合并,因为要考虑到整个团队,不能随随便便擅自做主。但是作为自己,依然会去验证想法,即便最后没有不能再项目中使用,但是起码自己动手了。

 

  如果每次看到项目中的问题,我会问自己:如果这个功能是我来做,我会如何搞?

  如果看到别人带项目,带人方式有些问题,我也会问自己:如果我带人,我会怎么搞?

 

  通过现状,不断的反思自己。其实后来才知道:很多时候,不是因为你屁股上去了,你才对应的思考方法;而是你的思维先上去,等到有机会,你屁股就自然上去了,因为你一直以更高的角度在思考问题。机会是给有准备的人。

助人,助己

 

  每天都会不断的学习,看技术相关的书籍,泡论坛,逛博客。看到很多不同的言论,不同角度的解析。有时候,看完之后,甚至发现:一个知识点,很多地方的讲解都是相互矛盾的。

 

  搞的自己也很乱。因为自己一直在“吸收别人的想法”,最后很多的杂糅在一起,自己很晕。

  于是,开始自己梳理知识点,通过自己的思考,各种求证,然后把某个知识点理解,至少让自己”自圆其说“,不至于被各种言论搅晕。

  我常常用炼铁在比喻:把各种不同的矿石,丢在一个熔炉里面,这些矿石就是各种不同的知识点,各个不同的思维,流派。我们自己的到大脑就是那个炉子,需要把这些矿石全部融化,然后融合在一起,提炼出钢铁,然后把矿渣过滤出来

 

 

  自己开始不断的每天学习,也开始写很多的文章,基本是每天坚持写一篇,然后反复的推敲,看看是否有地方很牵强的,是否存在“含糊其辞”的地方。如果自己都讲不清楚,那么就不要发布,一直到自己的思路想通了,而且认为别人按照这个思路理解,可以最终想通,才把文章发布。

  开始发现,通过不断的写文章,自己很多模糊的想法都变得很清晰。

 

  也发现:一个知识点,你自己看懂了,那是一个层次;你会用,是另外一个层次;你写出来,你写出来让别人懂,那又是更高的一个层次;你用最通俗的言语,把知识点讲出来,让别人一下子明白,又是更高的一个层次

 

 

  【本文已经在InfoQ投稿,版本所有,未经授权请勿转载】


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了2019年上半年内蒙古计算机软考考试的报名通知和考试时间。考试报名时间为3月1日至3月23日,考试时间为2019年5月25日。考试分为高级、中级和初级三个级别,涵盖了多个专业资格。报名采取网上报名和网上缴费的方式进行,报考人员可登录内蒙古人事考试信息网进行报名。详细内容请点击查看。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
author-avatar
手机用户2502920725
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有