从课堂代码到NASA挑战赛:Carlos Orozco的科技进阶之路
Carlos Orozco 决定学习计算机科学,是因为他意识到编程的本质是将思想形式化,并系统性地解决问题。他被逻辑、数学和创造力的结合所吸引,这是一个严谨的思维能够带来实际成果的领域。
当他开始参与实际项目时,他的兴趣进一步加深。从那时起,计算机科学不再是抽象的理论。在真实的约束条件下设计结构化解决方案,并亲眼见证软件在实际环境中的运行,让他确信这就是他想要从事的职业。
如今,Carlos 拥有计算机科学博士学位,在两所大学担任教授,并担任哥伦比亚科学、技术与创新部量子软件架构的专家顾问。作为一名高级软件工程师,他曾与 EPAM 等全球性公司合作,并在 NASA 国际空间应用程序挑战赛 (NASA International Space Apps Challenge) 中担任领导职务。在专业工作之余,Carlos 还撰写了专注于软件架构、工程方法论和复杂系统形式化结构的著作和学术论文。在继续深造的同时,Carlos 也是 JetBrains 学生包的忠实用户。
“学生包成为了通往现实世界高影响力项目的桥梁,让我们能够使用与专业领域相同的生态系统。”
我们与 Carlos 聊了聊如何学习计算机科学、如何应对面试,以及专业工具如何助力他的职业旅程。
从医疗保健到 NASA 以及国家级项目
Carlos 在科技行业的第一份工作始于 13 年前,当时他在医疗保健领域担任 Java 开发人员。通过大学建立的人脉,他得知了这个机会并提交了申请。在实际生产系统中工作的两年,让他深刻理解了软件开发的真正含义:责任、可靠性和长远思考。
“那是我真正理解专业软件开发所要求的标准的地方。”
从那时起,他的职业生涯不断演进。在攻读天文学期间,他以参赛者身份加入了 NASA 国际空间应用程序挑战赛,并留了下来。随着时间的推移,他成为了专家评委和合作者,负责评估各团队如何将复杂的科学挑战转化为技术合理、结构完善的软件解决方案。
NASA 国际空间应用程序团队致力于解决数据分析、可持续发展、地球与空间科学以及开放数据方面的挑战——这些项目既需要技术上的精确性,也需要创造性思维。
“像 NASA 国际空间应用程序挑战赛这样的活动汇集了来自科学、工程、设计和数据等多个领域背景的人才,因此清晰地阐述想法并跨学科协作至关重要。”
从全球协作,他的职业路径转向了国家级创新项目。通过担任顾问和教授的工作,他参与了由哥伦比亚科学、技术与创新部资助的计划。如今,他担任顾问,在哥伦比亚的多个项目中承担软件架构主管和量子软件工程专家的角色。
在研究、政策、教育和技术的交叉点工作,改变了他处理系统设计的方式。
“在这些背景下工作,拓宽了你对这些领域如何相互交织的理解,也丰富了你处理复杂问题的方法。”
真正能让你获得录用的技能
获得第一份软件工作不仅仅在于你会写代码。
Carlos 的观点很简单:强大的基础是第一位的——编程基础、数据结构和问题解决能力。技术可以相对快速地学习,但长期的价值来自于你分析问题和推导解决方案的能力。框架会变,思维永存。
但仅有技术能力是不够的。
“在软技能方面,沟通能力、学习意愿和协作工作的能力会产生很大的影响。”
在像 EPAM 和 NASA 国际空间应用程序挑战赛这样的环境中,面试不仅仅是为了得到正确的答案。他们评估的是你在约束条件下的思考方式、协作方式以及你解释工作影响的清晰程度。技术能力是基础要求,而清晰的沟通则让你脱颖而出。雇主雇佣的不仅仅是程序员,更是问题的解决者。
“能够证明自己技术扎实、能解释自己的思路并能与他人有效合作,在高级别面试和复杂的现实项目中会产生显著差异。这个过程中最被低估的技能之一就是如何推销自己。”
面试策略:为什么拒绝是计划的一部分
Carlos 很有条理地准备面试——研读《程序员面试金典》(Cracking the Coding Interview) 等经典书籍,磨练技术技能,并通过构建副项目来测试实际的设计决策。但真正的成长来自于一些不那么舒适的经历。
“每个人都倾向于分享成功故事,但在我的案例中,在获得目标职位之前,每十次面试我会被拒绝九次。这些拒绝帮助我发现了差距、改进了自己并建立了韧性。”
拒绝不是失败,而是反馈。它们暴露了弱点,迫使我进行反思。拒绝不是成功的对立面,而是过程的一部分。
在快速发展的世界中学习计算机科学
Carlos 认为当今计算机科学专业的学生面临两个主要挑战:速度和过载。
技术发展迅速。新的工具和框架不断涌现,许多学生在跟上潮流和打好坚实基础之间难以平衡。
与此同时,信息无处不在。随着无数的课程、教程和内容,很容易在不同主题之间跳跃而无法深入。
他的解决方案是:平衡。
“我相信当今学习计算机科学最有效的方法是结合正规教育、自主学习和负责任地使用 AI 工具。”
正规培训建立结构和坚实的理论基础。自学允许深度探索。而 AI——在正确使用时——是辅助,而不是替代。
Carlos 使用 AI 进行探索、验证和处理重复性任务。但理解必须放在首位。学生应该独立解决问题,推导算法,并亲自编写代码。AI 可以检查解决方案或建议替代方案,但它永远不应取代思考。
正确使用 AI,它会成为加速器,而不是捷径。
为什么专业工具从第一天起就很重要
Carlos 在大学期间首次接触到 JetBrains 生态系统。他注意到这些工具在专业环境中的广泛应用,但直到他步入行业,以及后来在天文学训练期间(那时生产力和代码质量至关重要),他才真正理解了它们的价值。
在学习期间,Carlos 主要使用 IntelliJ IDEA 进行 Java 项目开发。这种设置对于从事涉及后端系统、软件设计和结构化编程的学术项目特别有帮助。这些工具支持代码导航、重构和调试,使处理大型 Java 代码库以及从一开始就应用良好的开发实践变得更加容易。
Carlos 强调了 JetBrains IDE 的几个对学生真正有帮助的功能:
- 智能代码补全和检查——尽早发现错误并养成更好的编码习惯。
- 重构工具——在学习过程中安全地改善代码结构和可读性。
- 调试器——深入了解程序实际执行的过程。
- 代码导航和版本控制集成,特别是在大型项目中——更轻松地浏览和管理代码库。
“这些功能共同帮助学生减少对工具问题的关注,转而专注于学习如何设计和推导软件。”
为了充分利用 JetBrains 学生包,Carlos 给出了一个简单的建议:“不要把你的 IDE 当作文本编辑器,要把它当作一个专业的开发环境。”
构建真实的项目。 运行测试。 自信地重构。 学会驾驭复杂的代码库。
“花时间超越基础知识,”他说,“理解调试器、重构工具和代码检查,而不仅仅是代码编辑。探索版本控制集成并练习处理大型项目。这些习惯可以直接迁移到行业中。”
这就是学习转化为工程实践的过程。
纪律、精力与长期主义
平衡工程师、作者、博士生和教授的角色并非偶然。对 Carlos 来说,生产力源于纪律和明确的优先级。
在如此多的职责中管理时间,需要提前规划,并有意识地支配自己的精力。
“这种生活方式要求很高,常常令人精疲力竭。它需要不断的调整和自我觉察。”
使之可持续的不是生产力技巧,而是对工作本身真正的兴趣——教学、研究、构建系统。
当被问及会对今天的计算机科学学生说些什么时,他的回答很简单:
“享受这段旅程。学习计算机科学是一场马拉松,而不是短跑。会有充满挑战的时刻,但保持好奇心、耐心和坚持不懈会带来真正的改变。这个过程可能很艰苦,但结果——能够构建、理解和塑造复杂的系统——是非常值得的。”
推荐阅读、观看和关注的内容
为了打好坚实的基础,Carlos 建议阅读:
- 《代码整洁之道》(Clean Code) —— Robert C. Martin
- 《设计模式》(Design Patterns) —— Erich Gamma 等人
- 《算法导论》(Introduction to Algorithms) —— Thomas H. Cormen 等人
“对于博客和在线内容,”他补充道,“Martin Fowler 的博客、freeCodeCamp 和 GeeksforGeeks 在广泛的主题上提供了高质量的解释。”
在 YouTube 上,像 Computerphile、MIT OpenCourseWare 和 CS50 这样的频道既提供了概念上的清晰度,也提供了实际的见解。
当然,他自己的书也是一个选择。“尽管那可能需要你学习西班牙语,”他开玩笑说。
Carlos 还推荐 roadmap.sh 作为理解不同学习路径以及技能如何随时间关联的实用方式。
“结合现代 IDE、专业工具和 AI,这些资源可以显著提升学习体验。”
像 Carlos 一样学习
如果你想从第一天起就开始建立强大的基础并使用专业工具,请探索 JetBrains 学生包,并开始像对待真正的工程工作一样对待你的项目。
你想分享自己进入科技行业的旅程吗?请告诉我们——我们很乐意听听你的故事。