Refined

Refined

写给集训队项目部的新成员们

51
2024-02-27
写给集训队项目部的新成员们

引言

同学你好。

首先由衷地祝贺你一路过关斩将,通过集训队的考核成为预备队员。在上学期到寒假的各项培训中,你学习了 C 语言、C++基础以及基本的算法知识。平心而论,这些知识学习起来并不容易,一路坚持学习到这里的你,想必对计算机知识有着高昂的热情,并且付出了不小的努力。那么就在这里为你自己鼓个掌吧——你已经迈出了意义非凡的一步。

自这学期开始,你将成为集训队项目部的一员。在项目部,你将学习到与算法风格迥异的知识。相比于算法的学习,软件项目开发所涉及的方向要广泛得多。根据选择方向的不同,你可能会接触到 Python、Go 和 Java 等各种编程语言,学习到诸多从未接触过的新概念与方法论。请你不要担心,在项目开发中,算法知识仍然十分重要,你在此前的培训中掌握的知识将为你打下坚实的基础。而学习新的编程语言,对于已经能熟练使用 C 语言的你而言,并不会是一件难事。随着你对知识的深入了解与实践,这些新概念与新方法也会逐渐为你所用。

开拓与好奇心

曾经我也是一名初学者,在对照着网络上浩如烟海的教程学习的过程中,遇到了相当多的问题,诸如开发环境难以配置,教程版本落后以及遇到奇怪且难以复现的小问题等等。

摸索这些问题的解决方案,是一件相当费时费力的过程。我认为在学习的过程中,完全可以借鉴现成的经验,否则每个人都去做一种重复的摸索,是一种相当大的浪费,而这也正是项目部开设培训课程的主要出发点——将你带上路途。

如上文所说,相比于算法学习,软件项目开发有着诸多方向:软件应用、游戏、嵌入式、系统、大数据、乃至近年兴起的人工智能与机器学习等等。目前,项目部所提供的培训内容,主攻软件应用开发方向。也就是说,在完成本学期的培训之后,你将学习到常见应用软件(Web 网页、小程序)的开发方法,这将作为一项相当有用的技能,为你参加校内的各项竞赛(如 SIPT、互联网+等)铺平道路。

更重要的是,你将学习到从零构建一个软件的思路与方向,这远比具体的知识要宝贵。在懂得思路之后,在开发的各个阶段,即使面对全新的知识,你也能够快速上手,迅速地将新技能应用到你创造的软件项目中。

可以说,由于项目开发方向的广泛,没有人可以称自己为全知全能的专家。因而项目开发的学习,终究是一个不断自学、不断突破的过程。你的成就,完全取决于你自己

循序渐进,不断实践

学习任何知识体系都要遵循从易到难——从简单到复杂的规律。

我在学习 Lisp 时看到一句话:“难道在确定一门语言真正有用之前,就要先把它所有的细节学完吗?”。当然,初学者在开始阶段不可能,也没必要深究它所有的细节,只需要先学习最简单的基础知识——凭借这些基础知识又足够支撑你写最简单的程序,然后让你的简单程序跑起来,这就是一个非常非常好的开始了。

在学习新知识的时候,我建议不要细究艰深复杂的文档,而是要首先了解新知识的作用,并思考是否能从自己已经掌握的知识中迁移出来,从而建立一种感性的认识与简略的理解。依据这些知识,你可以很快速地读懂其他人写的程序,掌握项目的结构,从而,如同过关爬楼一样,自顶向下地快速进行学习。而在知其然之后,你自然可以在有充裕时间的时候来知其所以然,在有了应用经验之后,你会发现你自然而然地掌握了一些晦涩的知识,甚至触类旁通。

如我上文标出的,实践是学习中最重要的,对于项目开发而言尤为如此。你需要把新学习到的知识都在编程实践中应用起来,遇到不清楚的,就去查阅或询问,在这个逐渐迭代的过程中,你的水平会突飞猛进,而你的软件项目也会逐步完善,从粗糙的 demo 变成可用的工程项目。

毕竟,纸上得来终觉浅,绝知此事要躬行。

编写代码以外

在学习项目开发知识之余,请你重视培养自己的编程底力。在接下来的几个学期你将学习的专业课程(如《数据结构与算法》等)在项目开发中有着润物细无声的重要作用。

另外在学有余力时,推荐提升自己的编码规范,培养撰写文档的能力。作为计算机科班学生的你,拥有良好的编码规范、能写出清晰易懂的文档,是难能可贵的优点。

向前进

我进入集训队项目部也有一年时间了。过去的一年里发生了很多事,遇到了诸多挑战,但我还是始终坚持了下来。我认为这是一个好的、有活力的队伍,有着诸多志同道合的人,而这支持着我一路走了下来。

一个好的队伍,的的确确会带来无限的可能性。因为这个队伍由各位队员组成,而各位队员又是创新和创造的主体。在这里,队员们与队伍共同成长和蜕变,由此而形成的价值,积累的经验,很难从他处找寻到。

总而言之,作为一名学长,我由衷地欢迎你加入我们的队伍。祝愿你保持热爱,保持独立,保持平衡,找寻到自己所喜爱的方向!

最后我还想说,对于初学者而言,一定要多想、多看、多试,千万不要怕出错,现在的错误就是下一轮迭代的起点,而下一轮迭代也许就是成功的终点。项目部的下一个变量,就由你来定义与拓展。

以上。

写于 2024 年 2 月