今天我就跟大家说说父亲是如何用行动教会我成为一名程序员的。多年锤炼圆口接口的键盘,2003年有人问键盘没擦过吗?不,是抹不去的岁月痕迹。注重细节的朋友会发现哪些键是程序员用得最多的。除了(ASDW,YUHJ,那是我小时候打拳击剩下的)。虽然这个键盘很旧,但我爸一直舍不得扔掉。2003年,他从二手市场买了这台486Cpu的二手电脑,开始自学组装。我爸只有初中文化。却有着超强的动手能力。零编程基础开始嵌入式开发因为2003年的时候,他刚从一家电子厂辞职。他在电子厂看到了单片机这种东西,看到了他们工程师的工资和待遇。那时,他只是一名著名流水线上的焊工,虽然是一名组长,但他也感受到了自己职业的局限性。(这也给我们带来一个启示,作为一个男人,如果觉得自己的事业没有尽头,就应该尽快跳槽,如果不跳槽,就会在家庭的压力下选择妥协。未来,再也见不到尽头了。),辞职第二天,他买回了这台486奔腾系列的二手电脑,一台模拟编程机(把程序写到芯片上的机器),还有一台汇编语言的入门书,开始了他12年的职业生涯。嵌入式开发之路。(这里给我的启示是,说学就学,不要想着怎么入门,最好的入门方法就是自己动手。)在图书馆抄书的奇书书书偷偷藏在新华书店在他学习C语言的时候。我复制了它。记得上初中的时候,爸爸每周六都会带我去新华书店看书,然后就去了。每次他都让我去看看图书管理员来了没有,然后他就专心在那儿看书。去复制这些代码片段(这种学习方法,在我看来,现在就是个笑话,随便打开一个网站,代码都是堆砌的,不过话又说回来了,这些源代码中你学到了什么,记住了会不会灵活运用?从前辈们的学习方法来看,记录一些常用的代码片段还是很有必要的,你们github有没有自己的一套代码片段,没有的话赶紧收藏吧!)不过我爸每次我问他是什么项目,他都能记得很清楚。当然,刚开始的时候他很痛苦,英语一个字也听不懂。但是大家的基础应该比我爸高很多,所以不要怀疑你能不能学编程,你一定能学会的。程序员的绝技——专注力亲戚们总是对我说:“你啊,坐久了就起来多走走,看看远方,这样就好。”但是我想大部分程序员做不到,因为编程根本停不下来。一旦开始,您将永远喜欢创造。这是写程序的重点。说到这里,我只想问问大家:“你能集中多少小时?”,我把这个问题抛给了爸爸,爸爸笑着对我说:“用煤气,放一个装满水的平底怎么办?”锅要烧多久?”。这是他的一次真实经历,就是用汇编语言编写一个MP3播放器。在调试过程中,他忘记了自己是在烧水。幸运的是,煤气被烧光了!这个故事只是想告诉大家一个道理:“写程序需要保持高度的专注力,但也不能太专注”。编程需要的是流程再造。“钢筋和混凝土”都是现成的,可以直接拿来用。编程和嵌入式开发也是如此。这是一块移植了UCOSII系统的STM32实验板。本板内嵌UCOSII系统,可同时执行多个任务并分配任务优先级。通俗地说,就是边听音乐边打字。尽管看起来很低级,但嵌入式就是它的本质。很高端,但是当我问我爸的时候,你这个板子是怎么做的?你真的那么擅长用C语言写操作系统吗?棋盘是自己画的,其他筹码都是买来的。程序是自己写的。原来嵌入式开发做的就是负责各个功能模块的合理设计,用程序来调度。现在成熟的芯片都是厂家自己写的,对外提供调用接口。开发者可以在不知道其中内容的情况下进行开发。这对我以后学习编程有很大的启发。我的老师曾经说过:“软件工程师之所以能够编写程序来解决实际问题,是因为他们懂得流程再造,并用真轮子(技术)来实现这个流程。”成为一名软件工程师最重要的不是编程语言能力有多强大,而是如何通过计算机科学简化现实生活中繁琐的过程。我认为这才是真正的软件工程师。虽然我爸的编程基础不如我,但是他的流程再造能力比我强多了。也许这就是经验。这是它给我的串口响应发送过程(可能有误)。我把我爸逼成了伪全栈大二。学了C#,可以做一个简单的winform程序,然后就开始心慌了。是的,我跟我爸吹牛。当时我爸高兴坏了,直接给我接了一个真正的项目。这是真钱,我傻傻地同意了。因为是真实的项目,所以程序的容错性肯定是非常高的。总不能点几下就抛出异常吧,不过我做的项目都是校园里的实验,随便玩玩。虽然老师给了好评,但这都是大学里的花拳绣腿。真正派上用场的时候,还真是显得苍白无力。当然,我的程序不会按时完成。爸爸意识到了,他笑着对我说:“教我学C#,我们一起讨论这个程序吧。”没办法,只能让我爸学,一个星期后,他就和我并行了。发展,这是我和爸爸同台工作最难忘的回忆;为什么我爸一周就能学会C#(只有C语音基础)?语言是通用的,唯一改变的是表达方式、思维方式和处理方式。它会改变。老师一开始就教我们画一些简单的流程图,但很多人觉得太简单了,没有意义,于是开始追求那些华丽的界面来满足自己的好奇心和虚荣心,却错过了真正的编程技能,这就是我当时的身份。很多人觉得大学的课程很基础,真正用在项目上的很少,根本用不上项目,书本上讲的已经落伍了。其实,书是教我们写字(编程)的姿势(方法),教我们怎么拿笔(写程序),怎么写出好的字(好程序),学会了就能写出好字(好节目)。所以有很多人手写(编程)不好,就是小时候练手写(初学编程),急功近利,想玩(炫耀)。这是我最深刻的反思,也是我对所有初学者最好的忠告。编程要耐得住寂寞!程序员必须始终了解自己。于是就答应了这个项目,还好我爸人不错,不然我就亏本了。作为程序员,你必须知道自己的上限。知己知彼(我行,你不行),百战百胜(我就是要那么多钱)。是的,时刻了解自己的水平上限,有助于评估自己的价值,比如换了工作,你的水平和同龄人相比在哪里。决定市场价格的不是企业本身,而是社会必要劳动时间(其他程序员需要多长时间才能做出来)。而最好的了解就是看最新的技术,了解行业的动向。这一次,他能够在高薪阶层站稳脚跟。作为一个值得信赖的程序员,我爸当时对我说:“既然你答应了别人,不管你有千千万万的理由,你都要为他们完成。如果你不能完成,那是你的错,因为你有答应别人的。”这里讲的不是理性和规范,而是程序员的职业道德。正因如此,我爸才能够接手很多外包项目,因为在别人眼里他只有两个字:“靠谱”。也许这就是程序员的个人烙印吧。如果能在企业中有这样的品牌,你能不升职吗?总有人问:“我学编程晚了吗?”、“30岁以后还能继续写程序吗?”、“学编程难吗?”看完这篇文章,相信你不会再问了,因为如果你真的热爱编程,就应该像我父亲一样,无论现实如何逼迫,初心都不会忘记。虽然我没有太多口头表达与父亲的交流,这么多年对我的影响,足以让我说:“遵从父亲的教诲,不忘初心。”
