So you want to become a web developer?
你想成为一名web开发者吗?
Well then it’s time to put down that “Learn Super Duper Language v8.3 in 24 hours” book. Instead, make it a habit to ask yourself these 10 questions every day.
那么,现在是时候放下《24小时学会超级骗子语言v8.3》书,相反,你应当养成每天反问自己以下10个问题的习惯。
Is there a pattern here?
是否有一种模式存在?
Looking for patterns in what works and what doesn’t work leads to discovering the underlying principles that drive seemingly unrelated concepts and behaviours. To get a deeper understanding of the work that you do make it a habit of asking yourself “Is there a pattern here?”.
找寻模式中的可行与不可行将发现其中看似无关的想法或基本原则。要对工作达到深入的理解,你必须养成反问自己“是否有一种模式存在?”的习惯。
This applies to more than just your code. Is there a pattern in the types of changes requested by business? Is there a pattern in the way technologies evolve? Are you seeing the same types of bugs popping up again and again?
它不仅仅适用于你的代码。是否有适应各类型商业变化的模式吗?是否有一种适用于技术发展的模式?你有没有看到同类型的错误如雨后春笋般冒出来?
To understand is to perceive patterns — Isaiah Berlin
理解就是理解模式 -- 以赛亚·伯林
How can I make this simpler?
怎么让它变得更简单?
Often as web developers we want to produce complex and scalable solutions. Making something tremendously complex makes you feel like the master of your universe. The problem is that you will never be able to predict how your product and business is going to change in the future.
开发者经常想得到复杂的和可扩展的解决方案。做一些极为复杂的东西,觉得自己就是自己宇宙的主宰。问题是将来你永远无法预知产品和业务会如何改变。
“Architecture” and coding is much more like gardening than architecture. You need to be able to adapt to an ever changing environment. The more complex your solution the more difficult this becomes.
“架构”和代码更像是园艺而不是建筑。你必须要有能力去适应不断变化的环境。越复杂的解决方案越难做。
Simplicity is the ultimate sophistication. — Leonardo da Vinci
简洁是终极的复杂 -- 列昂纳多·达·芬奇
Why does it work like that?
东西为什么像那样运作?
Knowing that something works and knowing why it works that way are two very different things. If you know why something behaves the way it does you are able to make significantly better decisions.
知道东西像那样运作和知道为什么会像那样运作是两个完全不同的事。如果你知道事情为什么会那样,那么你就能够做出更好的决策。
The difference between a great coder and somebody who knows a programming language is the depth of understanding that comes from understanding why.
一个伟大的程序员和知道有某种编程语言的人来说,差别在于理解为什么的深度。
The same principle applies when fixing an issue. “Just restart the service.” “Have you tried rebooting it?” We have all said something along those lines when a problem pops up. Every time you say something like that you lose a golden opportunity to learn.
同样的原理也适用于问题修正。“重启一下服务。” “你试过重启吗?” 当有问题发生时,我们经常会想到这些话。每次你这样说时,你就失去了一个学习的黄金机会。
Understanding why something broke allows you to fix the root cause and eliminate this class of issues permanently. At the very least you won’t make the same mistake again.
理解为什么出现这样的错误,将修正根本原因,避免出现治标不治本。最起码,你以后不要再犯同样的错误。
Has somebody done this before?
之前有没有人做过?
Whenever you find yourself inventing a complex algorithm you are probably on the wrong track. Unless you are busy researching a PHD thesis chances are extremely good that somebody else has already solved this problem.
无论何时,你发现自己发明了一个复杂的算法,你很可能走在了错误的轨道上。除非你搜索到一份别人正好解决了这个问题博士论文。
Need to write an algorithm to add a label to the item closest to a users mouse? Have a look at Voronoi Tesselations. Want to find the shortest path for a delivery truck? Look at Dijkstra. Want to find tags similar to the one the user just entered, how about figuring out it’s Levenschtein distance.
需要编写一个向用户鼠标旁的item添加标签的算法?看看Voronoi Tesselations. 想要找到卡车送货的最短路径?看看Dijkstra. 想要找到用户输入内容的最接近的标记?应该是找到它的Levenschtein distance.
Those are just a few examples but trust me, they are everywhere.
这只是几个简单示例,相信我,它们无处不在。
If I have seen further it is by standing on ye sholders of Giants. — Isaac Newton
如果我看得更远,那是因为我站在巨人的肩上 -- 艾萨克·牛顿
Who said it first?
谁最先提到它?
So you think you know REST right?
你认为你知道REST吗?
Have you read Roy Fielding’s original paper describing REST and do you understand it’s intended purpose? That blog post by that guy who has 5 minutes more experience than you using the REST API generation wizard in Super cool IDE v7 doesn’t count.
你有读过Roy Fielding描述REST的论文原文吗?你真的明白它的最初用意吗?那种在IDE v7工具中比你多用REST API生成向导5分钟的家伙写出来的博客可不算数的。
Do yourself a favour and always try read the original source of a concept or theory. Then by all means go read the latest developments by industry thought leaders but if you don’t know where they started how can you follow where they are going?
帮自己一个忙,试图去读概念或原理的原始文档,然后通过各种手段去了解行业领袖的最新发展动态。如果你不知道他们是从哪些开始的,那就紧跟他们的步伐吧?(不知道他们从哪来,就跟着他们到哪去吧!)
Do I love what I’m doing?
我喜欢现在所做的吗?
Lets face it programming is hard.
请面对编程其实是很难的。
Besides being hard programming is constantly evolving. The state of the art framework from 2 years ago is a clunky dinosaur by todays standards. To stay at the top of your game you will need to commit to a lifelong process of learning and research.
除了很难以外,编程还是发展很快的。Art框架从2年前的“笨重恐龙”已经发展到今天的标准。为了站到你“游戏”的顶端,你必须树立一个终生学习和研究的信念。
If you don’t love what you are doing you don’t have a hope in hell of keeping up with the guys who do. So find out what kind of coding gets you fired up. Don’t decide to become a security specialist because there is a gap in the market or because it pays well, don’t become a UX expert just because an article just came out in WIRED saying that UX is the hottest job in tech.
如果你不喜欢你所做的,那么你就没有跟上其他家伙(喜欢自己所做的)的可能。所以找到让你激情燃烧的编程类型!不要因为市场缺口或者收入不菲而决定成为一名安全专家,不要因为一篇文章说UX是最热门的职业而决定成为一名UX专家。
I’ll say it again, do what you love.
再说一次,做你喜欢的。
Do what you love and the necessary resources will follow. — Peter McWilliams
做你喜欢的,所需的资源将随之而来的 -- 彼得·麦克威廉斯
Where else could I use this?
其他地方还可以使用吗?
One of the biggest limits I see web developers placing on themselves is a failure of imagination.
我看到web开发者最大的一个限制就是,自己失败的想象力。
If we learn something in a specific context or see a technique used to solve a specific problem we assume that’s the only place it applies. This is almost always wrong. Every time you learn something new ask yourself: “Where else could I use this?”.
如果我们学习到一个适应于特定环境的东西,或者看到解决某个特定问题的技术时,我们认为这就它唯一适用的地方。这是完全错误的。每当学到新东西时,反问自己:“其他地方还可以使用吗?”
Found great new positioning methods to place nodes on a graph, how about applying that same technique to find interesting data points in a dataset that has 2 dimensions? Found a cool way to send data over websockets from the client to the server? How would this apply in making a scalable set of backend services? Sometimes you will be wrong, but sometimes you will be right.
当发现了在图表上定位节点的新的伟大的方法时,是不是可以将它应用于二维数据集中感兴趣数据的定位呢?当发现通过websockets从客户端发送数据到服务器端的新方法时,它怎么才能应用到可扩展的后台服务上呢?有时是错误的,但有时也是正确的。
Which brings us to our next question…
这给我们带来了下一个问题......
Logic will get you from A to Z; imagination will get you everywhere. — Albert Einstein
逻辑只能带你从A到Z,想像力去可以带你到任何地方 --- 阿尔伯特·爱因斯坦
What did I fail at today?
今天有什么做错的吗?
One of the easiest ways to increase innovation is to lower the cost of failure.
增加创收的最简单方法是降低错误的损失。
The game developing company Valve has embraced this like few others. The same applies to your progression along the path to becoming a web developer, if you are afraid to fail you will never make those big breakthroughs.
游戏开发公司Valve和其他几个公司很认为这个观点。这同样适用你成为web开发者的进步过程。如果你害怕失败,你就不会有大的突破。
Be brave, try something, fail, learn and try again.
勇敢、尝试、失败、学习然后再来。
Do not fear mistakes. You will know failure. Continue to reach out. — Benjamin Franklin
不要害怕错误,认识失败,然后重新来过。--- 本杰明·富兰克林
How can we make this possible?
怎么使它变成可能?
In the world we live in there really is very little that is impossible (with a few exceptions).
我们生活在世界上很小的一个地方是不可能的(除了少数例外)。
Start from the assumption that whatever you want to do is possible and then work your way back. You might find that what you wanted to do is impractical for the time being but with the pace of change in todays world, it might become practical sooner than you think.
假设不管你做的什么事情都是可行的,然后采用向后的方向回推回去。你可能会发现,你想做的暂时是不切实际的,但它足以改变世界,可能变成现实的速度比你想像的还要快。
It always seems impossible until its done. — Nelson Mandela
直到完成前,似乎都还是不可能的 --- 纳尔逊曼德拉
Who can I learn from?
我可以向谁学习?
You should never work anywhere where you are the smartest person in the room.
永远不要在你是最聪明的地方工作。
Pick jobs and companies where you can work with people who inspire you and challenge you to be better. It doesn’t have to be coding related, there is a world outside your text editor and the command line. Learn things from other fields and find ways to apply it in your job.
挑选拥有可以启发你、激励你做得更多的同事的工作和公司。不要与编程扯上关系,在文本编辑器和命令行外面还有一个完整的世界存在。从其他领域学习,设法应用到你的工作中。
Being competent isn’t good enough anymore.
不管怎么样,比称职更好!