对于 Go 程序员来说,月薪 3 万需要会哪些内容呢?希望本文对月薪不到 3 万的你有一定的帮助,祝你早日实现月薪 3 万+
在这里,我需要假定一些前提条件。首先,我们假定工作地点是北京。然后,我们分大公司和创业公司两个维度来看。
01
大公司
我们先来看一个滴滴的『Golang开发工程师(20k-50k)』招聘要求:
岗位职责:
- 参与滴滴基础服务平台的设计、研发工作,提升滴滴产品稳定性;
- 与产品经理尝试沟通产品需求;
- 进行相关产品的技术文档编写,方案设计;
- 学习研究业界先进技术,保持技术进步;
任职要求:
- 本科及以上学历,计算机相关专业,两年以上服务端研发经验;
- 深入理解计算机原理,有扎实的数据结构和算法基础;
- 深入理解linux系统及其原理,熟悉TCP/IP、HTTP协议以及网络编程;
- 良好的编码和文档习惯,对代码美感的追求孜孜不倦;
- 精通Go/C/C++/Python等至少一门语言,有Go开发经验者优先;
- 熟悉常用的sql、nosql数据库原理,阅读和理解优秀的开源系统代码;
- 具有分布式系统设计和开发经验者优先。
我们主要关注任职要求。
硬性条件
有一些是硬性条件,比如:学历、专业、工作年限。这些必须具备,否则简历可能都不通过。能力特别突出除外。
计算机基础
前段时间,我拉了一些大学生,专门为他们做学习和职业规划,已经做了两期 「1对1」 沟通,其中我一再强调,要注重基础知识。对于计算机来说,基础主要包括:数据结构和算法、操作系统、计算机网络、计算机组成原理等。另外,需要学习一些汇编知识,同时 C 语言最好能较熟悉。
然而,作为一个已经工作了的人,以上基础,如果不好,可能没法做到现在全面的补上来,但有一些应该花时间,至少换工作前,需要进行复习,比如:数据结构和算法、计算机网络等,如果你刚工作,我建议给自己定一个计划,什么时间好好补补哪方面的基础。
从上面滴滴岗位的要求可以看到,他们对基础很看重。这也是我一直很看重的。
良好的习惯
有时候我在想”处女座“的代码应该看起来会很美(你身边有处女座的程序员吗?)
程序员应该有一些洁癖:对代码美感的无限追求。永远记住,代码是写给人看的,只是偶尔让机器执行一下。
在这方面,Go 为程序员做了很多,通过 gofmt 可以很大程度让团队的风格保持一致。我们应该按照 gofmt 的要求编码,努力做到 gofmt 执行前后一致,好的习惯是需要长期养成的。
比如,我看到这样的注释就会忍不住改一下:
//这是注释 我会改为:// 这是注释
虽然只是加了一个空格,但看着更舒服!
精通一门语言
这里我们谈 Go 语言,所以我们谈谈怎么才算精通了 Go 语言。
对于精通,其实每个人的理解是不一样的,并没有统一的标准。但大体上,我们可以从以下几个方面来考察:
- Go 语言基本功。这方面相对来说是比较容易的,看书+项目实战,基本就没问题了;
- 核心特性的原理。比如:GMP 理论,slice 和 map 等数据结构的实现,内存分配策略,GC 策略等。这些知识我们可以通过一些资料和书籍获得,目前 Go 语言中文网就有这方面较多的资料,https://studygolang.com/subject/3。另外,如果能力够,可以阅读相关源码,实际来说也应该尝试啃啃,可以结合着一些资料来啃;
- 架构方面的知识。现在微服务架构很火,需要理解、掌握微服务架构的知识。掌握一些优秀的架构方案,有实际的架构经验;
- 问题排查知识和性能调优经验。CPU、内存问题排查,垃圾回收问题排查等,runtime 涉及到的调试工具熟练掌握,pprof 工具熟练掌握,有实际的性能调优经验;
- Go 生态的掌握和优秀开源项目学习。熟悉 Docker、k8s 等 Go 生态方案,了解持续集成工具和实施方案。Go 的优秀开源项目,像 BoltDB、Caddy,Web 框架 Gin/Echo 等,都是值得认真阅读的。https://github.com/avelino/awesome-go 该项目汇总了 Go 语言各种库。
数据库知识
现在的项目,都离不开存储,要求我们必须掌握数据库知识。现在数据库一般分为两种:关系数据库(SQL)和非关系数据库(NOSQL)。我们必须同时掌握这两种,因为项目中很可能都会使用。
目前来说,关系数据库一般掌握 MySQL 即可;而 NOSQL 方面,Redis 必须学习,MongoDB 也得了解。除此之外,缓存方面,Memcached 虽然现在貌似更多被 Redis 替代了,有兴趣也可以了解下。
其他方面,像 ElasticSearch 现在是很流行的,有些时候直接当数据库使用,我们也应该熟悉它的使用。
分布式系统设计
这方面的知识,很多人可能没有机会实践,更多只能学习别人总结的知识、经验。如果你工作中有幸能接触这方面的知识,一定要好好学习,这是对你职业很有帮助的。
关于分布式系统设计,市面上有不少这方面的书籍。我个人建议,如果你现在的项目,在不断向分布式方向演进,可以买这方面的书看,如果只看没机会实践,对自己的帮助会比较小,毕竟这是一个实践更重要的技能。
高性能、可扩展、高可用,这是架构设计常谈的一些方面,很多知识有实际的接触会更能理解。
其他知识
除了上面的知识,一般还建议了解一些前端知识,掌握 Nginx 等 Web Server,熟悉 Linux 下的 shell 编程、Vim 的简单使用等。
总结
通过上面的分析,你会发现,语言只是整个知识体系的一小部分。基础扎实,不断学习,有机会实践,工作 3 年左右进入大厂,月薪 3 万小 case。
02
小公司
由于各种原因,有些人可能没进入大厂,那么小公司如何能够达到月薪 3 万呢?
同样,我在网上找了一份小公司招人要求。职位:Go开发工程师,薪资范围(30k-50k)。
职责:
- 负责大数据平台和AI运维平台的服务端设计、研发工作, 保证服务稳定、可靠;
- 理解业务逻辑与分析产品需求并给出相应的技术方案;
- 学习研究业界前沿技术, 保持技术进步, 不断提高服务性能;
- 注重代码质量,有良好的自我驱动能力,工作严谨,责任感强,有协作精神;
要求:
- 计算机相关专业本科及以上学历,三年以上工作经验;
- 熟悉Linux系统及其原理, 熟悉Web服务端开发, 熟悉TCP/IP、HTTP协议以及网络编程;
- 熟练掌握golang等程序设计开发,有实际项目开发经验;
- 基础扎实, 熟悉掌握 mysql、redis等常用储存方案及基本原理,能够独立地设计合理的数据库结构;
- 具有分布式/高性能系统设计和开发经验者优先, 熟悉大数据hadoop相关技术经验都优先。
从这份 JD 可以看出,除了基础要求、算法方面和上面的不太一样外,其他的类似。
一般来说,大厂,特别是百度系(指初始团队从百度出来的),面试考核算法特别多。相较而言,小公司对这方面不会太看重。
然而,无论要求是什么,基础扎实永远是好的,无论是你的发展还是对你能力的提升都会很有帮助。
从上面小公司的 JD 看,似乎小公司更容易拿到 3 万以上。从这几年的行情看,情况确实如此,但这只是现金的部分。综合考虑,大公司性价比会更高。
小公司的详细情况,我就不额外重复分析了。这里对选小公司提一些建议,方便更快地实现月薪 3 万。
如何选择小公司
对于大学生,我强烈建议毕业时候要努力进入大公司。如何进入大公司,我以后有机会专门撰文分享。对于没有经历过大公司的,要给自己定一个目标,进入一家互联网大公司历练下,对自己的提升是很不一样的。
那么,如果选择小公司,我们该如何选呢?
我在创业公司摸爬滚打了快 5 年,对创业小公司有一些自己的理解。在这里给一些建议,供参考。
新人(0-2年)
如果你是一个工作年限不长的(0-2年),你进入小公司并不是选择创业,更多可能是进不去大公司。这时候,你一定要想办法了解这家公司是否注重新人的成长,公司是否会有现金流问题(可能不一定了解到,但一定要多打听这个公司的情况,否则很容易进去没多久就裁员)。这个时期的你,最关注的不应该是拿到多少钱,而是这份工作对自己的成长会有多大。进入公司后,除了工作之外,一定要注意保持“带薪学习”,否则几年后,你和同学的差距会越来越大。
老手(3年以上)
如果你工作有一定的年限了(3年以上),你选择创业公司,更多希望公司能够成功,能够实现自己财务的突破。这时,你要找一个自己看好的方向,找靠谱的团队,尤其是创始人,他代表了这个公司对这个行业的认知,能不能成功,创始人是关键。当然,进入创业公司,心里要有预期:成功的可能性是很小的。选择了创业公司,你就要做好准备,千万别只是简单的混日子,应该把自己定位成公司的核心人员,甚至进入公司管理层。关于待遇,在谈 offer 时,能多要就多要,创业公司的薪酬体系不完善,入职时的薪资很重要,切记!
总之,创业公司风险相对较大,适合想闯一闯的人。创业公司对你的要求,更多会是广度,你需要多方面提升自己,这一定程度上也是一件好事。如果你进入创业公司之前,在某个领域的深度足够,创业公司的环境对你来说是一个很好地机会,让你能够更全面的发展。同时,你要保持对技术的敏感度,别让手生!
还有更多想说的~
作为一个技术人,我们除了掌握技术本身之外,我个人强烈建议花些时间学学其他的东西,读读其他的书籍,别只是停留在技术层面,至少工作了 2、3 年之后,应该花 30% 左右的时间在其他能力的提升上,工作年限越长,这个比例应该越大。同时,应该学会总结,将自己的学习、工作等心得、体会记录下来,和别人分享。所以,强烈建议你尝试写作。
写作,教会别人,这也是掌握知识最牢固、最有效的方式,当然难度也较大,需要有毅力,要坚持!
总结
通过以上的分析,我想你应该对达到月薪 3 万以上是个什么要求有了一定的了解。这里的关键还是要自己制定目标,坚持学习,否则一切都是遥不可及!
祝你早日实现月薪 3 万!
最后附上一份 『Go语言月薪3万』思维导图。每一块会进一步细化,每一块都值得撰文细说,欢迎关注我,后续文章第一时间获得!