hi 小伙伴们好,营长大大来了!
说起区块链一直有个大家喜闻乐见的话题,就是「开发者」,无论是人才招聘还是技术开发,开发者都是区块链大潮背后的中坚力量。
今天咱们就聊聊「如何成为区块链开发者?」这个话题,在营长采访过的很多技术专家中,经常都会问他们是如何成为区块链大拿的?以及是通过怎样的方式和区块磨炼自己的技术的?日积月累下来,得到了很多优质的反馈。
因此,本篇文章将会回答并解决你以下问题:
我该如何成为区块链开发者?
成为区块链开发者需要掌握哪些知识/技能?
我该去哪里寻找资源来自我提升?
我该如何养活我自己,以及找个靠谱的工作?
值得留意的是,这些内容并不单纯是写给小白的,即使你已经有开发经验,也能通过这篇文章看出区块链开发者的完整知识框架,填补自己的短板。
文章中也会附上学习资源。
言归正传,下面就开始吧。
手把手带你成为区块链开发者:必备技能
1. 理解区块链背后的原理
在开始开发前,对区块链系统和机制有个深刻的了解是十分必要的,你需要先知道区块链到底是什么、什么叫挖矿、矿工、区块链、共识等基本知识。这里推荐一本书:Mastering Bitcoin: Unlocking Digital Cryptocurrencies(《走近区块链:解锁加密货币》)
2. 熟悉以太坊
如果你想发币或者玩玩ICO,那么你需要先了解一下以太坊,因为以太坊是ICO项目最常用的平台,也是作为一个区块链开发者,无法绕开的一个平台。第一步,你可以先从安装以太坊客户端开始,常用的客户端有,Geth和Parity。
3. 花点时间学习Solidity和Truffle
Solidity是以太坊推出的智能合约编程语言;Truffle是目前最常用的以太坊开发框架。作为区块链开发者,你必须对Solidity和Truffle非常熟悉。其实,Solidity上手的门槛并不高,学过JavaScript的人应该很容易理解。
而Truffle,你可以参考官方的详细操作步骤,对应步骤操作一遍应该就能掌握了。
Truffle操作步骤:
https://truffleframework.com/boxes/pet-shop
其他资源:
区块链入门播客(Podcast):
https://techiesamrat.com/free-blockchain-basics-beginners-podcast-course/
超级有趣的区块链DApp开发学习平台Loom:
https://cryptozombies.io/
4. 从区块链游戏入手
游戏开发是学习区块链开发者最好的入手方向,上面的链接就是很好的学习资源。通过Loom你可以亲手学习并开发一款自己的区块链游戏(开发者一个僵尸大军,然后发起区块链战争)。因为整个游戏都是使用Solidity开发的,因此当完成整个游戏之后,你会对这门语言有非常好的掌握,就问你棒不棒?!
此外,Loom平台的游戏开发还会让你认识到,智能合约不仅仅能用在交易,也能用在游戏开发上。只要你脑洞够大,还能找到更多的玩法。
5. Solidity虽好,但不要在上面花太多时间,应该把更多时间花在其他语言上
如果你想开发DApp,不要把时间和精力过多的放在Solidity上,因为如上文所说,Solidity只能用来开发智能合约,而这只是DApp代码中很小的一部分。而DApp可以用任何语言开发,例如Python、Java、C++。
此外,因为Solidity非常简单直接,学过其他语言的人稍微看一下就能懂,因此,其他语言上的功夫比Solidity重要的多。
6. 了解以太坊之外的其他主链
虽然以太坊现在是最大的主链平台,但多接触其他主链也有好处,例如Hyperledger或Multichain等。
7. 前端开发与密码学
DApp由两个部分组成——前端和后端。前端跟Web开发和移动开发差不多,用Java、HTML都可以。但后端开发就不一样了,需要掌握密码学的知识,比如用户定义中的密码函数等。理论上说,DApp的后端开发也可以用多种语言,常见的例如:C#、C++。
8. 理解多种数据结构
作为区块链开发者,你需要对多种数据结构有深入的理解,如Stack、Queue、Linked List、Tree,以及HashMaps等。
9. 多「玩」比特币源码
比特币源代码是学习区块链开发最好的渠道之一。因为比特币源代码是开源的(用C++写成),所以你在任何时候都可以继续为比特币项目贡献代码,就算不贡献代码,自己多多研究把玩也能得到很大的提升。
当然,如果你能把以太坊源代码吃透并且也在上面贡献代码,相信其他大多数的区块链项目的开发,都难不住你了。
比特币源代码地址:
https://github.com/bitcoin/bitcoin
10. 学习分布式账本协议
分布式账本协议可以说是区块链开发者需要掌握的最重要的知识之一,如果你真的下定决心转型,这个知识非学不可。如果你不知道从何入手,建议先看看区块链公司对技术人员的要求是什么,然后再决定从哪开始学起。
海外招聘资源汇总:
https://crypto.jobs/learn
11. 开发一个自己的DApp
在掌握了上面的所有知识之后,开始试着开发一个DApp。这个DApp的目的有两个:
反应你对上面知识的理解有多深;
通过实践来进一步学习
一般来说,第一个DApp可以尝试下分布式投票系统,以太坊官方有开发这种DApp的详细步骤。
参考地址:
https://www.ethereum.org/dao
学习资源哪家好?
在了解了需要学习的技能之后,你可能会问,我在哪里才能学习这些技能?
别着急,接下来营长就把上面所提到的知识点和所有相关的学习资源打包给你。
12. Lynda、GitHub、油管上最好的以太坊学习资源
Xanesghost是Reddit上区块链话题下的大V,他曾分享过一系列的以太坊学习资源,包括「官方」和「非官方」两个部分。
先来看看非官方:
以太坊编程基础(Lynda):
https://www.lynda.com/JavaScript-tutorials/Foundations-of-Programming-Fundamentals/83603-2.html
JavaScript精华训练(Lynda):
https://www.lynda.com/JavaScript-tutorials/JavaScript-Essential-Training/574716-2.html
数据结构入门(Lynda):
https://www.lynda.com/Developer-Programming-Foundations-tutorials/Foundations-Programming-Data-Structures/149042-2.html
离散数学基础(Lynda):
https://www.lynda.com/Programming-Foundations-tutorials/Foundations-Programming-Discrete-Mathematics/411376-2.html
Git精华训练(Lynda):
https://www.lynda.com/Git-tutorials/Git-Essential-Training/100222-2.html
重构代码(Lynda):
https://www.lynda.com/Developer-Programming-Foundations-tutorials/Foundations-Programming-Refactoring-Code/122457-2.html
由浅入深密码学:
https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg/videos
博弈学,从入门到精通:
https://www.youtube.com/playlist?list=PL6EF60E1027E1A10B
加密技术线上全教程:
https://www.youtube.com/channel/UCNcSSleedtfyDuhBvOQzFzQ/videos
官方资源:
以太坊智能合约介绍:
https://www.youtube.com/watch?v=r7GVVk8v2Ik
Blockchain/Smart Contract 101:
https://www.youtube.com/watch?v=kanP89Y4hn8
Solidity特性详解:
https://github.com/ethereum/wiki/wiki/Solidity-Features
Solidity官方文档:
https://solidity.readthedocs.io/en/latest/
Yminutes Solidity教学:
https://learnxinyminutes.com/docs/solidity/
Andreas Olofsson Solidity教学:
https://docs.erisindustries.com/tutorials/solidity/
Ethereum, Gas, Fuel & Fees:
https://www.youtube.com/watch?v=dd-ajiMl4HY
以太坊Mist简介:
https://www.youtube.com/watch?v=MzT0fvmZ638
写给以太坊开发者的DApp设计原则:
https://www.youtube.com/watch?v=nPpi9BPkRbo
区块链代码的模块性、可扩展性、和安全性:
https://www.youtube.com/watch?v=1D7BH8krdhQ
合约复杂度的管理:
https://www.youtube.com/watch?v=gEV8LfFs8Io
DApp框架入门:
https://www.youtube.com/watch?v=XdPkzzjmirw
Truffle官方文档:
https://truffle.readthedocs.io/en/latest/
Tim Coulter的Truffle教学:
https://www.youtube.com/channel/UCFShdrPuhFqWlSnpGnz2Wag
StackExchange:
https://ethereum.stackexchange.com/
以太坊DApp开发资源列表:
https://www.youtube.com/playlist?list=PLe9AlNDGZKvBWrkf-tKgEJsu2Y_vrBgwv
用JavaScript开发DApp:
https://www.youtube.com/watch?v=cPlpWmC7JKk
给技术小白的DApp开发教程:
https://dappsforbeginners.wordpress.com/
如何用Mist打造一个无需服务器的应用:
https://blog.ethereum.org/2016/07/12/build-server-less-applications-mist/
Solidity智能合约实战1:
https://www.youtube.com/watch?v=8jI1TuEaTro
Solidity智能合约实战2:
https://www.youtube.com/watch?v=3-XPBtAfcqo
以太坊DApp开发——Truffle、MetaMask:
https://medium.com/metamask
Web3开发规划:
https://www.youtube.com/watch?v=XnQSTLDt1cc
智能合约开发最佳实践:
https://github.com/ConsenSys/smart-contract-best-practices
以太坊智能合约安全手册:
https://blog.zeppelin.solutions/onward-with-ethereum-smart-contract-security-97a827e47702
如何写最靠谱的智能合约:
https://blog.colony.io/writing-more-robust-smart-contracts-99ad0a11e948#.wfro33g0x
13. Coursera、斯坦福在线课程
刚开始,可以先看看斯坦福的在线课程:
https://crypto.stanford.edu/cs251/syllabus.html
这个课程把什么是区块链,什么是加密货币讲的十分透彻。
接着,可以看一些更深入的课程,比如Coursera关于比特币和加密货币技术的课程:
https://www.coursera.org/learn/cryptocurrency
当然,国内的在线教育平台,也能找到很多不错的课程。
学会技术怎样赚钱?
在学习了一定的区块链开发技术之后,你可能会想我该如何用这些技术赚钱呢?除了找份区块链开发的工作之外,还有哪些靠谱的赚钱方法?
这个部分将一一解答。
14. 找个正儿八经的工作
不用多说,找个区块链开发相关的工作是大多数人的选择。目前,整个区块链市场都处于人才荒的状态,技术扎实的开发者想找个靠谱的工作并不难。在找工作之前,你应该先想清楚是否真的要从事区块链开发,此外,你比较中意的工作地点在哪?
通常很多类型的公司都会招聘区块链的相关开发者,包括:初创公司、科技公司、银行、私有企业,甚至是政府和专业服务机构等。
可参考以下网站:
https://crypto.jobs/
15. 区块链招聘网站
随着区块链行业的火热,招聘网站也越来越多,除了上面的网站之外还有一个不错的招聘网站:
http://blockchainjobz.com/
16. 试着拿些认证
经验是找到好工作的基础,一般来说,如果你有个三五年的Web开发经验,去拿一些认证相对来说比较容易。最简单的拿认证的方法是为一些初期的开源项目贡献代码,当然如果能拿到一些知名项目的认证则更好,例如Hyperledger Platform,不过这个项目需要你的C++和Java技术过硬。
17. 为开源项目贡献代码,并拿到报酬
上面说了为一些开源项目贡献代码可以拿到认证,实际上有些开源项目也会给贡献者金钱的奖励。例如Gitcoin。开发者可以再GitHub上解决发布者的问题,就可以拿到相应的以太币作为奖励。步骤如下:
在GitHub上找到悬赏任务,无论是Bug、安全还是任何其他任务;
声明任务;
解决任务的问题;
提交任务成果 & 获得奖励。
Gitcoin地址:
https://gitcoin.co/
18. 通过ICO赚钱
这年头,要是没试过ICO都不好意思跟币圈的人打招呼。其实ICO说白了就是创造一个自己的Token,这很简单。
现在有很多跟「一键生成」差不多的小白「造币」平台,区区几行代码,你就能生成属于自己的加密货币,如OpenZeppelin等。不过要想ICO到很多钱,还是需要有核心价值。
OpenZeppelin操作指南:
https://blog.zeppelin.solutions/how-to-create-token-and-initial-coin-offering-contracts-using-truffle-openzeppelin-1b7a5dae99b6
19. 开发DApp赚钱
与当年移动应用的发展类似,可以预见未来两年DApp会成井喷式发展。作为开发者,你现在就可以试着开发一些DApp,并试着去变现。通常,DApp上的每笔交易,开发者都可以拿到2-5%的利润。如果你能开发出像迷恋猫那样的爆款,利润将会非常可观。
通常,你可以通过以下任意一种方法来实现DApp变现:
制造爆款和发币;
收取一定比例的交易费;
特殊功能收费;
订阅或会员机制;
广告;
募捐
其他成为区块链开发者的必要因素
这部分属于进阶内容,对于已经拥有过硬技术的区块链开发者来说,掌握以下知识可以走到更高的位置。
20. 学点经济学
作为区块链开发者,只懂技术是不够的,要想走得更高更远,你还需要学习一经济学理论,因为经济学是区块链和加密货币的基础。这些理论包括博弈论、宏观/微观经济学、供需关系、机会成本、拍卖理论、货币政策、敏捷货币、通货膨胀,以及通货紧缩等。
21. 多交流
区块链开发者不应该闭门造车,应该走出去多多跟人交流,无论是交流开发技术还是观点,都能获得很大的益处。最好的交流方式,是多多参加行业活动、沙龙等,即使没有线下活动,也要试着去网上找一些论坛,与其他开发者讨论。比较优质的开发者论坛/社区包括:Reddit、Slack、Gitter等。
22. 软实力的提升
软实力的提升是个长线投资,也许要等到很长时间之后才能看出来。但比起开发的硬技术,软实力对于开发者来说同样重要。想要爬到更高位置的开发者需要软硬兼顾。典型的软实力包括:管理能力、团队合作能力以及多任务处理能力等。
23. 听听资深开发者的反馈
在完成自己项目的开发之后,收集和分析反馈十分重要。你可以把自己的项目上传到GitHub,听听一些资深开发者的反馈。也可以上传到Reddit。
24. 给自己留点学习的时间
很多开发者有一个误区,就是认为如果花太多时间学习,就会放过很多大好机会。但实际上,今天的区块链就像90年代的互联网一样,还处于刚刚起步的阶段,很多优质的项目和公司都还没出生呢。因此,现在给自己多点时间学习,彻底掌握区块链的开发技巧和理解其背后的原理,可以为未来打下坚实的基础。
欢迎关注微信公众号“区块链大本营”~
区块链开发者的基地。
从这里出发,让区块链回归技术与应用的本质!