刚刚入职的小公司算法程序员的一些疑惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
shicheng1993
V2EX    Python

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

  •  
  •   shicheng1993 2019-10-17 09:41:56 +08:00 5599 次点击
    这是一个创建于 2193 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

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

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

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

    目前的困惑

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

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

    目前的困惑

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

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

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

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

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

    所以,自己抓紧时间积累经验学习才是最主要的,有了真正的提升才有话语权。当然运气也是很重要的。
    sadfQED2
        15
    sadfQED2  
       2019-10-17 12:52:10 +08:00 via Android
    @sylvos apollo 这种,或者走数据库代理层,这两种都不能实现那也得写个配置文件吧
    shicheng1993
        16
    shicheng1993  
    OP
       2019-10-17 13:51:05 +08:00
    @wr410 字面意思能理解,但是不明白能有多大的效果,java 当中是不是这样写会很有用。我当前是脚本语言用的多
    @SeaRecluse 调包的意思是不想做一个只会用开源实现的算法调包工程师,希望自己可以更深入,不必从头实现,但最起码读过原论文,看了源码,明白哪里好,哪里不好。我这边上线的问题倒不是很大,我考虑的挺全的,上线一段时间,领导问我能不能加功能,其实我都早就都做完了,只是自己在关注这些指标,我多做这些功能是因为我一个人负责这个项目,按领导的思路真的有时候太单一了,想法不如我多,自己想的解决方案,我先做了,有效果,再问领导行不行。
    @lechain 谢谢,有时间翻一下
    @gowk 哈哈,可以的
    @sylvos 15 楼说了,基本就是写个配置文件,添加.gitignore。apollo 这种云配,我司也在用,多数在业务部门。
    @swordspoet 有道理,现在问题就是,我项目太紧了,每天 8 点到公司( 10 点打卡的)晚上 10 点走,只会比这更长,不会更短,走路都晕。学习的时间是个问题。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2567 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 12:04 PVG 20:04 LAX 05:04 JFK 08:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86