|      1yangzhezjgs      2018-12-16 11:25:23 +08:00 via Android 这种工作一般要求 c/c++/go,系统编程,网络编程,并发,分布式,存储,Linux,对数据结构和算法要求也高 | 
|      2laike9m      2018-12-16 11:26:07 +08:00 via Android  1 infra 对技术的成长未必很多人看不上的“业务”要好。 我就说一个区别。你在公司内部做个工具,最多也就几百人用,大多时候遇不到 scalability 的问题,也不可能积攒解决的经验。而写业务你不想考虑也得考虑。 | 
|      3lucahan      2018-12-16 11:26:57 +08:00  11 这就是标准的眼高手低 | 
|  |      4cuzfinal      2018-12-16 11:29:04 +08:00 via Android 只要你有架构经验你就能找到。 | 
|  |      5rockyou12      2018-12-16 11:54:52 +08:00 via Android 没写过 crud 的人,对基础设施需要做成怎样是没得概念的...大部分业务直接莽就行了,搞复杂高级的底层设计反而是浪费人力 | 
|  |      7jingyulong      2018-12-16 12:10:39 +08:00 像一楼说的,那些东西理论部分你首先得会了,才能真真意义上的算作是架构,如果对基础不太熟,做架构有点难度。 以前有个带我的师傅,问他什么问题都能解决,同事一个月的工作量,他一周搞定,剩下都在看书。 回到家里,每天至少 4 个小时的阅读量。 | 
|  |      9scalaer      2018-12-16 12:16:33 +08:00 via Android 别问,问就 mit6.824 | 
|  |      10gwxignotus OP @yangzhezjgs 老哥 infra 这块一般是 c++是嘛? web 这块 java 造的轮子多吗 | 
|  |      11gwxignotus OP @laike9m 老哥我并没有看不上业务的意思,没有业务也就没有架构,只是在校接触的少所以想问问各位工作的老哥们 | 
|  |      12gwxignotus OP @jingyulong 明白,自己也想成为技术极佳的人 | 
|  |      13gwxignotus OP @mggis0or1 我这也准备考完试就开始刷 | 
|  |      14scalaer      2018-12-16 12:35:26 +08:00 via Android 应该是 java 生态更好吧。。 | 
|      15yangzhezjgs      2018-12-16 12:57:49 +08:00 via Android 不要以语言来区分,如果你想深入到计算机底层,c/c++不会是不可能的,但是不是意味着其他语言不会用到,像大数据领域的基础设施基本上都是用 Java 实现,阿里也有很多基于 Java 的中间件,运维领域 k8s 之类的是用 go,他们共同的基础都是系统,网络编程,分布式理论相关的内容,语言只是术,理论才是道 | 
|  |      16misaka19000      2018-12-16 12:59:23 +08:00 via Android 去看看相关岗位的 jd 就知道了,例如阿里中间件团队 | 
|  |      17yidinghe      2018-12-16 13:02:05 +08:00  1 机会很少,必须要有人带,而且自己要表现出值得带你的潜力。 | 
|      19hobochen      2018-12-16 13:51:31 +08:00  1 楼上居然还有直接说是眼高手低的,@Livid 是不是不友善啊? 一般来说有 Infra 强需求的只有大公司、极少数小公司(比如直接做 Infra 产品,如 PingCAP );那么问题就转变成如何去这些地方工作(或者创立一个这样的地方)了;我这里简单猜测一下我们组招应届生的标准 一般来说需要: 1. 好的代码能力,语言一般是 C++, Java, C; 以及少部分机会可能是 Go, Rust ; 2. 好的计算机基础,尤其是分布式系统、体系结构、网络、算法;如果有编译器、高性能计算、操作系统内核的相关经验也可以加分; 3. 其他软实力,这些就和非 Infra 的岗位比较类似了;比如英语、和别人一起快乐工作的能力等。 以及为了能通过最开始的简历筛选,可能还需要好一点的学校本科或竞赛获奖或好的实习经历。 最后,对于一个努力认真的人来说,Infra 带来的提高还是多于 CURD 的;以及我可不认为做一个几百人用的东西就是做 Infra 了。 | 
|  |      20shijingshijing      2018-12-16 14:14:49 +08:00  2 说眼高手低其实并不过分,做架构本来就是一件要求极高的事情,相对于做业务类的架构,做基础性的架构要求更高,毕竟最后搞出来的东西不仅仅是一个产品,而是使用频率超高的基础设施。 @yangzhezjgs #1 楼说了很多技术上必须具备的能力,我再补充一点,还需要掌握 UML,SysML,熟练掌握泳道图,时序图等,对 OOP 有非常深入的理解, [精通] 各种设计模式,工具上要熟练掌握 Enterprise Architect。基础性的东西为了追求性能,很多都是直接用 C/C++写的,如果系统足够复杂,会用到自动代码生成,这部分又是一大堆东西。 然后,这都只是工具和手段,比这些更重要的是你的思路和思维方式,考虑问题是否全面。 除了上述实现上的考量,你还要考虑可扩展性,可维护性,系统鲁棒性,安全性等其他各种方面的问题。 此外,除了上述技术方面的考量,你还要考虑成本,后续实现的人力开销,用了第三方的组件或者第三方的服务还要考虑知识产权和法律风险,考虑第三方缺失带来的风险,还要考虑如果整个系统挂掉了的应急和备份方案。 一个优秀的系统一定是一个或者一群厉害的架构经过千锤百炼打造出来的,做架构的不仅要求知识面广,而且各个方面都要足够深入,所以不是新手三两下能倒腾出来的。 当然,我也不是为了吓唬楼主或者劝退楼主,事实上架构也是从新手村出来的。对于想学习如何做架构的人来说,最好的方法就是从一个小一点的系统做起,循序渐进,不断改良,不断寻找 Best practice,同时自己也会逐步提升。 | 
|  |      21Nicoco      2018-12-16 15:29:36 +08:00 只要你有架构经验你就能找到。 | 
|  |      22gwxignotus OP @hobochen 大佬的回答就是我想问的,感谢感谢,另外膜拜真大佬,看了您的简历,真的太强了 | 
|      23mrsatangel      2018-12-16 16:07:47 +08:00 要不你把建立发给我瞅瞅?某未上市公司中间件部门,Java/Go/C++/Rust 都有坑。要说 infra 的话前面四种语言都是不错的选择,不过语言也没那么重要 | 
|      24XOXO360      2018-12-16 16:12:27 +08:00 via iPhone 这个岗位是俗称的网管吗?勿喷,纯小白…… | 
|  |      25chuanwu      2018-12-16 16:28:57 +08:00 @mrsatangel Rust 也有坑?感动到哭泣啊... 方便介绍下,是在用 Rust 做哪方面的事情嘛? | 
|      26mrsatangel      2018-12-16 16:31:59 +08:00 @chuanwu #25 时序数据库 | 
|  |      27Reficul      2018-12-16 16:34:27 +08:00  1 基础架构也不都是大牛,其实都是靠时间和钞票堆出来的,起初的时候都是大力出奇迹 | 
|      28Codingless      2018-12-16 16:41:25 +08:00 你是想做中间件还是想做架构,后者依赖全局视角的开发或者运维经验。另外说一句,大多数人去了中间件部门后的工作会很像客服和 24 小时的 on-call,这部分工作做好或者排班到组内其他人后,你才有时间思考和写代码,先确定你能忍受这个。 | 
|      29mogami95      2018-12-16 18:15:35 +08:00  1 建议楼主工作或学习之余,一定要抽出时间,每周(双周)定期跟进 system 顶会(如 sosp, osdi, eurosys, nsdi, socc, atc)成果,做到泛读多篇的同时,还精读研究领域内的几小篇。 如果本科毕业之前有若干顶会成果,那么来做 infra 应该不成问题,不过更建议楼主去读 phd。 当然了,对于很多在读 phd student 来说,以上都是分内之事了。 (Ps: 层主是厂里搬砖的) | 
|      30maristie      2018-12-17 02:12:32 +08:00 infra 只能是大厂了,就那么几家,大概 FAGM+BAT ?对 infra 的高要求是由业务需求拉动的,所以~ 不过也别想着越低层 /门槛越高就一定高收入,因为可跳槽的公司有限,相应岗位需求也有限;做业务升职跳 startup 拿股票的也不少,还是兴趣导向吧 | 
|  |      31FrankHB      2018-12-17 08:58:17 +08:00 @shijingshijing 对尚不清楚领域和背景来评价是不是眼高手低这点先不评论,有些不明白为啥你提的点和提及的方式看起来比较奇怪…… 1.麻烦举例“掌握 UML,SysML,熟练掌握泳道图,时序图等,对 OOP 有非常深入的理解, [精通] 各种设计模式,工具上要熟练掌握 Enterprise Architect ”在你所知道的领域的基础架构的应用中发挥的作用,以及作为#1 内容的补充的理由。 2.请解释你使用“只是工具和手段,比这些更重要的是你的思路和思维方式”“还要考虑可扩展性,可维护性,系统鲁棒性,安全性等其他各种方面的问题”“除了上述技术方面的考量,你还要考虑成本,后续实现的人力开销”“用了第三方的组件或者第三方的服务还要考虑知识产权和法律风险,考虑第三方缺失带来的风险”“还要考虑如果整个系统挂掉了的应急和备份方案”这样的顺序来描述的理由。 | 
|  |      32TomVista      2018-12-17 09:37:57 +08:00 这种工作完全靠 时间 努力 和经验堆叠起来的,想入这一行的话,把本科学那点计算机专业基础课门门 90+就完全可以进大厂,如果你学历不行的话,但有实力,建议找内推. | 
|  |      33shijingshijing      2018-12-17 11:17:19 +08:00 @FrankHB   https://www.quora.com/Do-big-IT-companies-such-as-Google-Facebook-or-Microsoft-use-business-and-or-software-modeling-tools-such-as-Enterprise-Architect https://www.quora.com/Do-prestigious-software-companies-regularly-use-UML 没办法给你一份详细的内部需求做示例解释。如果你做过一些比较严谨的系统,比如大公司的支付系统,基本上离不开这些东西的。基础设施远不止 github 上 star 很多的那些项目,也不仅仅局限于互联网公司用或者不用的东西,就好比你说电动螺丝刀,电钻这种是基础性的东西,但更多的是水坝,高速公路,电站这种。 | 
|  |      34FrankHB      2018-12-20 20:59:08 +08:00 @shijingshijing 不知道你是否有意识到,正是因为强调这样的要求规模效应(不只是“严谨”)的系统,分工不可忽视。就原问题讲,显然没法一下子就去当这样一个项目的总负责人,所以首先需要了解什么知识是和什么角色相关来推断需求,而不是要求面面俱到。反过来,如果一个项目要求技术人员尽量详尽地掌握所有这样的知识才能运作,那么有很大的风险失败。 另一方面,这样的一个项目使用了某些工具,和它的涉众需要了解和掌握这些工具是两回事;实现这样系统的需要的大部分职位恐怕并不需要掌握你所说的一些知识,掌握这些知识也未必能够起到作用。也因此,不同职位的思路和思维方式容许乃至鼓励有相当大的不同——人人都要当将军只会摧毁指挥系统。 | 
|  |      35shijingshijing      2018-12-20 22:08:59 +08:00 @FrankHB 我们理解的不一样,你不要被满大街的架构师的 title 迷惑了。我说的这个,是我直接打过交道或者间接了解到的 Architect。在这个位置上的人本来就不多,这个 position 要求就是这么高,就是要你面面俱到都得会,而在这个位置上的人也确实是有这个实力,能做到这一点,这样的人也确实是凤毛麟角。 Architect 这个 title 不是随便的人能担当的起的,那种中小公司自我标榜的架构师确实很多,但很多人做的事情其实只是一个高级的程序员的工作,做架构的不一定是 Architect,很多只是为架构添砖加瓦。这种很在某个方向上很厉害的一般是走技术专家最后成为 Individual Contributor,这个不跟项目绑定的,非常自由,专攻一两个技术制高点。 我说的这些技能,你不了解也很正常,因为本来都是屠龙刀这种级别的神器,一个大型公司一条大的产品线上也就一个,有的公司不缺钱会成立一个架构团队,而且是这条产品线达到了一定级别才会配的。 | 
|  |      36FrankHB      2018-12-21 12:44:22 +08:00 @shijingshijing 你也说了你了解到的这些是指 architect 的工作,而且还特指“一个大型公司一条大的产品线上也就一个”的这种(老实说就你说的项目里其实我确实不太信就只有一个人能叫 architect,这不符合 BP 吹水的普遍需求,对 HR 工作也不利),但标题里“找到一份基础架构方面的工作”和“感觉如果能够找到一份 infra 方面的工作对于技术成长会很好”和你说的差太远了吧。走 individual contributor 也并不矛盾啊。 | 
|  |      37shijingshijing      2018-12-21 13:33:41 +08:00 via iPhone @FrankHB 在欧美文化里,Architect 就是这个意思,很少的一个人或几个人领头挑大梁,这个本身也是来自建筑行业,就跟 Design Pattern 也是源自于建筑行业类似,Architect 也是来自于建筑行业。一个 Architect 负责一个建筑项目,一个 Architect 团队负责一个复杂的建筑综合体。BP 吹水这种事情大公司不需要,你说的情况可能体现在 PR 的文案里,就好比房地产某个项目一定会吹 xx 法国建筑师设计,这个也是存在的。中小公司所谓的架构师事实上是做了部分架构工作的高级程序员。 |