刚刚入职的小公司算法程序员的一些疑惑

2019-10-17 09:41:56 +08:00
 shicheng1993

背景

刚刚入职 4 个月的菜鸟 python 程序猿。算法方向的,公司较小,一般来讲是一个人单独负责一个小项目,所以我这边和开发走的流程不一样。不需要产品,因为他不懂我能做什么,我只要能完成需求就好了。我开发完直接自己测试,没有问题就可以上线了。没有 code review 之类的。

去到大厂的同学告诉我,去到先学安全,规范等等。比如数据库密码不能写在代码里,会直接走人的(我这边导师就这么干的)。再者像变量名字怎么取,怎么缩进,或者只要调用了一个别人的函数,就要知道其内部的实现,是否有潜在的安全或者性能问题。等等

我现在全是按照自己学校里那套野路子来的,导师也不管我,唯一来问的事就是什么时候上线。大约 2 个月的时候开始重构了自己的代码,异常痛苦,开始注意到规范,注释的重要性。

目前的困惑

1.现在没有很多的项目经验,对于一些高级的实现方式,例如各个模块的组织,怎么设计耦合性比较低,扩展性比较好,传参的标准是越多越好呢,还是越少越好,哪些应该写成一个单独的函数,结构看起来最清晰。同样的逻辑,有没有更优雅的实现。完全没有思路,全凭自己摸索。因为没有人看我的代码,直接就上线了。

2.领导都不是做算法的,只是稍微看过一点,算法水平比不上我们应届的,代码能力比我们好,但是也不会带我们写代码,也不会看我们的代码,说哪里有问题,天天就是安排任务,催进度。让我们找开源的代码能跑通,效果可以就上线。感觉越来越像一个调包工程师,算法方面周围也没有看到能带我提升的人。

目前的困惑

怎么学习到一些好的设计思想,写出的代码质量高一些?内行人看了觉得还可以,不至于野路子的感觉。

5046 次点击
所在节点    Python
16 条回复
gromit1337
2019-10-17 09:51:34 +08:00
全部粗体看的我头晕眼花...最后一句又不加粗了...
jackchao7432
2019-10-17 09:51:51 +08:00
“有人带”,典型的学生思维,职场这种想法不可取,提升只能靠自己.
Github 上那么多优秀的开源项目,不管是从架构、代码质量、设计思想恐怕都是你们公司项目不可比拟的.
knva
2019-10-17 09:56:13 +08:00
多看 多学 多练
Pho3nix
2019-10-17 10:00:07 +08:00
同小公司算法,感觉可以看一些 github/kaggle 上的项目的代码,我用的是 tf,他的一些官方教程的代码个人觉得规范性可读性很好

ps:找人打 kaggle
hisenyuan
2019-10-17 10:07:17 +08:00
代码这块了解下代码整洁之道、重构之类的思想,设计的话只能多看多实践了,设计模式的书蛮多。
HansCathy
2019-10-17 10:16:11 +08:00
1、代码规范 看下 clean code
2、高质量代码 得要设计模式、重构书
最终的是 实践
Threeinchtime
2019-10-17 10:20:06 +08:00
相同的情况,同事完全不注重代码规范,有 git 却不用,没有 code riview,产品拍脑袋就是新需求,工资还低。不过已经那了一家三线互联网公司的口头 offer,终于要脱离苦海了!!!!!!!
shicheng1993
2019-10-17 10:51:22 +08:00
@gromit1337 新手,md 刚了解,不大熟练,见谅哈
@jackchao7432 恩,明白了。我自学能力还可以,就怕不知道问题在哪里
@Pho3nix 谢谢,同事也用了一个 kaggle 的代码,说是效果不错,以后会看看这个。
@hisenyuan @HansCathy 谢谢
@Threeinchtime 现在我这边和你一样的点是:“拍脑袋就是新需求,工资还低”,哈哈,直属领导想到啥就让做啥,一会人脸,一会 nlp,一会图像分类,一会给他写个发邮件的,一会出个 csv 统计,一会写个前端界面带响应式的,后边又不用,弃掉了。大领导还不知道我在干嘛。所有东西就是口头说一下就开始干
wr410
2019-10-17 10:59:18 +08:00
举个例子,好的代码就是一个私有实现方法,然后一堆公开的多态方法
SeaRecluse
2019-10-17 11:00:48 +08:00
调包是一件幸福的事。
等要上线才知道痛苦。
lechain
2019-10-17 11:09:27 +08:00
建议楼主看一本书《程序员修炼之道》,没必要从头到尾看,先看目录,然后找对应自己需要提高的地方的章节看
gowk
2019-10-17 11:27:40 +08:00
"The only way to learn a new programming language is by writing programs in it." - Dennis Ritchie
sylvos
2019-10-17 12:43:55 +08:00
请问一下写数据库密码正确方式是怎样的
swordspoet
2019-10-17 12:49:23 +08:00
我跟你的情况太像了,现状也就是领导不大懂算法这一块,他们对业务的把控倒还可以,目前就是业务问题大多是规则为主,算法根本成不了主导,不受重视。同事也不太注意规范这一块,总是抱着“出了问题再说”的想法,结果就是工具天天出问题。我觉得这样做不行,自己还是严格要求自己,代码尽量整洁 ide,变量、注释尽量规范,这样对自己和公司都是负责任的。

还有就是提升的问题,能不能带要看领导,大多数时候还得靠自己去慢慢积累,比如说我们用 spark 在做模型训练的时候,我就对 web ui 上的那些指标有疑问,先前是问老员工,结果他们用了几年 spark 却从来没有想过彻底弄明白那些指标,所以这些得自己去学去查。然后我花了一个多月的时间啃完了一本 spark 方面的书,虽然不能保证全部弄明白,但是还是有进步,总比面对那些进度条一头雾水要好。

小公司就是这样吧,有好有坏,你可能啥都要做,这样你学习的机会也比较多,我最近又接手了一个 Java Web 的项目,在这之前我从来没有接触过,不过也好,正好可以学学 Java。

所以,自己抓紧时间积累经验学习才是最主要的,有了真正的提升才有话语权。当然运气也是很重要的。
sadfQED2
2019-10-17 12:52:10 +08:00
@sylvos apollo 这种,或者走数据库代理层,这两种都不能实现那也得写个配置文件吧
shicheng1993
2019-10-17 13:51:05 +08:00
@wr410 字面意思能理解,但是不明白能有多大的效果,java 当中是不是这样写会很有用。我当前是脚本语言用的多
@SeaRecluse 调包的意思是不想做一个只会用开源实现的算法调包工程师,希望自己可以更深入,不必从头实现,但最起码读过原论文,看了源码,明白哪里好,哪里不好。我这边上线的问题倒不是很大,我考虑的挺全的,上线一段时间,领导问我能不能加功能,其实我都早就都做完了,只是自己在关注这些指标,我多做这些功能是因为我一个人负责这个项目,按领导的思路真的有时候太单一了,想法不如我多,自己想的解决方案,我先做了,有效果,再问领导行不行。
@lechain 谢谢,有时间翻一下
@gowk 哈哈,可以的
@sylvos 15 楼说了,基本就是写个配置文件,添加.gitignore。apollo 这种云配,我司也在用,多数在业务部门。
@swordspoet 有道理,现在问题就是,我项目太紧了,每天 8 点到公司( 10 点打卡的)晚上 10 点走,只会比这更长,不会更短,走路都晕。学习的时间是个问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/610138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX