作为软件工程师解决现实问题应当具备的基础技能

编程开发本质是运用程序和计算机来解决现实中的各种问题,因此,编程开发人员的才智发挥载体是计算机或者说计算设备,直接武器是程序。

难度:中级

程序员用来进行编程开发所需要的技能,归结起来主要如下:

  1. 理解计算模型和框架:
    顺序计算、并发计算 (并行计算、分布式计算)。

理解应用所基于的计算模型和框架是非常重要的。传统应用通常基于顺序计算,而现代商业应用,比如云计算,通常基于分布式计算架构;大规模的科学计算应用,比如基因序列计算,则基于并行计算。

  1. 高效的数据处理:
    熟悉常用数据结构和算法设计,能够针对计算目标设计高效的数据结构和算法并实现之, 满足性能需求。
  2. 大容量的数据管理与检索:
    至少精通一种主流数据库, 从数据处理中分离出的一种专门针对大量应用数据实时检索要求的技术。
  3. 系统底层机制:
    进程、信号、内存管理、API 等,理解相关概念及实现,熟悉使用Linux&MacOS&Windows至少一种操作系统。
  4. 进程的网络通信:
    TCP/IP socket , RPC ,Http , 序列化与反序列化, 熟悉网络程序设计的底层原理。
  5. 编程语言:
    面向过程、面向对象、脚本语言、函数型、浏览器语言等,最好每种类型语言掌握一种。
  6. 正则表达式:
    灵活地操作文本和字符串。
  7. 代码阅读与维护:
    能够读懂代码,维护代码,重构或扩展代码。
  8. 错误处理技术:
    异常机制、 返回值与全局变量、 直接退出或重续 等; 建造稳固可靠的应用的必要基础。
  9. 网络搜索:
    寻求有益资源、远程协作伙伴及有效解答。
  10. 程序质量:
    保证程序的时间性能、空间性能、安全性、可靠性、可用性、 可扩展性、可读性、可维护性、可移植性、用户体验。
  11. 设计模式:
    解决实际的设计开发问题, 在现有项目的基础上扩展功能模块时应该会经常用到。
  12. 系统架构:
    用于子系统的设计, 需要项目经验积累。
  13. 处理大数据量:
    通常基于分布式计算架构,比如云计算基础设施。
  14. 选用可靠的工具及软件库、包:
    首先必须确定具体需求,深入了解各种工具、技术与框架及其优劣,然后根据需求选择最适合的那种。
  15. 诊断和修复计算机或程序的故障:
    上网搜索已有解决方案;根据原理进行推断和验证猜想; 排查缩小范围; 对比分析; 打印信息。
  16. 除了编程的其它使用计算机解决问题的技术和方法:
    比如使用现有的软件。

针对每个问题,将自己掌握的技术和方法整理出来,并使用示例来说明,基本上就可以了解自己的技术水平了,同时亦可备日后用。

积微知著。人们常说的那些“大技能”,其实可以分解为大量的微技能,而积累越多的微技能,在处理问题时便有了越多的选择和思考余地。

原文地址:https://blog.51cto.com/14512197/2434196

时间: 2024-08-29 22:57:03

作为软件工程师解决现实问题应当具备的基础技能的相关文章

如何评价一个软件工程师的计算机网络知识水平与网络编程技能水平?

网络工程师是通过学习和训练,掌握网络技术的理论知识和操作技能的网络技术人员.网络工程师能够从事计算机信息系统的设计.建设.运行和维护工作.网络工程师是指基于硬.软件两方面的工程师,根据硬件和软件的不同.认证的不同,将网络工程师划分成很多种类.网络工程师分硬件网络工程师和软件网络工程师两大类,硬件网络工程师以负责网络硬件等物理设备的维护和通信:软件网络工程师负责系统软件,应用软件等的维护和应用. 本张试卷主要就是结合了历年408真题里面的经典题目,具体如下: 一.选择 1. HDLC 协议对 01

