本文为译文,可能与原作有所差异!
总的来说,科技发展的迅速是一件令人兴奋的事情。但如果站在一个技术开发者的角度去看的话,反而是一件心累的事儿,因为想要跟上科技更新的脚步并不是一件容易的事。我是做Android开发的,就那Android来说吧!各种各样的开发框架变得越来越流行,所以大大小小的相关创新一直是层出不穷的,它们相互竞争,最后淘汰掉落后的那个。
“你知道推出了MVP开发模式吗?你不知道 MVC 经过时了吗?最近连 MVVM都出了呢。”
“你觉得 rxjava +retrofit+MVP开发模式怎么样?”
“你知道 插件化开发模式吗吗?还有组件化开发?”
“还有 热修复..”
编程系统总是不断地更新换代而且这种速度越来越快了。
甚至很多高级软件开发工程师都因这种进步而感到 “ JavaScript 式疲劳” 。若连他们束手无策的话,还有谁可以阻止那些追求速度的工厂,叫停那些频繁进行技术更新的行动呢?
深呼吸……
要知道,早在1975年,当《人月神话》的作者 Frederick Brooks 在撰写这本著作时,就已经在书中论述过“程序员间的合作”。不管人们信不信,但他在书中所提到过的内容确实都几近现实。
实际上,《人月神话》这本书是 Brooks 在进行 ALGOL (算法语言)和 OS/360 (360系统)的工作的情况下,同时兼顾写作完成的。而这两门技术正是如今 360 软件系列的最原始版本。
所以,令程序员头疼的问题出现了转折的余地。在现在的最新的技术中,一些原始存在着的部分并没有被彻底改动。
绝大多数新程序语言及其框架结构都只需要改变编程核心思维,然后用各种不同的方法来实现它们。
也就是说,所有我们觉得庞杂的编程思维,其实就像电视剧 The A-Team(天龙特攻队)中的任意几集一样,也只是吸收了最原始版本的几缕精华而已。于我个人而言,原始版本才是称得上是最佳的创作。
一个新的电影版的 The A-Team (天龙特攻队) 的话,其实你可以猜到接下来会上演什么桥段了,例如:
- T 打算拒绝登上飞机。
- T 将会因为喝了一个空乘给的牛奶而晕倒。
- HM Murdock 将会把机组人员赶走。
- 那些坏人将会得到应有的惩罚。
同一个电影的不同版本都会对一些细节做稍稍改动,所以想要满足对其电影版变化的期待感,其实只需看多几个版本不同的电影就可以了。
同样的道理,不同的编程语言可能会有一些句法的不同和其他细微差别,但是总体上是极其相似的。
大局观在不同的语言中都是有效的
例如,要理解 Ruby ,你需要理解如何使用面向对象的原则来解决问题。如果你看看其他编程语言,比如 Java、C ++、C# 和 Swift ...它们都是面向对象的!还有 Python ?你猜对了!它也是面向对象的编程语言。
同样的概念也适用于继承。
编程的基础技能不一定是华而不实的。而且他们也不会有很多变化。这是个好消息!
这意味着编程技能,如...
- 学习如何使用单个函数调用将大型复杂问题分解成更小的、更易于管理的问题。
- 参考单一职责原则,将类拆分为多个类
- 调研编程问题,以了解其他人是否找到了解决方案。
把你的精力集中在下面的事情上:
- 学习如何分解问题
- 工作在一个敏捷团队中
- 掌握大局观
如果你做了所有这些,你将可以使用任何编程语言来构建真正的项目了。
不要陷入无尽追逐新的看起来有价值的东西
试着去学习全部是很吸引人的一件事儿……不应该仅仅停留在理解事物的表面层次
你可以选择广泛地涉猎,也可以专研某一项事物,但是,你不能两者皆得。
如果你选择花费大量的精力在某个特殊的工具或者某个框架的时候,你会发现这些经历会对于你学习其他的语言或者框架会很有帮助。
某种特别的技术最酷的方面不一定是它最重要的地方
如果你去一些黑客新闻网站,你会发现很多尖端的技术。
如果你正在寻找如何闯入网络开发的领域,你应该去学习所有的包括像 Elixir 或者 Rust 那样的尖端技术吗?
也许没必要……
学习一个可能没有足够大的群体的东西可能是不切合实际的事情。因为你会失去很多大量人们在学习过程中总结的经验。
相反的,选择一个已经被很多信息证实过的技术然后学习那门语言里的基础知识是更可行的办法。
试想一下:
你认为 杰森马耶兹、Lady Gaga、鲍勃马利、艾尔顿·约翰 他们的共同点是什么?答案可能比你想像的要多。
如果你听 Axis of Awesome's Four-Chord Song, 你会发现所有的现代流行乐曲,即使来自于彻底不同风格的乐队都遵循着类似的模版……举个例子,如果你用标准的四和弦,那么很多流行乐曲都可以融入其中。
以上的道理与学习编程语言和框架是一样的。
一旦你学会了一到两种语言,再掌握其他语言并不是特别困难。不同的语言有着不同的特点,当你熟练运用它们时,你就会欣赏不同语言本身的优缺点。
在你职业生涯早期真正掌握基础知识很重要
如果你只是想成为一名专业的开发者,专注于不会改变的东西即可。
我最近写了一篇关于我如何在几乎没有任何 Web 开发经验的情况下被聘为 Web 开发人员的文章。我被雇用,是因为我的编程基础非常强大,即使我没有丰富的具体某种语言或框架的经验。
如果你采取这种心态,并专注于将复杂的问题分解成更容易管理的问题,那么你将学会如何保持与程序员的相关的所需要的技能,即使一切都在变化。
所以如果你害怕做出错误的决定,请深呼吸一下。
编程的基础知识将适用于任何编程语言、框架或心态。
选择语言,学习,然后真正掌握它。在此过程中,你将掌握编程的基础知识,并能够将其应用于任何其他语言或框架。
大家都有了相同的教程,但是人和人之间的区别在于:别人有颗更强大的内心,可怕的是比你聪明的人比你还要更努力!!
当你下定决心,准备前行的时候,剩下的只有坚持了。。。