V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jimxu16
V2EX  ›  程序员

后端开发,我应该怎么提升自己的水平

  •  
  •   jimxu16 · 2017-03-08 10:46:55 +08:00 · 7246 次点击
    这是一个创建于 2847 天前的主题,其中的信息可能已经有所发展或是发生改变。

    早上看到有人发的《我值多少钱》的帖子,好奇也想问一下自己的职业规划

    实际工作时间一年半,在两家电商公司工作过,都是从事的后端开发

    • 熟练使用的语言: PHP
    • 其他学习过的语言:学校里学过 C\C++\Java\数据结构,自学过一丢丢 javascript 和 node.js
    • 用过的框架: Yii 、 magento 、 Yaf
    • 用过的 IDE (或编辑器): PHPStorm 、 VSC 、 sublime 、 ATOM 、 MVIM
    • 用过的系统: Windows 系统、 OSX 系统(Linux 用不惯)
    • 主要工作: api 接口设计,与前端联调,线上 bug 修复
    • mysql 数据库的基本操作,增删查改 join 、 group 等,懂一些索引和慢查询的注意事项
    • 会使用的常用 shell 命令和常用的 Vim 命令,可以在服务器上查看 nginx 、 php 错误日志
    • 会搭建 nginx(apache)+mysql+php(+php-fpm)环境,错误日志,配置文件
    • redis 使用,配置,原子性,之前也用过 memecache

    请问:我后面应该怎么进阶学习呢

    第 1 条附言  ·  2017-03-08 23:53:20 +08:00
    补充下:现在工作的很开心,并不是要换工作所以给大家看简历,也很清楚自己不过是个刚入门的菜鸟罢了,也做好了被喷的准备。

    先简单介绍下自己:我并不是科班出身,之前也是学的生物专业,偶然机会下被实验室安排搭建网站,看视频自学的 html,css,php,觉得有意思才决定从事 IT 行业,深知自己的基础跟科班的比起来是很差劲的。

    之前第一份工作的时候,因为是校招并不要求马上投入工作,开始花了三个月时间从头开始学习的 PHP ,然后一直做的是 api 开发,公司是成熟的大公司,用的是 Yii, 平时是没有机会接触到数据库服务器的,个人感觉对自己的提升并不大,加上跟女朋友是异地,就在八个月后去上海重新找了一份工作。

    第二份工作是在一家年轻的创业公司,主要用的是 magento 框架,后期也用了其他的 php 框架,基本上只要是跟后端开发相关的东西都能接触到。包括但不限于:直接在服务器上 debug ;直接写 sql 查询;处理慢查询;设计表;写数据库升级脚本;设计 redis key ;中间经历过双十一活动也涉及到高并发时的 redis 使用和 mysql 读写;队列的使用等等。截止到目前为止已经在公司待了十个月左右,在这十个月里更加热爱后端这份工作。

    前面罗列出来的 ide 编辑器并不是觉得这些算技能什么的,想表达的是我是个十足的工具控,特别喜欢尝试各种软件。比如所有的编辑器,Alfred,oh my zsh 等等

    发帖子的原因是由于平时工作的时候还是以业务为主,感觉自己有点偏离方向了,迷茫之下找大神指点迷津。所有的评论都看过了,一些评论虽然尖锐,初看是有点不舒服,但仔细琢磨确实很有道理,让我对今后的职业规划有了更清晰的认识,在此一并感谢。
    35 条回复    2018-01-09 10:50:14 +08:00
    cncqw
        1
    cncqw  
       2017-03-08 11:29:12 +08:00   ❤️ 1
    讲真你这顶多算初级水平啊
    polun
        2
    polun  
       2017-03-08 11:31:57 +08:00
    vsc 不是 IDE 吧
    fbtfonfp
        3
    fbtfonfp  
       2017-03-08 11:33:08 +08:00
    用不惯 Linux 怎么解决本地和线上环境差异问题。。
    lwbjing
        4
    lwbjing  
       2017-03-08 11:35:33 +08:00
    把“用过”改成“研究过”..
    wangxn
        5
    wangxn  
       2017-03-08 11:37:45 +08:00 via Android
    感觉没什么出彩的
    iot
        6
    iot  
       2017-03-08 11:43:35 +08:00   ❤️ 1
    treedon
        7
    treedon  
       2017-03-08 11:48:06 +08:00
    linux 用不惯...
    这一句话 就看出水平了
    edison111cry
        8
    edison111cry  
       2017-03-08 11:48:12 +08:00   ❤️ 1
    想问一下楼主目前多少 K ,在哪个城市
    amghost
        9
    amghost  
       2017-03-08 12:13:52 +08:00 via iPhone   ❤️ 1
    我也工作一年半,我带的新人和你差不多
    kenshinhu
        10
    kenshinhu  
       2017-03-08 12:37:03 +08:00
    Linux 用不惯 这个可以说,在日常休闲娱乐中比较少用到 Linux ,
    orderc
        11
    orderc  
       2017-03-08 13:15:07 +08:00
    消息队列, RPC , PHP 扩展开发等
    yoke123
        12
    yoke123  
       2017-03-08 13:18:30 +08:00
    加油 v2 大佬多的是
    别怕他们喷你技术差 相信自己能提升的
    我感觉后面还是有人要喷你 默哀= =
    rocksolid
        13
    rocksolid  
       2017-03-08 13:42:23 +08:00
    楼主最大的问题就是两个字“用过”
    allgy
        14
    allgy  
       2017-03-08 14:03:15 +08:00
    加油~同后端猿=。=
    caijihui11
        15
    caijihui11  
       2017-03-08 14:09:21 +08:00
    我最近面试了一些公司,问了技术牛,需要成为中高级 PHP 工程师 ,第一是得会数据建模,就是会设计好数据表,具有良好的可拓展性。第二的话,就是得懂原理,多看框架的源码
    QQ2112755791
        16
    QQ2112755791  
       2017-03-08 14:10:13 +08:00
    还得慢慢提升自己,学精才好。
    lecher
        17
    lecher  
       2017-03-08 15:18:42 +08:00 via Android   ❤️ 5
    貌似互联网都是讲分布式处理业务。
    所以数据库建模和业务设计都要考虑可以分布式部署。

    然后就是一些高并发业务的处理经验。
    像我踩到过 Redis keys 这个 API 的坑,搜索多个 key 很方便,但是数据量大了效率很低,不能用。
    MySQL join 在表数据大的时候效率低,不能用。必须在程序借助 Redis 之类的缓存 ID 与其它字段的映射列表,先根据搜索条件查 ID ,再拿 ID 去另一个表取数据。
    数据库设计的时候,用户强一致性的操作不能做主从分离,必须读写都在主库上,为了避免单点负载,这种强一致性的表数据还得预留一致性哈希的配置,方便拆分。
    还有一些性能调优的经验,懂原理在生产环境出故障的时候,看看网络封包数量、内存占用率、 CPU 使用率,应用的日志,就可以很快定位系统瓶颈,是业务代码的问题,还是数据库的问题。

    什么时候加服务器,什么时候加数据库,缓存加到什么地方之类的,我刚入门的时候对这些都是一脸懵逼状态,现在也只是能勉强听懂为什么要这么改,至于怎么查出来的,还是不太理解。估计我都弄懂这些就能跨进初级工程师的行列了。
    dengxiaowu
        18
    dengxiaowu  
       2017-03-08 15:26:00 +08:00
    看来自己也是勉强属于一个初级 PHP 。大神们,继续共享中级以上的知识点。
    sampeng
        19
    sampeng  
       2017-03-08 15:41:22 +08:00   ❤️ 8
    熟练使用的语言: PHP

    这个再加点量, python 啊, golang 啊,都是你的好帮手,还有 shell 要熟练。这可以作为同一个队列,写工具很方便

    其他学习过的语言:学校里学过 C\C++\Java\数据结构,自学过一丢丢 javascript 和 node.js

    都拿来做做项目,哪怕是做一个 bitmap 用来做 key 是否存在的查询这样的小东西也是可以。然后自行对比语言和语言在工作和功能上的差异。主要关注缺点。

    用过的框架: Yii 、 magento 、 Yaf
    放弃框架,自己造个轮子。做个博客应该就够了。这你会涉及到 router ,模板,中间件以及 IOC 这些核心的原理。光看是没什么用的,转头就会忘。提醒,可以不用 php 写,拿你想做为第二语言来写。如 nodejs , python 之类的。这个轮子不是开源和上线用的。自行学习玩,做自己的项目

    用过的 IDE (或编辑器): PHPStorm 、 VSC 、 sublime 、 ATOM 、 MVIM
    忘记掉这个吧,也别写简历里。。。编辑器之争没啥意思。。。恩,我得大叫一声 jetbrains 爸爸好。 jetbrains 大法宇宙无敌

    用过的系统: Windows 系统、 OSX 系统(Linux 用不惯)
    linux 用不惯也得用。。当然,直接换成 osx 也行。最少够用。没什么蛋疼的。 V2EX 里会写操作系统的应该不会占 90%吧

    mysql 数据库的基本操作,增删查改 join 、 group 等,懂一些索引和慢查询的注意事项
    分布式,还有数据库的基本组件,如视图,触发器之类的。其实有些时候很有用。当然,另一些东西在某个场景里又没法用。分清楚原理。有时间可以看看 mysql 源码。。或者如果只是想用的好,搞本讲 sql 的书来。拆细了 sql 有很多东西可以讲


    会搭建 nginx(apache)+mysql+php(+php-fpm)环境,错误日志,配置文件
    做成自动部署~会让你明白的更多。。当然这不算技能啦。。。大公司有 ops 。小公司又 leader 。。。。编译点东西可不算啥技能。和安装软件一样。。


    redis 使用,配置,原子性,之前也用过 memecache
    redis 的代码就几千行(看老点的版本,最新的加了太多的功能)。。一个星期就能撸完。撸完你会发现打开了一个新的世界。

    没了。。。。
    jimxu16
        20
    jimxu16  
    OP
       2017-03-08 23:08:29 +08:00 via iPhone
    @polun 对 编辑器
    jimxu16
        21
    jimxu16  
    OP
       2017-03-08 23:09:51 +08:00 via iPhone
    @fbtfonfp 目前除了文件名大小写外 还没有碰到过线上服务器和本地不同的地方 以后会注意这方面 3q
    jimxu16
        22
    jimxu16  
    OP
       2017-03-08 23:10:20 +08:00 via iPhone
    @cncqw 确实是初级水平
    jimxu16
        23
    jimxu16  
    OP
       2017-03-08 23:11:54 +08:00 via iPhone
    @iot 已收藏 蟹蟹
    jimxu16
        24
    jimxu16  
    OP
       2017-03-09 00:08:49 +08:00 via iPhone
    @lecher
    @sampeng 非常感谢!!
    fy
        25
    fy  
       2017-03-09 00:11:55 +08:00
    年轻人,你渴望力量吗?!
    https://leetcode.com/problemset/algorithms/
    jimxu16
        26
    jimxu16  
    OP
       2017-03-09 00:29:46 +08:00 via iPhone
    @fy 3q 正是我需要的
    Kylinsun
        27
    Kylinsun  
       2017-03-09 00:42:53 +08:00 via Android
    握抓。
    wind3110991
        28
    wind3110991  
       2017-03-09 00:59:37 +08:00   ❤️ 3
    你这顶多是 web 业务逻辑开发吧,个人感觉,严格来讲不算后端,而且,熟悉 Linux 是一个合格后台的基本素质。

    后端的话,建议多了解基于 java 、 c 、 c++, python 等优秀的开源项目,可以看看源码,例如: zeromq(c++), c(redis)、 hadoop(java)、 tornado(python)

    目前来讲比较火的,可以试试搭建 hadoop 集群,玩玩 zk , hbase , kafka 等,体验下分布式集群和大数据应用

    我不是引战, PHP 这门语言天生是搞 web 的好手,但是不应该被套上“后台”语言的帽子。无论什么语言,物尽其用,才是一个合格后台人员的素质。当我们谈论 PHP ,其实更多是讨论如何实现一个系统应用层、上层业务逻辑的东西,而这些东西再怎么深入,很难进行更为底层的优化。像你说到的几个 PHP 框架,其实都基本是 app 框架,也就是我们说的业务侧框架。

    而我们应该讨论的通用的后台技术,其实应该更多是: connect server 、消息队列、网络框架、数据库方面:例如如何让系统实现真正的实时调度,如何真正科学管理集群或者主从数据库,如何设计 Hbase 的 rowkey 、如何实现读写分离,何为 CAP 理论等等;

    。。。。。。。。。。

    说了一堆废话,不就是想告诉你:“ PHP 也许是世界上最好的语言,但是要成为一个牛 B 的后台,这和语言真的没有必然的关系”

    加油
    phx13ye
        29
    phx13ye  
       2017-03-09 08:20:34 +08:00 via iPhone
    学生物的,我也是😂
    byfar
        30
    byfar  
       2017-03-09 09:15:59 +08:00
    PHP 也许是世界上最好的语言
    byfar
        31
    byfar  
       2017-03-09 09:16:27 +08:00
    不, PHP 是世界上最好的语言
    robinlovemaggie
        32
    robinlovemaggie  
       2017-03-09 10:35:27 +08:00
    不, PHP 是世界上唯一最好的语言
    tedzhou1221
        33
    tedzhou1221  
       2017-03-09 13:18:46 +08:00 via iPhone
    不, PHP 不是语言,是一种职业:拍黄片
    akrf
        34
    akrf  
       2017-07-13 09:06:23 +08:00 via Android
    @caijihui11 你问的人也不是啥技术牛…目测也就是熟手而已……
    allgy
        35
    allgy  
       2018-01-09 10:50:14 +08:00
    @wind3110991 需要大佬的指点,坐标深圳,大佬在鹅厂?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:12 · PVG 04:12 · LAX 12:12 · JFK 15:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.