如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?

本张试卷习题全部来自于2012年考研408计算机网络部分真题,答案解析部分参考了网上的答案并进行了完善. 一.选择题 1. 在 TCP/IP 体系结构中,直接为 ICMP 提供服务的协议是 . A. PPP B. IP C. UDP D. TCP 2.在物理层接口特性中,用于描述完成每种功能的事件发生顺序的是 . A. 机械特性 B. 功能特性 C. 过程特性 D. 电气特性 3. 以太网的 MAC 协议提供的是 . A. 无连接不可靠服务 B. 无连接可靠服务 C. 有连接不可靠服务 D. 有

软件工程师的计算机网络知识水平与网络编程技能水平评测

课程总结 1.Linux socket协议分析 2.TCP协议栈 网络程序设计课程试卷 一.选择题(10题) 1. 在OSI参考模型中,直接为会话层提供服务的是 (C)A.应用层       B.表示层         C.传输层      D.网络层 2.路由选择协议位于(C).  A. 物理层     B. 数据链路层       C. 网络层          D. 应用层   3.三次握手方法用于( A).  A. 传输层连接的建立  B. 数据链路层的流量控制   C. 传输层的重复检

JAVA软件工程师应该具备的技能有哪些?

前言:有朋友问我:学历和能力哪个重要?我个人觉得能力大于学历,没有能力哪来的学历,学历只是证明能力的一方面.为此在能力方面畅谈java软件工程师必备的能力.作为一名合格的java工程师,不仅需要学历,更重要要有扎实的能力(技能)功力. 1.编程语言能力. 作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP.OOA.OOD等编程思想.精通一门编程语言能为以后的软件开发打下坚实的基础. 2.编码能力. 这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序

JAVA软件工程师应该具备哪些基本素质?

必知:软件企业要求基础软件工程师具备六大基本素质,即良好的编码能力.自觉的规范意识和团队精神.认识和运用数据库的能力.较强的英语阅读和写作能力.具有软件工程的概念和求知欲和进取心. 1.良好的编码能力.软件人员的一个重要职责是把用户的需求功能用某种计算机语言予以实现.编码能力直接决定了项目开发的效率.这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++.VB和国际上最流行的Java语言,熟悉它的基本语法.技术特点和API(应用程序接口).              2.自觉的

一位软件工程师的6年总结

一位软件工程师的6年总结 一位软件工程师的6年总结http://www.jsjbbs.cn/thread-3001-1-1.html(出处: http://www.jsjbbs.cn/) “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位:想想自己也曾经意气风发.踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标.本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方

读构建之法 第三章:软件工程师的成长

本章理论和知识点:评价软件工程师水平的主要方法 软件工程把相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户满意度.软件的可靠性和可维护性. 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.个人在团队中也有独立的流程.把每个人的工作有序地组织起来,就是团队的流程."有序",并不是"无争论".在大部分成功的软件团队模型中,各个角色有不同意见的冲突在

明星软件工程师的10种特质(转)

如今,每家公司都似乎成了科技公司.从软件创业公司到投机性投资公司.制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列.代码质量不仅成为了一个必需品,更成为了一个竞争优势.因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要.但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质. 1. 热爱编程 2. 完成事情 3. 持续重构代码 4. 使用设计模式 5. 编写测试 6. 善用现有代码 7. 专注可用性 8. 编写可维护的代码 9.

一位软件工程师的7年总结

1.分享第一条经验:“学历代表过去.能力代表现在.学习力代表未来.”其实这是一个来自国外教育领域的一个研究结果.相信工作过几年.十几年的朋友对这 个道理有些体会吧.但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈! 2.一定要确定自己的发展方向,并为此目的制定可行的计划.不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”.因为,这样的观点会通过 你的潜意识去暗示你的行为无所事事.碌碌无为.一直做技术,将来成为专家级人