作为全职程序员的第一个月
老师您做程序员这么多年,是怎么保持不脱发的?
——我这是假发,我已经脱完了
0. 开篇碎碎念
入职一个多月,除去培训之类的时间,作为全职程序员大概刚好一个月。从最近博客发的内容也可以看出来,现在的我大概是程序员届最菜的那一批。别人做程序员,要么靠过硬的专业知识,要么跨专业靠勤奋的自我学习。我得到现在这个职位,靠的大概是去实习面试时丢了一辆一千多的自行车攒的运气。。。。。。
对于一个大一之后没怎么写过代码,研一暑假因为导师需求强行学了一点Python的人来说,入职之后面对的是主管希望我尽快上手项目的需求和我才刚上手《C++ primer》的羸弱基础之间的巨大矛盾。压力不能说不大,不过对于我这种记吃不记打,一点也不自觉的人来说,压力倒也是自我提升的动力。毕业前把很多时间浪费在了刷知乎上,那时候看到的答主们读过的书摆起来都是一米多高往上的,想想自己连一本书都看不下来,心中佩服之外,会觉得跟他们之间差了一个银河。现在没办法,逃不过了,我清楚地记得6.1那天,在床上翻来覆去睡不着,最后惊坐起,在京东下单了四本专业书,然后满足地睡去。
1. 程序语言修炼
首先,要在此向 Lippman 等《C++ primer》的作者表示崇高的敬意。我觉得这本书真的拉近了我与C++之间的距离。之前总会被诸如“C++语言特性太多太碎”等言语吓退,但边干活边学的过程中发现,无论是刷题还是业务代码,大部分的语言特性都能在书中找到。当然我知道这是远远不够的,但是顺利入门是进化的基础。
《C++ primer》这本书带给我的除了语言的基本特性,还有对C++的信任感。书里不断强调尽管去用你需要的新特性,语言本身可以保证其效率。也很感谢公司的导师给我指了一条明路,让我在熟悉C++的道路上少走弯路。
在一段时间的磨合之后,带有新特性的C++逐渐让我想起了Python,渐渐有种相见恨晚的感觉。拿到庞大的业务工程代码,也让我对软件工程逐渐有了概念。掌握程序语言,或者至少说掌握一门程序设计语言,不仅仅是指其语言特性,还有其构建工程的方式、运行方式、Debug技巧等等内容。随着接触的不断增多,越来越意识到自己欠缺的知识有多么庞杂,不过这至少意味着入职后的这段时间或多或少有了进步。
我开始制定计划,把《C++ primer》按章节划分为三个紧迫级别,争取在三周内通读一遍,不求掌握其中的每一个细节,但求在有需求时知道该去找哪些东西。也开启了博客的日更计划。之前看到过一位名人提到过他坚持写作的方法:跟自己约定每天写50字,以及坚持运动的方式:和自己约定每天做一个俯卧撑。天呐这么少的量,一年都不会有多少吧?但是这个原则的奥妙在于,其实坚持做一件事情的时候,每天开始是最难的。一旦开始写下50个字,也许如泉涌的文思会促使你写下更多,而如果今天状态不佳,只写50个字也没什么难度。所以平时的日更也会遵循这个原则,这也是让我坚持了一周的重要原因。而开始用博客记录自己的所学之后,会促使自己在白天的学习中更加专注,以便积累晚上日更的素材,甚至会为了不要总更很基本、甚至有些幼稚的内容而促使自己深挖一点。而光是第一周之后,自己在CSDN里的总排名就从46W上升到了36W,这实在是一件很有成就感的事情。
诸如此类的尝试,让自己的生活逐渐走上了正轨,也开始找到了属于自己的生活节奏。在此记录下来,也是希望能够延续更久一些。
2. 程序设计修炼
之所以把程序设计和程序语言分开来,是因为逐渐意识到写代码,也分工程性和艺术性的。Linux 之父 Linus 说写代码是艺术创作,这也就意味着大多数程序员可能没法称得上是艺术家。完成一个工程和优雅地完成一个工程是完全不同的事情。以我对自己的了解,自己的工程能力向来弱于自己的创造力,也就意味着如果早做准备,那么当程序语言的基础不再是我的瓶颈时,我是有可能获得一点优势的。当然空想谁都会,落实到行动又是另外一回事。现在看设计模式还是懵懵懂懂,不过也不求甚解,想来没有实际的工程经验,也不会意识到其精妙之处。但是现在学不会是一回事,现在学不学是另一回事,既然是一门需要时间来沉淀的学文,那就更要早点接触,让它在脑海中慢慢地生根发芽。
仰望星空的同时也要脚踏实地,工作时常常感觉力不从心,这时候仅仅是完成工作可能就会榨干自己的脑力,也就无法产生很多的创造性,写出来的代码自然也就谈不上什么艺术性,这个问题只能先记录在案,希望自己早日达到从容、优雅地写代码。
附近期在读 or 待读的书单
《C++ Primer》
《鸟哥的Linux私房菜》
《深入理解计算机系统》
《程序员修炼之道》
《编译原理》
研究表明,显性知识可能只占自己知识总量的20%,同理,写出来的大概也只有脑海中想表达的20%,所以先就这样吧,over~