嘻嘻,终于在家的实习两周完成了mentor交付的task任务,并成功提交merge request。
我发现我真的运气很好,这几天都运气超级棒,有点害怕把运气都用光了。我遇到了个超好的mentor,会和我说be free to proceed,don’t put too much pressure on yourself。
其实mentor给我布置task任务很简单,但是你要完成,就必须要了解项目的整个流程,写完代码测试成功再考虑提交,一整套流程要下来才能算你暂时完成了task,提交上去当然也要看有没有bug,所以时间花了两周也比较久。而且可以能够感受到mentor会有意的在培养,会告诉你他一般的话怎么怎么做,这样子的情况他会怎么怎么考虑,但是不会具体到每一个步骤指导怎么做,给你充分的锻炼时间,所以在探索中学习成长,真的很感谢我优秀的mentor,这段时间学习到了好多东西,也懂得好多。
整个实习的感受就是,大家都好优秀,当你什么都不懂的时候,刚加入团队,看到团队里的成员在每天commit代码,其实内心是很慌的,但是mentor会很耐心说你慢慢来,按照你的进度,真的很感谢。
说一下我这两周的实习学习心得,给很多还没有实习的同学建议:
1、首先公司里的程序员都要有自己DBC machine,工作的话大部分程序员都会选择在服务器上使用vim。
2、公司的代码是不允许拷贝到本地的,也就是说你要在公司的服务器上操作代码,对于我而言我学习了一会儿vim还是很不习惯,就采用了vscode的ssh remote host来连接远程的服务器,能够实现在编译器上修改代码,很方便,推荐给新手程序员。
3、对于我而言,刚加入公司部门参与项目开发,开发环境的配置是非常重要的,经常会遇项目需要环境安装的各种问题,尤其在家自己一个人实习。我个人的经验就是,一定要增加自己的主观能动性,要坚持自己解决问题,实在不行,没办法继续开展实验进度的情况下询问mentor,会有很好的锻炼。在整个项目开发的过程中你会遇到很多一样的问题,比如已经有server占用端口在跑了等,后续会遇到很多类似的,自己遇到第一次的时候往往会解决了很久,但是后面就会很快的处理好,这些都是经验,所以开始的时间慢一点都是值得的。
4、坚持把每一个小问题搞明白弄懂,例如log日志,vim操作,git操作,分支,权限等等,因为作为程序员这些小问题都伴随一生,要坚持,不可以退缩。
5、要相信自己,我就有很多次遇到过困难,没办法连接我的DBCmachine的log地址导致进行log测试出现错误(需要切换到自己的Ldapuser),没有办法找到占用的进程kill掉它,lsof -i不显示(因为在其他ldapuser下进行的,所以sudo查看)等等,要相信自己,主动去询问mentor,一定可以解决的。
6、这两个星期有学到很多知识,尝试了go语言的后端开发,完成了与项目其他队员的git协同开发的尝试,我要学会感谢,我以后一定会继续加油努力。
其中开发的时候遇到的bug分析:
1、因为我的开发需要基于别人的task之上,所以当我做实验时就会发现一些问题没有办法解决,脑壳晕,部署一个testbed时间也很久,做一次实验要等很久,一度怀疑自己,和mentor说了问题,没想到误打误撞相当于做了测试,帮助fix了一些存在bug,总而言之,开发这些问题是会经常遇到的,一定要亲历亲为,从头到尾去实践,不然是不明白问题出在的地方的。
2、关于go语言的goroutine的使用。
goroutine的概念类似于线程,但 goroutine是由Go的运行时(runtime)调度和管理的。Go程序会智能地将 goroutine 中的任务合理地分配给每个CPU。Go语言之所以被称为现代化的编程语言,就是因为它在语言层面已经内置了调度和上下文切换的机制。
我在开发的时候没有使用过goroutine,直接用了多个去分别执行函数,我的mentor给我指出了错误,启动多个goroutine,他们是并发执行的,而goroutine的调度是随机的。所以会失败,虽然我的实验测试下来没有问题,但是这个很不好说,应该用一个go去顺序执行完成多个task。当你需要让某个任务并发执行的时候,你只需要把这个任务包装成一个函数,开启一个goroutine去执行这个函数就可以了
当然还有好多好多要学习的地方,道阻且长,道阻且跻,但我一点都不害怕,冲鸭,好开心,感觉离目标有越来越靠近。
啊啊啊啊,晚上还有阿里的笔试,据说两道题有难度,不知道自己能不能A掉,太慌了,求老天爷保佑,我愿拿十斤肉作为交换。