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 · 5259 次点击
    这是一个创建于 1891 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    刚刚入职 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   ·   实用小工具   ·   4031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:21 · PVG 13:21 · LAX 21:21 · JFK 00:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.