编程生涯。 第 3 章 大学

故事的继续 《程序员的职业生涯》.

夜校结束后,就该上大学了。 我们城市有一所技术大学。 它还有一个“数学和计算机科学”学院,该学院有一个“计算机系统”系,在那里培训未来的IT工人——程序员和管理员。
选择余地很小,我申请了“计算机工程编程”专业。 前面还有两场入学考试。 在语言和数学方面。
考试之前进行面试,并选择培训形式 - 预算或合同,即免费或收费。

我的父母参加了我的面试,他们对录取感到担心。 当然,他们选择了合同形式的培训。 顺便说一句,每年的费用约为 500 美元,这在 2003 年是一笔很大的钱,尤其是对于我们这个小镇来说。 我清楚地记得父亲与招生办公室女孩的对话:
那女孩:你可以尝试在预算范围内通过考试,如果不行,就改用合同。 您可以分期付款。
父亲: 不,我们已经决定要申请合同了
那女孩: 嗯,为什么,你不用冒任何风险
父亲: 不,这仍然是一个风险。 告诉我,每个人都在申请合同吗?
那女孩: 是的,每个人都这样。 大概只有白痴才做不到
父亲:那我们就有机会了……他笑着说道,然后我们就签署了入学文件

当然,高中时的表演我父母还记忆犹新,所以这些年来我明白他们为什么这么说。

夏天,入学前,我继续用祖母从养老金中给我的 40 美元买书。
来自令人难忘和重要的:
1. “UML 2.0。 面向对象的分析与设计》。 这本书教会了我如何设计任何复杂性的软件、思考架构、将所有内容分解为组件、编写用例以及绘制 UML 图。 这是前辈、领导和架构师需要的知识。 那些在只有想法描述的情况下从虚无中具体化系统的人。
我认识一些已经超过 30 岁的人,他们仍然无法做出决定,除非有来自上层、来自更高级别的开发人员的命令。 在自由职业和远程工作中,当您经常与客户一对一工作时,这些知识也是非常宝贵的。
它们也与创建新应用程序和服务的独立开发人员相关。 尽管很少有人费心去细节设计。 这就是为什么我们拥有如此高质量的软件,吞噬所有内存,并且用户体验不正常。
2. “ANSI C++ 98 标准”。 不算是一本书,但它包含了 800 多页的背景信息。 当然,我并没有逐节阅读,而是在开发我的C++编译器时参考了特定的语言规则。 在学习和实施该标准之后,该语言的知识深度无法用任何美妙的形容词来形容。 我们可以说您了解该语言的一切,甚至更多。 研究该标准需要花费很长时间、艰苦的工作。 但我还有 5 年的大学生活,所以没有人逼我
3. 《Delphi 6.实用指南》。。 这是向 GUI 和美观的世界的快速飞跃。 几乎没有入门门槛,而且我对 Pascal 已经很了解了。 在大学学习期间,我用 Delphi 编写了大部分商业程序。 这是为大学研究生、小型企业和政府会计设计的软件。 机构。 然后还有几个自由订单。 XNUMX 年代中期,Delphi 主导了 Windows 开发市场。 到目前为止,在本地商店的结账处,您可以看到具有熟悉的字体和控件的程序,这立即将 Delphi 应用程序与任何其他应用程序区分开来
4. 《MFC教程》。 掌握了 Delphi 后,继续使用 C++ 创建 UI 就顺理成章了。 这要困难得多,并不是一切都顺利并且可以理解。 不过,我也把这项技术带到了商业项目的应用阶段。 一家德国防病毒公司分发了我的程序,该程序至今仍是用 MFC 编写的。
5. “3 个带有 MSDN Library 2001 的磁盘”。 我当时还没有上网,而且据我所知,MSDN Library 在 2003 年还没有上线。 无论如何,对我来说,在本地 PC 上安装 MSDN 参考书并轻松找到任何 WinApi 函数或 MFC 类的文档都更容易。
编程生涯。 第 3 章 大学
2002-2004 年期间阅读的最重要的书籍

这些是 2002 年至 2004 年期间阅读的书​​籍。 当然,现在这是破烂的遗产,正在使用.NET和Web技术批量重写。 但这是我的路,也许你们中的一些人也有类似的路。

第一学期

