编程学习与问题解决的艺术

在这个快速变化的技术世界中,经常面临一个问题:否在学习正确的东西?如果正在阅读这篇文章,那么答案很可能是肯定的。但让深入探讨一下,确保正在学习的东西能够真正帮助在编程的道路上走得更远。

人们常常告诉他们正在学习一门新语言,但往往这门新语言与他们已经知道的语言非常相似。如果工具箱里只有锤子,那么投资一把螺丝刀可能会更有意义。如果已经熟悉面向对象编程(OO),那么学习一门函数式编程语言,如Haskell,可能会是一个不错的选择。Haskell不允许作弊,所以请做好准备,大脑可能会有点“融化”。如果已经掌握了这两门语言,那么不妨试试逻辑编程语言Prolog。确保也了解一门动态语言,如Ruby。如果有机会,不妨看看APL,它非常优美。

解决问题最困难的部分是发现问题所在。尽所能使解决方案变得透明。编写详尽的日志,抛出异常,使代码清晰闪亮。每当在寻找问题时遇到困难,确保下一个人能够更轻松地找到它。

一切都有成本。现在不写单元测试可以为节省几分钟,但以后的代价是什么?花一周时间研究现有的算法可能会在项目结束时节省三个月的开发时间。如果每次部署需要20分钟,每周进行10次部署,那么花3小时自动化它需要多久才能收回成本?那个可能有一天能为节省两天时间的插件框架,是否让每天的工作多花了5分钟?这些5分钟加起来是否超过了那两天的神话?

这是一场马拉松,而不是短跑。

编写一个脚本来定期重启服务以提高稳定性是很棒的。但更棒的是修复导致服务崩溃的内存泄漏。创建了一个出色的多线程应用程序来生成20个并发的水晶报表?很好!为什么不研究一下切换到XSL-FO,这样每个报告就不会花费3年时间生成。

质疑一切。

如果得到一组需求,而这些需求并没有解决正确的问题,那么请大声说出来!不仅仅是一个代码打字员,是一个问题解决者。

这可能是最重要的一点。

如果正在构建的东西没有让某人的生活变得更好,给他们更多的时间,节省他们的金钱,那么为什么要做它?

从今天开始

知道这个列表很长,可能看起来有很多要吸收的东西。但不必一次做完。试试这个:找一个也在努力成为最好的自己的同事。每周选一个问题,承诺每天至少问对方一次这个问题。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485