编程开发观点杂谈(2)


       开发与学习的良性循环

       学习与开发是相辅相成的。 学习, 一方面是需要耗费时间的, 另一方面, 又能促进后续编程开发的质量和效率。 那么, 这里的问题是: 如何分配学习和开发的比重? 如何使得学习成果能够最大化地提升开发的质量和效率? 如何建立学习与开发双螺旋式的良性循环? 

       首先, 每天抽一个小时学习新的理念、知识、技术是必要的。 重点是要接触新的事情。 其次, 学习和开发应该交替进行, 以学带用, 用中促学。 —— 总是容易犯“急于寻找答案”的错误, 事实上, 可以询问得更细致一些: 工作中包含哪些内容事项, 要解决哪些问题? 需要怎样的知识与技能素养, 侧重点在哪里? 我该学习什么, 怎样将学习成果运用到工作之中?  如何在工作中提升已学的深度? 有时候, 提出新的细化问题就是好的答案。   

      理想的情况是: 工作时段中, 既可以高质量地完成工作任务, 又能够学习到新的技能。在工作时段之外, 可以多多训练自己的非技术能力, 比如表达能力, 演讲能力等。


       注重整体设计, 尽可能复用, 尽可能友好

       凡是与业务逻辑不甚紧密的基础功能, 尽可能实现通用性、灵活性设计, 能够复用到多处, 并且尽可能地友好,  即使完全不懂的工作伙伴, 只要了解极少的知识, 按照指定的格式提供数据, 就可以获得预期的结果。 使用 jsPlumb 绘制拓扑图, 使用 amcharts 和 highcharts 绘制同一坐标中的多时间曲线图, 带任务描述和执行时间统计的 Java 线程池设施, 都是基于这个思想的。 多做一些软件设计和简易框架, 可以增强思考问题的抽象能力, 提高后续开发效率。 


       搭建原型与逐步完善

       开发是一项创造性很强的工作, 不存在标准的操作流程,  也没有最佳实践。 即使存在, 也不那么容易遵循。 采用更灵活、更松散甚至更随意自然的方式, 可能更有利于个体开发效率和质量的提升。当然, 对于团队开发来说, 是需要一些特定框架和流程来约束的, 但这些框架和流程应该将协作方式与个体开发风格解耦。 一般来说, 在开发一个具体功能时, 会首先有个大致设想, 需要完成前端和后台的哪些点, 然后以“四面八方” 的方式来“围剿”这些点, 先将所有点贯通起来, 搭建起可以运行的原型, 然后再进行改善, 重构, 甚至重写, 使之更加灵活、健壮。 First right, then good .  当然, 这与我的“急”性子有点关系, 每个人都应该根据自己的特点建立适合于自己的开发方法。  


       开发是一项综合性开拓活动

       开发是一项综合性开拓活动, 并不仅仅是埋头写代码。 需要多多与工作伙伴沟通讨论, 集思广益, 多多向经验丰富的人请教, 与小伙伴们紧密协作, 熟悉别人的工作, 在必要的时候推动服务提供方改进其服务, 同时也能贡献自己的才智; 需要仔细探究需求和交互设计, 权衡优先级, 控制好时间、进度和资源成本。 并不是长时间坐在座位上, 而多动动, 多走走, 接触更广阔的视野。


       真正的核心是解决问题的能力

       技术人员常常容易纠结于自己技术水平的高低, 而忽视综合能力素养的培养, 忽视了自己真正的目标是业务价值的创造以及所产生的影响力。 实际上, 技术水平只是一个方面。 真正核心的是一个人的问题解决能力, 需要能够综合考虑各种因素, 然后采用最适宜的方案, 而该方案可能是技术与非技术的结合体, 甚至是完全非技术的。  技术诚然令人鼓舞, 但未必是解决所有问题的最佳方案。

       如果一个人精通某种技术, 实际上也是一种解决问题能力的体现, 只不过其手段限定于使用该技术。


      作为程序员, 应该自豪

      你掌握了一门奇特的技艺, 而且这门技艺是通往移动互联网时代、智能时代的核心。 作家编写故事, 画家绘画作品, 雕刻家雕塑艺术品, 你可以创作神奇的软件, 这是很多人都觉得神秘的技能。可能程序员常常抱怨生活苦逼, 然而, 似乎更应该反思的是, 我们是否充分利用了自己所掌握的这门奇特的技艺? 是否很好地平衡了生活与工作? 一个建筑工人, 他可能一辈子只是添砖砌瓦, 也可以逐步成为一名建筑设计师, 甚至是建筑公司总裁。 一切只在于如何充分利用好自己的优势和弱点。  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值