暑假即将结束,又到了大学入学考试的时间。 一切都很顺利。 我通过了语言和数学考试,并入读计算机系统编程专业的第一年。
九月一号,如我所料,我去上了人生中的第一堂课。 “学生时代是人生中最灿烂的时光,”我妈妈告诉我。 我心甘情愿地相信了。
第一天,三对通识科目通过,大家在群里互相认识,整体给大学留下了愉快的印象。
最后他们开始教我们真正的 C 编程! 此外,他们还教授计算机科学的历史、数字技术以及许多其他与我相关的信息。 甚至还发誓。 这个分析很有用,因为它让我更深入地理解了深受尊敬的唐纳德·高德纳 (Donald Knuth) 所写的内容。

编程课程对我来说是在一种积极的氛围中进行的。 最后,人们向我寻求帮助。 我感到被需要。 课程一开始,我们就被布置了编写程序的任务。 该任务设计为一对半,然后进行半小时的测试。 我在 3-5 分钟内完成了作业,剩下的时间我在办公室里走来走去,帮助其他人解决问题。
没有足够的电脑供整个团队使用,所以大多数时候我们一次坐在两台电脑前。 看到我的能力,三四个人,有时甚至五六个人坐在我的办公桌附近,毫不犹豫地坐下来学习我几年前从克尼根和里奇的书中学到的东西。
我的同学看到了我的能力,自己提出问题,或者主动提出在课后一起出去玩。 这就是我结识了很多朋友的方式,其中大多数人至今仍然是朋友。

冬天,到了第一堂课的时间。 总共需要选修 4 门科目:两类高等数学、历史和编程。 一切都过去了,有的2分,有的4分。然后我被自动分配到编程。 老师们已经了解我的技能,所以他们认为没有必要测试我。 我很高兴地带着我的记录本出现在会议上并立即在上面签名,正要回家时,我的同学让我留下来站在门外。 出色地。 我站在办公室出口的窗台上,开始等待。 我旁边还有一个小伙子,也自动通过了考试。
“你为什么留在这里?”我问道
—“我想通过解决问题来赚钱。 你为什么在这?
- “我也是。 我只是不会赚钱。 如果你需要帮助,那么出于我的善意,我会做出决定。”
对手犹豫了一下,低声回应了一句。

过了一会儿,同学们开始离开观众席,带走了折叠好的试卷纸。
“帮我决定,”第一个冒失鬼问道。 “好吧,我现在就决定。”我回答道。 不到五分钟,我就用圆珠笔在一张皱巴巴的纸上写下了答案,然后还给了我。 看到这个计划奏效后,人们开始更频繁地离开观众席,有时甚至一次两三个人。
我工作的窗台上有三叠树叶。 一包包含新到的 TODO 表格。 我面前是一张“进行中”,旁边放着一包“完成”。
这是我最美好的时光。 整个团队将近 20 人,都向我寻求帮助。 我帮助了所有人。
而那个想赚钱的家伙几分钟后就匆匆离开了,意识到这里没有什么可抓的,所有的注意力都集中在利他主义者身上。
全组都以四、五年级的成绩通过了考试,我现在有4个朋友,在编程方面拥有不可动摇的权威。

第一笔钱

冬季课程结束后,谣言传遍了整个教职员工,说有一个人可以解决任何编程问题,而我们被分配在家里或课程期间。 而且口碑不仅在新生中传播,也在高年级学生中传播。
正如我已经写过的,在考试的“最佳时刻”之后,我与小组中的每个人都建立了友好的关系,并且我们开始与其中几个人进行非常密切的沟通。 我们成为了真正的朋友,并在大学之外度过了很多时光。 为了简单起见,我们称他们为 Elon 和 Alen(昵称与真实昵称接近)。
我们直呼埃隆的名字,但阿兰这个绰号是为了纪念阿兰·德龙,因为他有能力诱惑任何美女。 女孩们确实围着他转,数量各不相同。 在结识新朋友和当晚建立关系方面,阿兰·德龙无人能及。 他是真正的女性领袖,这对于大多数 IT 专家来说是完全不寻常的。 除了风流韵事之外,阿兰的职业也是一名设计师。 如果他需要画一些东西,例如当时流行的 Web 1.0 格式的闪烁横幅,那么他就能轻松完成。

