How to build?
上班第一天,leader告诉我:“跟HR好好谈,工资往高了谈。”
那一天,我写代码的手还是抖的,心里想,“我拿什么谈啊,老大。”
——还不是想赚钱的码农
从社区中来,到社区中去。
学习编程138天,从开始什么都不懂,到现在勉强算一个Junior Programmer,我从互联网上获取了很多知识,所以现在想把这一路的学习和想法回馈给社区,让后来的人能多一份借鉴。
这第一篇文章,我不是写给那些对编程有了解的同学,而是给什么都不懂的人,懂的人自然会找方法学习,不懂的人才需要方向。所以,我们来看一下,从一无所知,到勉强上路,究竟需要什么?
很幸运的在一个SCRUM团队工作,我先说一下我的工作流程:从PO(project owner)手上拿到用户故事(user story)—— dev(工程师)团队将用户故事拆解成代码任务 —— dev团队完成代码任务 —— 迭代、增量与维护 —— PO给出更多的用户故事。
举个例子:
(用户故事)PO要能够自动筛选问卷星的调查问卷,给通过的人发面试通知,给不通过的人发拒信;
(拆解任务)第一步:通过API拿到问卷星的调查问卷,第二步:读取作答的信息并写出满足PO的筛选逻辑,第三步:给筛选之后的人发送相应的邮件;
(完成任务)拿到任务,写出代码;
(迭代)不能给填写过的人发送邮件,发送的面试内容要因人而异,PO要知道每周共有多少人完成调查问卷,通过的有多少人,等等;
(更多的故事)PO要有一套管理招聘进来的人的系统...
所以,想要成为dev的你,迫切需要掌握的两个能力是”能够将用户故事转变成代码任务”和“能够完成代码任务并迭代”。
那么,只要你能体验完我的故事(我用了75天),应该可以拥有这两个能力,并去任何一个公司面试初级后端工程师。好,有了目标,该怎么做呢?
我推荐学习的技术栈是linux(macOS)+ Python,她们有一些共同的特征: 够优雅,够简洁,可读性高,非常注重人的可编译性。市场也有需求,来查看更多信息。
在大纲开始之前,我还想多说一句,会做很多编程的题目并不代表你的工作能力很强,作为非科班出身的我们,一定要注意计算机基础的培养,这样才能很好的成为团队中的生产力。再往深一步,职业道路往前走,底层原理和网络协议等,缺一不可。所以,希望同学们不要以为几个月的入门就有了饭碗,选择了计算机其实选择了无尽的迭代与学习,共勉!
OK,我们来一起看一下,什么能帮助我们暴力、快速入门编程?
# 计算机系统。对于我们而言,既然想开始编程,第一步就是进入命令行模式,别依赖图形化界面!Linux系统指令就一种模式 <command> [options] [file | path | or something],这是一个很大的learning curve,一定要啃下来!咱要求也不高,会前五个实验就行
# 编辑器。编辑器的目的是想让你理解语言语法,千万不要用IDE,PYCHARM之类的,越成熟的编辑器对新手的我们伤害越大,因为你需要暴露错误,才能学会语言。想象一下,你是个不会说话的婴儿,跟妈妈交流时,你根本不用表达清楚自己,事情就被做完了,你怎么可能快速学会这个语言呢?个人认为编程是个不轻松的事情,让你每天面对的电脑屏幕好看一点(颜色多一点)真的很有必要,不然黑白太单调了,身为码农,让自己美一点!推荐安装Atom,超好看,如果你喜欢HARD模式,推荐使用VIM。Atom直达链接
(这两个部分,是开始编程最大的难点,自己的环境要自己搭,这样才有亲切感。)
# 语言教材。我选用了《learn python the hard way》,网络上很多视频和资料,但是我这个好,我用过我知道!如果你觉得这篇文章写得还可以,就相信我,读完书包学会!另外,python2到2020年就不维护了,现在开始学python3绝对是唯一选择!30刀绝对不吃亏
# 语言训练。我选用了Hacker Rank,很单纯的做题,跟读高中的时候差不多,一边看书学新知识,然后就打开hackerrank把题目给做了,同样有电梯哦。HackerRank有弊端,就是会对构建一个完整的项目不熟悉,这就是所谓的工程能力和设计能力,我推荐反复看《敏捷软件开发:原则、模式与实践》“第六章:一次编程实践”,以及配合我后面提到的项目。个人提醒:我希望你先学会了语言再去写项目,不然每一行代码都看不懂,特别受挫;你所有优秀的言辞,都是建立在足够的词汇量之上的。
(这两个部分,需要很长时间,很容易枯燥无味,希望同学们能找到自己的编程乐趣,而我,特别喜欢解开一道HackerRank题的感觉。)
# 数据库入门。我的要求真的不高,你要学会数据库的增、删、查、改。关于数据,你需要具体的业务,也需要具体的场景,看视频和文档。对于入门的我们,增、删、查、改就很足够了,不难!
# 前端入门。这本书《Flask Web开发:基于Python的Web应用开发实战》非常非常好,你可以架设你自己的网站,你可以做出自己的facebook,可以作为自己python水平的练兵场,可以作为本篇大纲的收山书。那作为前端入门的要求呢?熟念使用flask开发app,熟念使用bootstrap,至于HTML、CSS和JS,随便了解一下就好。
(这两个部分,很有难度,很容易感觉自己一无是处,希望同学们不要灰心,扎实学过的知识一定会帮助自己,慢慢看慢慢学!)
这样就结束了,两部分基础,两部分语言,两部分应用,从运维到开发,从后端到前端,可以说是暴力、快速开始编程的全部内容了,那预祝你们成功开始自己的工程师之路。
我作为小小的前辈,最后送你们一段我读到的话。
The fundamental equation of computers is:
computer = powerful + stupid
Computers are very powerful, looking at volumes of data very quickly. Computers can perform billions of operations per second, where each operation is pretty simple.
Computers are also shockingly stupid and fragile. The operations that they can do are extremely rigid, simple, and mechanical. The computer lacks anything like real insight ... it's nothing like the HAL 9000 from the movies. If nothing else, you should not be intimidated by the computer as if it's some sort of brain. It's very mechanical underneath it all.
Programming is about a person using their real insight to build something useful, constructed out of these teeny, simple little operations that the computer can do.
——Stanford CS101
计算机非常强大,但是也需要我们身为人的insight,希望你我都能拥有这点real insight!
# 本文中的链接全部来源于百度,我第一次写文,希望没有版权纠纷。