阅读更多

640?wx_fmt=png&wxfrom=5&wx_lazy=1

编者按:现在很多时候,我们都是面向搜索(或 Google 或百度)、GitHub 编程,那么,在早期没有互联网的情况下,该如何学习编程,成为一名真正的开发者?亦或是作为一名小白,如何进入互联网编程时代?本文作者分享自己从 0 到 1 的编程成长经历,希望帮助更多的开发者踏出职业生涯的第一步。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

我从 11 岁开始就梦想成为一名黑客,一名真正的黑客,但那时我并没有非常高端的电脑,也没有电影里面出现的那种非常炫酷的双显示屏,甚至没有网络。我的电脑配置仅仅是一个普通的 Core 2 Duo 处理器以及 2 GB 内存,但这并不阻碍我想要成为一名黑客。当时家里有几本关于编程和计算机的书籍,但我几乎翻都没翻。因为我想成为一名黑客,而不是只会敲代码的程序员。

我的黑客之旅启蒙于一本非常糟糕的书。如今你想学习黑客技术,大家通常会推荐《黑客之道-漏洞利用的艺术》(https://en.wikipedia.org/wiki/Hacking:_The_Art_of_Exploitation) 这类的黑客书籍。而我那个时候完全是孤身一人,没有黑客朋友也没有互联网。然而,我通读了整本书,做完了书中的每一个练习,于是我自认为自己对基本的黑客技术了如指掌,但遗憾的是我并没有攻克五角大楼。我甚至错误地认为黑客是无所不能的,应该能够独立开发出不仅功能强大而且外观漂亮的软件,目前看来,我真的太傻了。

那么读了这样一本糟糕的书,我有什么收获呢?在没有互联网和线上资源的情况下,它给我让我对计算机有了一个宏观的理解,基于这样粗略的理解实际上我无法做任何事情。只是让我觉得编程不再那么神秘,这些计算机书籍也不再那么令人生畏。

后来再一次,依然没有任何老师和指导的情况下,我拿起一本书继续学习。这一次并不像我想的那么糟糕,学习效果不错。之后我读了更多的书,整夜整夜地学习 C++,一年之后我可以用 C++ 编写出相对不错的程序。接着我又学习了 C#,因为我想开发桌面应用程序。自此我喜欢上了编程,喜欢做一名程序员。

不过需要注意的是,编程需要耗费大量的时间,当你开始创建真正的应用程序时更是如此。那么在没有互联网和老师的指导、只有一台性能很差的电脑的情况下,如何学习编程呢?

方法其实很简单,真的。

选择一门编程语言

每个编程语言都有它自己的优点。选择一个并坚持下去,不断学习直到你真正掌握这门编程语言的精髓。新手常见的错误是,他们总是试图学习尽可能多的编程语言。实际上数量一多久容易导致混乱,缺乏关注度会让自己分心,最后无奈放弃。以下是经常使用的编程语言的简短列表分类:

  • JavaScript、HTML、CSS 和 PHP —— 用于 Web 开发;

  • C#、C ++、JAVA、Python —— 用于桌面和移动开发;

  • C、C ++ 和 Rust —— 用于底层开发;

  • Swift 和 Objective-C —— 用于 iOS 开发。

0?wx_fmt=jpeg

在过去 20 年的任何一个操作系统上,只要你安装一个浏览器,就可以使用 JavaScript 做做客户端的开发了。如果你在线购买了 Ubuntu 操作系统光盘,或者加入了本地 Linux 用户组,那么它们已经为你安装好了 Python,你可以轻松开始 Python 的开发。

你可以安装一个 C/C++ 开发环境进行 C/C++ 的编程,比如 Dev-C++(http://www.bloodshed.net/devcpp.html)(虽然它已经相当古老了),你可以用库的形式管理。在没有互联网连接的情况下获得其他开发环境可能会困难得多。

你可以将 Python 文档(https://docs.python.org/3.5/download.html)下载到本地离线查看。为 C# 安装 monodoc(http://www.mono-project.com/docs/tools+libraries/tools/monodoc/),但这需要你获取一些未默认安装的软件包。至于 Linux 上的 C 语言编程,可以参考manpages(http://www.mono-project.com/docs/tools+libraries/tools/monodoc/),虽然手册的导航功能做的一般。

边学边做

阅读太多的教程和书籍除了让你感到枯燥乏味之外,对你编程技能的提升效果并不好。

提升编程技能最好的方法是探索,实践和创新。当我转到 C# 时,我就没有借助书籍和教程。学成编程最美好的体验就是动手写代码。如果你选择创造而不是模仿,那么你可以学到很多东西。但是大多数开发人员都是从教程开始,然后阅读几本书,以两年的时间都不会自己动手去写任何应用程序或软件,最终他们都放弃了。你需要给自己动力,动力的最好来源就是动手写代码。

不要盲目追求独一无二的应用程序

当我在开发 Macalifa(现在被称为Bread Player)(https://www.microsoft.com/en-us/store/p/bread-player/9nblggh42srx)时,我的朋友和家人经常问我最近有没有开发一些新的、独一无二的东西。事实上我并没有开发那种独一无二的应用程序。客观来说,几乎所有你能想到的应用程序市面上都已经有了,你需要做的是创造更好的应用程序,而不是独一无二的应用程序。如果你追逐唯一性,那么你可能永远都无法完成一个应用程序。相反,我们应当创建一个对用户有益的应用程序,或者比当前市面上体验更好的应用程序。

幸运的是,这解决了没有网络连接的问题。没有网络连接,你无法下载程序。这意味着你的程序与别人的程序是重复的也影响不大 —— 因为你不能得到你正在复制的其他程序,你创建了一些能够解决你的部分问题的东西。

拥抱开源

说实话这需要互联网,但不要忽视这一点,它将在未来有用。

当我开始开发真正的应用程序时,起初没有想过开源将会如此重要,但是在我将 Bread Player 开源之后不久,我逐渐意识到了开源的威力。你不需要开源一个 Linux 级别的项目,任何一个项目,不管多小都是可以的。

一开始,每个人都想快速简单地赚钱,但恕我直言,早期没有人知道你,也没有人会关心你在做什么。积极投身 GitHub(https://github.com/theweavrs/)、Bitbucket(https://bitbucket.org/) 或任何其他 Git 源码网站,以便人们知道你的存在。这比建立一个网站好,因为它完全免费并且不需要很多时间来维护。

开源是一个社区,所以你可以结识优秀的人,也许可以吸引一些贡献者来参与你的项目,如果你够幸运,甚至有人会聘用你。事实上,开源是最大的开发者社区,如果你愿意,你可以学到很多东西。

0?wx_fmt=jpeg

参与多个项目

我曾经在一个项目上持续了 3 年多,这非常不容易。当你一直投身一个项目且开发工作很饱和时,有时候你会对这个项目感到厌倦。相反,如果同时开发多个项目这有助于保持开发热情,如果你厌倦了其中一个项目,可以转到其他项目。这样,你将永远在前进,能够持续开发应用程序。

然而,同时进行多个项目最大的好处是你的成长速度很快。你有多种观点,多种思路、多种方式来解决问题,最主要的是能够获得很多动力。目前我在同时开发超过 5 个应用程序,为了让用户收益,近期我可能就会发布一个。

按自己的思路进行编程

优秀的开发人员用编程来思考和表达。如果你告诉我一个想法,我不会认为这是一个想法,而是将它开发成一个应用程序。一旦你做到用代码思考,用代码说话,那么你就是一名真正的开发者了。

总结

学习编程并不依赖于互联网、指导或者书籍。不要找借口,不要犹豫不决,行动起来!我并不是现代程序员的典范,所以我的建议你可以借鉴,但是自己也需要进行尝试,从错误中学习。记住:这个世界并不需要你,但你可以让它需要你。今天开始行动,明天才会成功。

原文:How to Learn Programming Without an Internet?

链接:https://thecodrr.com/2017/12/08/learning-programming-no-internet

作者:thecodrr

译者:安翔

责编:苏宓

2
0
评论 共 3 条 请登录后发表评论
3 楼 guooo 2018-01-16 12:50
so ?!
2 楼 somefuture 2018-01-12 13:23
所以和题目有什么关系
1 楼 daye0209 2017-12-15 09:36
好文

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 写代码不严谨,我就不配当程序员?

    本文经授权转载自微信公众号:程序人生作者 | 阿文责编 | 伍杏玲出品| 程序人生(ID:coder_life)知乎热榜有个提问:一位准程序员学编程有一段时间了,但是经...

  • 有哪些事是你当了程序员之后才知道的?

    比如程序员真的不好找女朋友

  • 年薪50W,不用写代码,这是什么神仙岗位?

    很多人选择当程序员,就是因为入行薪资就很高,但是工作几年后,他们明显会感受到世界的参差。 程序员群体除了薪资高,彼此之间的薪资待遇差异也很大,有人月薪一两万,也有人年薪能达到五六十万,甚至更高。 一位...

  • 毕业前写了20万行代码,让我从成为同学眼里的面霸

    20万行代码写完,毕业了找一份工作不是问题! 刚一毕业因为找不到工作,就得报名去参加Java培训的大有人在。并不是说参加培训就不好,只不过以你现在这个毕业的时间点参加,就会显得特别匆忙。因为你的压力既来自于...

  • 写代码从不出现bug的程序员在哪?

    该公司表示在招聘简历中找到了华为高管的简历,简历的级别为 21 级,月薪为 27 万,这确实令人惊讶。     华为的等级,估计很多人都不清楚。华为的等级从低到高,数字越高,等级越大,一般的应届生进入的是 ...

  • 写代码不行,考研没考上,怎么办?

    写代码的时候,有位粉丝私聊小孟,遇到了一些问题。 调试完代码,然后聊了聊! 当然,小孟当时也是从迷茫中过来的,幸运的是我在各个阶段都遇到了一些"贵人"。如果有问题的,欢迎评论区留言。 下面先看下这名粉丝的...

  • 大龄程序员的发展方向是做管理还是继续写程序?

    我觉得大龄程序员的发展方向是写程序: 理由如下: 1.我去选择这个专业是因为我感觉计算机的博大精深,并且我喜欢使用这个电脑这个工具,通过更了解这个工具,我可以去做到很多有趣的事情,去实现心中所想达到...

  • 程序员要继续写代码还是转管理?技术管理需要哪些能力?需要培养哪些能力?

    “要继续写代码还是转管理?”“技术转管理求指教”,类似这种问题经常出现在各大技术论坛中,那么技术开发是不是到一定年龄就要转管理,如果转管理,怎么做技术团队的管理呢? 最近利用春节假期阅读了周明耀的...

  • 大龄程序员的未来在何方,该何去何从?

    大龄程序员的界定 老早网上有人说,软件开发干不过30岁,后来又有人说干不过35岁,后来又有人说干不过40岁,后来又有人说干不过45岁……各种说法很多,这里我采取通俗的说法,认为过了30岁的程序员算是大龄程序员,...

  • 程序员一般都需要什么学历?就业前景如何?

    做编程已经有将近8年了,能不能做程序员和学历没有太直接的关系,但不意味着学习编程什么门槛也没有,如果高中以下学历学习编程会相当相当费劲,毕竟和别的行业相比编程的门槛还是比较高,有多少人觉得对编程感兴趣...

  • 非科班出身程序员该如何弥补技术差距?

    伴随着互联网行业的发展,市场对Java工程师的需求一直居高不下,程序员也不再囿于计算机科学或软件工程等个别专业的毕业生。「非科班」程序员的背景五花八门,近一些的是通信、物理、数学、自动化等理工科,远一些的...

  • 5G时代,程序员会失业还是会继续吃香?

    最近大家都在讨论这样一件事情,现在程序员越来越多,...我们从历史角度来看,十几年前,PC时代,那个时候,大家就觉得,每年都有这么多人从事计算机行业的工作,这个世界上的代码好像已经写得差不多了,我们可以...

  • 程序员如何利用技术变现?

    程序员用自己的技术变现,是一件天经地义的事情,完全没必要红着脸在那不好意思。因为写作,我认识了不少读者,他们当中有很大一部分不够自信,迷茫和彷徨,就不知道自己该学些什么,往哪个方向发展,也不知道该怎么...

  • 当程序员具备了抽象思维

    所以,我们大部分的时间并不是在写代码,而是在梳理需求,理清概念。当然,也包括尝试看懂那些“该死的、别人写的”代码。 在我接触的工程师中,能深入理解抽象概念的并不多,能把抽象和面向对象、架构设计进行有机...

  • AI 可以自己写代码了,对程序员来说是个好消息吗?

    一项名为 Codex 的新技术生成 12 种编码语言的程序,甚至可以在它们...但这对资深程序员来说并不构成威胁。 汤姆史密斯一接触到Codex——一种新的人工智能技术,可以编写自己的计算机程序——就给了它一个工作任务。

  • 夸奖对方代码写的好_程序员名言(赞美程序员的句子)

    程序员名言(赞美程序员的句子)来源:www.yuezhilong.com时间:2019-09-28 11:55:17责编:粤之龙文学网人气:2395赞美程序员的句子1. 在你责怪别人之前,先检查自己的代码先想一想自己的假设和其他人的假设。来自不同...

  • 程序员懵逼时刻:几个月后,之前自己写的代码也看不懂了?

    程序员们大多都会有过这样的经历,就是要看别人写的代码。比如说公司有同事离职了,他的业务就需要有其它的小伙伴们给接下来继续维护。 这对好多程序员来说是一种折磨,边看边骂,这写的是什么东西呀。相信好多人都...

  • 程序员的悲哀是什么?

    而实际上这只是大众对此的刻板映像,并不是程序员真正的悲哀毕竟这些标签在其他行业也都是普遍存在的,只是对于程序员群体来说,这些标签被互联网放大了所以显得格外的悲哀但实际上的程序员的悲哀却来自我们程序员这...

  • 非科班出身的程序员,该如何弥补技术差距?

    随着互联网行业的蓬勃发展,市场对于程序员的需求激增,这个职业也不再囿于计算机科学或软件工程等个别专业的毕业生,非计算机专业出身的程序员为数不少,他们的主业曾是物理、数学、自动化,甚至英语、艺术或历史,...

Global site tag (gtag.js) - Google Analytics