关于埃隆,可以说的还有很多。 直到大学毕业十年后的今天,我们仍然与他见面。 在他的最初几年里,他是一个瘦弱、沉默寡言的人。 (对于今天开吉普车的大脸家伙来说,情况就不同了)。 然而我还是一样——瘦弱、沉默寡言。 因此,我认为我们很快就找到了共同语言。
经常下课后,我、埃隆和艾伦聚集在一个盖着防水布的啤酒馆里。 首先,它就在大学的街对面,其次,只要一个“卢布”和50戈比,你就可以在两个小时的纵火派对上得到一些好东西。 比如生啤酒和饼干。 但重点不同。
埃隆和艾伦来自其他城市,住在租来的房间里。 他们经常缺钱,有时甚至不得不挨饿。 当他们在卡上收到 10 美元奖学金时,他们在同一天庆祝了幸福的时刻,然后是时候“勒紧裤腰带”并依靠上帝赐予的生活了。

当然,这种情况促使访问学生寻找赚取额外收入的方法。 在他们面前,一臂之遥,坐着一个“明亮的头”,就是我。 它也很柔韧,很少拒绝帮助别人。
我不知道我描述的情况是否正确,但最终这些酒吧聚会促成了我职业生涯中第一家 IT 公司的创建,名为 SKS。 这个名字只是由我们姓氏的第一个字母组成。 我们年轻的公司以三位创始人为代表,在接下来的四年里撕裂了竞争对手和整个大学。

埃隆是一名 ROP。 也就是销售部的主管。 也就是说,他的职责包括为我们的外包业务寻找新客户。 销售渠道是横排印刷的A4纸宣传单,上面简单地写着:“解决编程问题”。 下面是埃隆的电话号码。
这种户外广告被放置在每个楼层,可以出现学习编程的学生。
另外一个在客户忠诚度方面更强的方法是通过口碑传播的销售渠道。

商业模式很简单。 一位大学生通过推荐或广告联系了我们。 他描述了一个需要在一定期限内解决的编程问题,我以学生价格解决了它。 埃隆参与销售并获得了他的提成。 阿兰·德龙 (Alain Delon) 很少参与我们的业务,但如果我们需要进行设计、图片或吸引更多客户,他总是会提供帮助。 凭借他的魅力,他给我们带来了很多新朋友。 我所要做的就是以每天 5-10 个任务的速度处理这个管道。 截止日期很严格——不超过一周。 通常情况下,这件事必须在昨天完成。 因此,这样的情况很快教会了我如何“心流”地编写程序,而不是被5,9级地震或窗外重大事故等每一件小事分散注意力。

在最热的季节,开学前,也就是20月和2月,我的电脑上似乎有整个大学的任务。 幸运的是,他们中的大多数都是同一类型,特别是当我们由整个集团的代表代表的批发商联系时。 然后可以执行 3 项任务,例如在汇编程序中,仅更改 2003-2005 行。 在这样的季节里,线索如河水般流淌。 我们唯一缺少的是软盘。 XNUMX-XNUMX年,我市贫困学生还没有网络转账的情况。 此外,没有付款保证,现在称为托管。 因此,SKS公司作为订单履行者,在大学境内进行了预约,我们给了 软盘 与解决方案。 几乎没有退款(来自英语退款 - 应客户要求退回付款)。 如果他们能了解我在软盘上的 readme.txt 文件中添加的内容,每个人都会很高兴并获得 4-5 分。 尽管如此,一个完整运行的程序的简单演示也常常引起教师的惊叹效果。

当然,价格是荒谬的,但我们还是按数量买的。 例如,一项典型的家庭任务成本为 2-3 美元。 课程作业 10 美元。 候选人工作计划中的头奖曾一度落空,一名准备答辩的研究生申请时的奖金高达 20 美元。 旺季时,这笔收入可以乘以100个客户,最终超过了城市的平均工资。 我们感觉很酷。 他们可以负担得起夜总会的费用,并在那里尽情享受,而不是为最后一分钱而窒息。

从我的技能的角度来看,它们随着每一个新的学生任务而成倍增加。 我们开始收到其他院系的申请,有不同的培训计划。 当我们转向 C++/MFC 时,一些高年级学生已经在使用 Java 和 XML 来充分发挥其潜力。 有些需要汇编程序,有些需要 PHP。 在解决问题时,我为自己学到了一大堆技术、库、数据存储格式和算法。
这种普遍主义至今仍伴随着我。 开展项目时还会使用各种技术和平台。 现在我可以为任何平台、操作系统或设备编写软件或应用程序。 当然,质量会有所不同,但对于我主要处理的业务来说,预算通常很重要。 对于他们来说,一个人的管弦乐队意味着削减预算,就像我可以用我的技能取代的开发人员数量一样多。

