现在是时候认真考虑提高你的编程技能了!这是给自己设定的一个简单的职业生涯提升目标,但是“成为一个高薪程序员”不是一个简单的目标。一方面,“我要变得更优秀”意味着你知道“更优秀”是什么样的。另一方面,太多立志改善的人却不知道怎么做。
现在是时候认真考虑提高你的编程技能了!
这是给自己设定的一个简单的职业生涯提升目标,但是“成为一个高薪程序员”不是一个简单的目标。一方面,“我要变得更优秀”意味着你知道“更优秀”是什么样的。另一方面,太多立志改善的人却不知道怎么做。
下面我要分享8个可操作的,可提高编程技能的行为准则。
1.提醒自己得学习
学习的第一步是要认识到,你不懂。因为不懂,所以才需要学习。这听上去很明显,但有经验的程序员肯定记得自己用了多长时间才能做好这个心理建设。太 多的计算机科学学生带着一种傲慢毕业:“我懂得最多”,自以为是地认为他们知道一切,并且有一种想要证明给每一个新同事看的强烈欲望。换句话说:这样一种 “我知道我懂我了解!”的态度会成为阻碍你学习新东西的拦路虎。
2.不要竭力证明自己是对的
要成就伟大——而不只是优秀——你必须从经验中学习。但要小心,经验会让我们重复错误的行为,养成坏习惯。我们都遇到过有着8年经验的程序员……不断说自己的经验丰富,倚老卖老。为了避免一叶障目,你应该回顾自己所做的一切,问问自己,“怎样才能做得更好?”
新手软件开发人员(以及很多有经验的开发人员)观看他们自己的代码是为了欣赏它的精彩。他们编写测试是为了证明其代码可工作,而不是为了让它失败。真正伟大的程序员会积极寻找他们错误的地方——因为他们知道,最终用户必将会发现他们遗漏的缺陷。
3.“代码可工作”不是你止步的标志;而是你开始的地方
是的,第一步是写出高质量的软件,满足规格说明。普通的程序员往往在这里就放弃了,直接跳到下一件事。
但是就此当作是“已经完成”而止步,就像是拍了张照片就希望它成为一件艺术品一样荒诞可笑。伟大的程序员知道第一次迭代就只是第一次迭代而已。可以工作——那么恭喜你!——但是这不是结束。你还需要让代码变得更好。
一些流程定义了何为“更好”。有没有价值使其更快?文档更简单?更可重用?更可靠?对于不同的应用程序,这些问题的答案也各不相同,但是这个流程是不变的。
4.写三遍
好的程序员编写可工作的软件。而那些伟大的程序员编写的软件运行起来极为出色。这很少是能够一蹴而就的。最好的软件通常要写三次:
首先,你写软件是为了证明给自己(或客户)看该解决方案是可能的。其他人可能不会意识到这仅仅是一个证明型的概念,但是你知道。
第二,让它工作起来。
第三,让它正确工作。
这种程度的工作可能并不明显,如果你去看那些最佳开发人员的工作的话。他们做的一切都显得如此才华横溢,但你没有看到的是,即使是明星开发者,在将 自己的软件展示给别人看之前,可能也扔掉过第一次和第二次的版本。抛弃代码重新开始是一个能将“力求完美”纳入个人工作流程的好方法。
如果不出意外,“写三遍”会告诉你很多解决问题的方法。它可以避免你陷入困境。
5.阅读代码,阅读很多代码
你可能已经听过这个建议,实际上这是提高编程技巧最常见也是最有价值的建议。但是很多人不知道阅读别人的代码之所以如此重要的原因。
当你阅读别人的代码时,你要去看别人是如何解决问题的。但不要把它当作文学来看;把它当做一个教训,一个挑战。为了变得更好,你得问自己:
我会怎么写那样的代码块?在你看到另一种解决方法之后,你有什么不同的做法?
我学到了什么?怎么应用那个技术到我以前写的代码? (“我从来没有想过在那里使用递归下降……”)。
我要如何改进这个代码?如果它是一个开源项目,而且你相信自己有一个更好的解决方案,那么就去做!
用作者的风格写代码。练习这个可以帮助你了解写软件的那个人的思维。
不要光想不做。写下你的答案,无论是在个人日记,博客,代码审查过程中,还是在开发者社区论坛上。就像给朋友解释问题可以帮助你理清解决方案,写下 并分享你的分析也可以帮助你了解为什么你对别人的代码会有这样一种既定方式的反应。这就是我前面提到的自省,自省可以帮助你冷静地判断自己的长处和短处。
警告:阅读大量的代码很容易,但要凭此就成为一个伟大的程序员未免异想天开。许多开发人员会通过开源代码或其他软件来“找寻答案”,而大多数人的做 法是,复制和粘贴恰巧出现的可解决类似问题的代码。这样做实际上是在让你变成一个更差的程序员,因为你只是盲目地接受别人的智慧,而没有消化吸收。
6.写代码,而不仅仅是作为分配的任务
工作于个人编程项目有很多优势。首先,它提供了一个学习工具和技术的途径,而这些工具和技术在你当前的工作中是学不到的,但是这能让你在找下一份工作时更有竞争力。无论你是致力于开源项目,还是为当地的社区组织提供无偿的劳动,都可以让你增加技术技能和自信。
为了好玩而写代码的另一个优点是,它迫使你靠自己去搞清楚这些事情。你不能将难的那部分留给别人去做,所以它可以避免你太快地向别人寻求帮助。
小贴士:不要选择那些你永远不会失败的个人项目。你需要失败!但你不会希望在工作中失败,或者当项目有时间期限的时候。
7.尽可能一对一地和其他开发人员合作
这有助于仔细倾听别人的思路和想法。方法可以是结对编程,可以是去参加编程马拉松,也可以是加入一个编程用户群。当你致力于一个开源项目时,要注意你从用户和其他开发人员那里得到的反馈。在他们的批评建议中有没有什么共同点?
你或许会很幸运地找到一个可以信任的个人导师,他会指导你从编码技术到职业决定的所有东西。不要浪费这些机会。
8.学习技术,而不是工具
编程语言、工具和方法变化不定。这就是为什么我们要积累尽可能多的经验,使用尽可能多的语言和框架。专注于编程基础,因为基础知识永远不会改变:要 更注重结构,而不是编程。如果你觉得只有一种做事的正确方法,那么可能是时候实战检验了。教条会阻碍你学习新事物的能力,同时要试着让自己慢慢适应变化。
还有很多,但是自我提高的一个关键原则是知道何时停止。
好文章,需要你的鼓励
这项由加州大学圣地亚哥分校和微软研究院合作开发的REAL框架,通过程序分析反馈训练大型语言模型生成高质量代码。与传统方法不同,REAL采用强化学习将代码安全性和可维护性作为奖励信号,不依赖人工标注或特定规则。研究在多个数据集上的实验表明,REAL在保证功能正确性的同时显著提高了代码质量,有效解决了"即兴编程"中的安全漏洞和维护性问题,为AI辅助编程提供了新的范式。
加州大学伯克利分校与Meta FAIR研究团队开发了"Self-Challenging"框架,让大语言模型通过自己创建和解决任务来提升能力。该方法引入创新的"Code-as-Task"格式,包含指令、验证函数、示例解决方案和失败案例,确保生成的任务既可行又有挑战性。在工具计算、网页浏览、零售服务和航班预订四种环境测试中,仅使用自生成训练数据,Llama-3.1-8B模型性能提升了两倍多,证明AI可以通过自我挑战实现有效学习,减少对人类标注的依赖。
南洋理工大学与SenseTime Research合作提出了PoseFuse3D-KI,一种创新的人体中心关键帧插值框架。该方法将3D人体模型信息融入扩散过程,解决了现有技术在处理复杂人体动作时产生扭曲结果的问题。研究团队开发了专门的SMPL-X编码器直接从3D空间提取几何信息,并设计了融合网络将3D线索与2D姿态无缝整合。他们还构建了CHKI-Video数据集,包含2,614个视频片段及完整的人体标注。实验结果显示,PoseFuse3D-KI在PSNR上提升9%,LPIPS减少38%,显著超越现有方法。
这项研究提出了LongGuide算法,解决了大型语言模型在长文本生成任务中的局限性。研究团队发现,仅依靠上下文学习无法使模型充分掌握文本的语言和格式特性。LongGuide通过自动生成两种指导原则:度量指导原则和输出约束指导原则,显著提升了模型性能。在七种长文本生成任务中,该方法使开源和闭源模型的ROUGE-L评分平均提高约6%。LongGuide具有通用性强、易于学习、成本效益高等优点,为提升AI长文本生成能力提供了新方向。