关于编程能力的思考

2017-05-01 From 程序之心 By 丁仪

编程能力

在一次面试中与主管聊到了什么是编程能力,这是一个值得思索和回味的话题。什么才是一个程序员真正的编程能力?或者,非科班程序员与科班程序员相比差在哪里?

作者认为,编程能力分为两个方面:理论基础和系统设计能力。在当前的技术水平上,继续提高实力需要一“上"一"下":"上"是往宏观方向走提高系统设计能力,“下”是往微观方向深挖夯实基础。

理论基础

理论基础是指程序员需要掌握的关于计算机和编程的基础知识,包括计算机组成原理、操作系统原理、编译原理、数据结构与算法等。如果往机器学习、大数据、图像识别领域发展,还需要掌握高等数学、线性代数、概率分析、离散数学等数学知识。

虽然工作中,绝大多数开发任务都不会用到太多基础知识,但这些基础知识作为根基,决定了一个程序员能否成为优秀的程序员。编程是一种抽象,程序是人类与计算机交流的载体,了解计算机才能更好地交流。数学是程序的基础,拥有良好的数学功底才能设计出合理、高效的算法去解决问题。

系统设计能力

系统设计能力是对问题进行抽象并设计出合理实现方案的能力。拥有良好的系统设计能力是成为软件架构师的基本要求。虽然有很多成熟的框架可供程序员使用,如 spring、MyBatis、dubbo 等,但通用框架解决的是一类常见场景的抽象问题,工作中遇到具体需求仍然要求程序员自主设计。

系统设计的好坏直接影响项目的长远发展。随着业务的发展,对兼容性、并发性、可用性、扩展性、伸缩性等会有越来越高的要求。真正达到极限的时候,不可能推倒重来、不可能冒着风险进行大规模的重构,因此系统设计终将成为瓶颈,必须有好的程序员进行良好的设计才能支撑起不断发展的业务规模。

流行的开源框架往往规模巨大,凝聚了很多优秀程序员的智慧,模块划分合理,拥有良好的架构设计、恰到好处的设计模式、安全高效的并发处理、值得学习的编程思路。深入研究开源框架能够提供系统设计能力。

本文来源:程序之心,转载请注明出处!

君子曰:学不可以已。
《Java编程思想 第4版》

《计算机科学丛书:Java编程思想(第4版)》赢得了全球程序员的广泛赞誉,即使是晦涩的概念,在BruceEckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。

发表感想

© 2016 - 2024 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号