如果要说在大学学习给我带来的最大收获,那就不是算法或者哲学的讲座了。 而且它不会像人们对大学的流行说法那样“学会学习”。 首先,这些人是我们在培训后仍保持友好关系的人。 其次,正是这家SKS公司将我塑造成一名专业的开发人员,拥有真实且多样化的订单。
我想记住一句话,非常适合这个故事的这一部分: 当其他人开始使用他的程序并为其付费时,一个人就成为程序员。.

由此,SKS公司品牌不仅在学生圈子里家喻户晓,而且在教师界也家喻户晓。 甚至有一次,一位老师来到我家,让我帮助他编写一个程序来满足他的科学需求。 反过来,他在他的专业领域也为我提供了帮助。 我们都全神贯注于工作,以至于天一亮就睡着了。 他坐在沙发上,我坐在电脑前的椅子上。 但他们都完成了自己的任务,并且都对彼此的工作感到满意。

转向命运

大学四年级开始了。 完成后授予学士学位的最后课程。 实际上没有通识教育科目,只有与计算机和网络相关的科目。 现在,有时我会后悔自己没有时间或没有对相同的电子设备或网络的内部结构表现出兴趣。 现在我出于必要而完成这个,但我确信这些基本知识对于任何开发人员都是必要的。 另一方面,你不可能知道一切。
我正在编写自己的 C++ 编译器,它已经能够根据标准检查代码错误并生成汇编指令。 我梦想能够以每个许可证 100 美元的价格出售我的编译器。 我把这个乘以一千个顾客,然后在心里
被传送到 Hammer 上,50 Cent 的低音从扬声器和后座的帅哥们中传出。 19岁你能做什么——这就是优先事项。 我自制的编译器的窍门是它会产生俄语错误,而不是 Visual C++ 和 gcc 中的英语,这不是每个人都能理解的。 我认为这是世界上尚未发明的一项杀手级功能。 我认为没有必要再多说。 它没有达到销售目的。 然而,我对 C++ 语言有了深入的了解,这些知识一直支撑着我直到今天。

在我的第四年,我上大学的次数越来越少,因为我知道大部分课程。 对于我不知道的事情,我通过与一位懂电子学或概率论的学生交换来解决。 我们当时没有想到的。 还有一根电线上的隐形耳机,答案是通过耳机听写的。 并跑出教室,让专业的大师在 2 分钟内为你写出整个考试的答案。 这是一个伟大的时刻。
在同一课程中,我开始考虑一份真正的工作。 拥有办公室、真正的商业应用和体面的薪水。
但当时在我们这个城市,你只能找到一份程序员的工作
“1C:会计”,根本不适合我。 虽然出于绝望,但我已经做好了准备。 当时,我的女朋友向我施加压力,要求我搬到单独的公寓。
否则,和父母隔着墙睡根本不值得。 是的,我已经厌倦了解决学生问题,我想要更多的东西。

麻烦不知从何而来。 我想到在 mail.ru 上登广告,说我正在寻找一份薪水为 300 美元的 C++/Java/Delphi 程序员职位。 这是2006年的事。 他们的回答基本上是这样的:“也许你应该写信给比尔·盖茨提出这样的薪资要求?” 这让我很沮丧,但在一堆类似的答案中,有一个人让我成为了自由职业者。 这是在我们贫穷的拉斯维加斯做我知道如何做的事唯一能赚大钱的机会。
就这样,大学的学习顺利地进入了自由职业交流的工作。 结束大学这个话题,我们可以说:我没有上五年级。 有一个节目和“免费参加”这样的概念,我使用了5%。
唯一需要做的就是捍卫专业文凭。 在朋友的帮助下我成功地做到了这一点。 值得一提的是,到这门课时,我已经从父母那里搬到了租来的公寓,并买了一辆新车。 这就是我作为专业开发人员的职业生涯的开始。

接下来的章节将专门讨论单个项目、最严重的失败和最不合格的客户。 自由职业生涯从 5 到 40 美元/小时,创办了自己的初创公司,我如何被禁止参加 Upwork 自由职业交易所,以及我如何从自由职业成为世界第二大石油公司的团队领导。 我如何在办公室和创业后重返远程工作,以及如何通过社交和坏习惯解决内部问题。

待续...

来源: habr.com

添加评论