博客
关于我
关于编程能力的思考
阅读量:589 次
发布时间:2019-03-12

本文共 912 字,大约阅读时间需要 3 分钟。

编程能力

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

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

 

理论基础

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

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

 

系统设计能力

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

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

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

每周 3 篇学习笔记或技术总结,面向有一定基础的 Java 程序员,内容涉及 Java 进阶、虚拟机、MySQL、NoSQL、分布式计算、开源框架等多个领域。关注作者或微信公众号 backend-develop 第一时间获取最新内容。

转载地址:http://gzkxz.baihongyu.com/

你可能感兴趣的文章
Golang AES加密
查看>>
Puppet的一些奇技淫巧
查看>>
foreman源NO_PUBKEY 6F8600B9563278F6
查看>>
亚马逊aws文档语法错误
查看>>
什么是5G?居然有人用漫画把它讲得如此接地气!
查看>>
Spring cloud --分布式配置中心组件Spring Cloud Config
查看>>
UE4接入Android第三方库2——通过JIN与GameActivity通信
查看>>
Unity Job System 2——并行处理数据
查看>>
BIG解决保险欺诈问题,开创数字化保险时代
查看>>
Apache JMeter5.3 压力测试
查看>>
c++ hpp使用好处
查看>>
Mac 使用Eclipse老是闪退解决方案
查看>>
谈笑间学会-Hbase Rowkey设计
查看>>
spark概述
查看>>
[密码学] RSA同模攻击与选择密文攻击
查看>>
JavaScript 知识梳理[一] 变量类型,浅拷贝,深拷贝
查看>>
Linux学习笔记(二):文件权限与目录配置
查看>>
Coursera普林斯顿算法课第二次作业
查看>>
pip命令 failed to create process.
查看>>
做SMTP客户端遇报错:535 Error
查看>>