上篇说到了软件设计师,有许多朋友认为是指拿到各种证书和具有这方面职称的人,这是一个误解。我说的软件设计师,是相对于程序员而言的,是其职能使然。你可以理解成一个虚拟的软件设计师。无论这个人有什么强大的证书,有什么明确的职称,有什么明确的岗位,只要不从事软件设计师本质的工作,都不在我话题谈及的范畴。
软件设计师与程序员之间有着千丝万缕的关系,尤其是我们称之为开发人员的时候,这两种角色就被模糊起来了。现实中单纯的程序员很多,但是单纯的软件设计师很少,很多软件设计师也干着编程的工作。就两者关系来说我有以下几点的看法。
1、 软件设计师是程序员的高级阶段。
我不知道软件设师是不是不要经历程序员经历就可以了,是不是考上什么软件设计师证书就可以从事软件设计师的职能了。在我看来,软件设计师是程序员的高级阶段,是程序员一步一步向前走的必然结果,跨过程序员这个阶段直接成为软件设计师理论上可能成立,但是实践中,能成为优秀的软件设计师几率就不很大。因为,任何成就的高低和其基础厚薄是成正比的。
如果这个观点成立,程序员就应该努力积累编程经验,努力地向软件设计师学习,努力地成为软件设计师。
如果这个观点成立,那种想单凭一纸证书就以为能成为软件设计师的就会成为一种笑谈。(我声明,我对证书持中立的态度,既不反对,也不迷信)
如果这个观点成立,那些自认为是软件设计师的人就要好好考虑一下,自己是不是一个好的程序员。如果不是,那软件设计师就会大打折扣了。
我要特别说明的是,程序员和软件设计师只是职能上的不同,并没有高低贵贱之分,程序员可以做得很强大很强大,软件设计师也可以做得很了不起很了不起的。
2、 软件设计师具有其特有职业特性
软件设计师和程序员一样都具有各自的职业特点,从这个意义上来说没有什么高低贵贱之分。
程序员面对的是计算机、程序、以及软件设计方案(详细设计方案)
设计师面对的是需求、需求分析、软件设计方案(方案中应该包括需求的技术实现)。
可以说软件设计师是上游,程序员是下游。注意!我这里说的软件设计师比较广义,其中包括了需求分析师、软件构架师、软件功能设计师、数据库设计师、界面设计师等。
软件设计师具有以下职业特点:
1) 和人打交道
我认为软件设计师相比于程序员要更多的和人打交道,而且是和不同行业的人打交道。很多软件或项目都是来自于用户的需求,要弄清必须要和用户进行沟通,这样才能对需求进行深入的理解。
2)脑力劳动
程序员一般动手能力比较强,动手意识比较强,而软件设计师更注重于脑力劳动,他们把各种需求放在脑子里,进行分析、分类,在脑子里进行功能设计、在脑子里完成技术实现。可以说基本上是一种脑力劳动,当然,最终还是需要通过方案文件形式记录下来的。和程序员相比,软件设计师基本上脱离了程序设计语言级的约束了。
3) 经验积累
软件设计师很多工作例如,需求分析,功能设计基本上是靠经验的积累,没有经验积累做设计工作是非常非常艰难的。好的软件设计师会主动学习业务,主动积累项目设计经验,为今后可能的项目打下良好基础。在现实中,那些开发项目多的人,那些具有开发经验的人往往受到用人单位的青睐,这也是用人单位利用经验积累的一个结果。
那些经常做过项目的软件设计师和很少做过项目的软件设计师差别就非常大。
4) 技术水平
软件设计师一个非常具有技术含量的工作,他比程序员要有更多的技术上的选择,比如,软件构架、功能实现、算法设计、模型建立、数据库设计、参数化、新技术运用等等各方面都是很技术很水平的工作,可以说十个软件设计师面对同一个项目有十个设计方案。其中,有的方面可能相同,有的方面则根本不同。这样,软件设计师的水平的差异要比程序员水平的差异要大了许多。
5) 设计方案
无论如何软件设计师的工作都会反映在设计文档之中,这些文档是指导项目开发的纲领性文件。因此,编写各种文档,例如,需求书(有时候用户需要你写)、需求分析报表、项目可行性报告、项目设计总体方案、项目可行性报告、项目详细设计书等等,可能因软件公司和企事业单位的不同而有所不同,但是,写文档则是软件设计师其中的职业特点。
3、 程序员变成软件设计师要做好角色的转换
现实中我们遇到的问题是,程序员一方面渴望成为软件设计师,但是一旦有机会成为软件设计师后,往往还是延续程序员思维惯性,把工作重点放在程序的编制上,还是把自己当作程序员使唤,这样使得软件设计师的职能和作用大大降低了。
我遇到过不少程序员,开始的时候仅仅是项目的参与者,每天就是按照设计方案编制软件,一干就是许多年。后来随着自己的水平提高,在公司的地位也提高了,被公司提拔到项目经理的岗位,承担软件设计师的工作。但是,开始很长时间,依旧保持程序员的独立工作的作风,别人干不放心,干什么都是自己行。白白浪费了项目经理和软件设计师的称号。 后来慢慢地,转移了工作重心,把工作放在需求和需求分析上,放在软件设计上,放在项目的重点难点上,把工作放在项目管理上,很多工作可以放手交给下面的同事去做。项目开展得就顺利地许多,个人能力也得到了提高。但是这个过程很漫长很痛苦。我在旁边看了真的很着急。
现实中也存在另外一个情况,一些程序员变成了软件设计师之后,感觉到编程太累,主观上就放弃了编程,一心做些软件设计和项目管理工作。当时,有一个软件公司项目经理他把这个想法告诉我之后,我曾劝他无论如何,只要不离开IT这个行业,都不要完全放弃编程工作,否则,项目经理和软件设计师都是很难当好的。结果,由于技术发展很快,脱离了技术去当软件设计师,很快就会力不从心了。
有的人为软件设计师后,还在编程;有的成为软件设计师后,则放弃了编程工作。软件设计师一方面要与程序员拥抱之密,不可不知程序员所能,不要放弃程序员之能;另一方面也要摆脱程序员的之纠缠,不能被程序员细节所困,不能深陷编程不能自拔。要明晰自己的角色,学会在不同角色中承担不同的职能。优秀的软件设计师在设计时候是设计师的角色,在编程时候是程序员的角色,这些角色转换在瞬间就完成了。知道和了解软件设计师的职业特点,有助于程序员平时多注意观察和学习身边软件设计师的方方面面,逐步把自己推向软件设计师的层次。
分享到:
相关推荐
【精心整理】PHP程序员笔试题+答案 - RicardY - 博客园.mht
【编程实践与自文档化代码】 编程不仅仅是编写可运行的指令,更是创造易于理解和维护的艺术。一个程序员的自省中强调了编写自文档化的代码的重要性。代码的可读性是衡量其质量的重要标准,因为它直接影响到其他...
javascript小技巧&&JavaScript[对象_属性]集锦 [转载了多篇] - 天轰穿_net-vs2005-ajax入门 - 博客园
7. **软件开发**:博主的其他文章涵盖了Android、C#、LUA和微信小程序的开发,说明GPIO的应用是跨平台的,可以与其他软件系统紧密集成。 8. **固件升级与设备管理**:提及了STM32+ESP8266的远程升级方案,表明GPIO...
- **44,100Hz**:CD音频的标准采样率,也是大多数音频设备和软件的默认值。 - **48,000Hz**:电影和专业音频录制的标准采样率。 #### 总结 音视频编解码技术是现代多媒体通信的基础,涉及到编码、解码、压缩和传输...
这种设计减少了与后端服务器之间的通信次数,降低了网络延迟,极大地减轻了后端服务器的压力。 2. **无长连接**:Nginx与后端Web服务器之间无需保持长连接,这意味着在处理完一次请求后,连接可以立即关闭,节省了...
博客园文章爬取代码是一个基于Java的项目,用于自动化地从博客园网站抓取特定博主的文章并将其保存为Word文档。这个项目对于那些对网络爬虫技术感兴趣的开发者来说,是一个很好的学习和实践案例。以下是对这个项目的...
理解TCP/IP网络协议有助于理解如何进行IP地址的探测和通信,C#的背景知识则可以帮助对比和理解原gogoTester的实现,而Git的熟练运用则对版本控制和团队协作至关重要。 总之,gogoTester-nodejs 是一个实用的工具,...
Linux(CentOS4)下Oracle_10g 安装图文教程 - 大姚的二进制之家
最近一直都在搞网站抓取方面的开发,闲着无聊逛逛论坛,发现有些帖子还是写的相当不错的,只是一篇一篇的点进去比较麻烦,于是就写了个小软件只是为了方便查看博客园和CSDN上的优秀文章。其实这个还可以拓展的,比如...
Lucene最初是为Java平台设计的,但在其他编程语言中也有相应的实现,如Python、.NET等。由于其易用性和高效性,Lucene已经成为Java世界中最流行的全文检索库之一。 Lucene的核心功能包括: 1. **全文索引**:将非...
MySQL基础知识-安装MySQL - Smile_Coding - 博客园.html
VGA接口实验1--时序分析 - o my god - 博客园.webarchive
推荐--jQuery使用手册 - 仰天一笑 - 博客园
《gogoTester-nodejs 实现解析与并发测试详解》 gogoTester-nodejs 是一个基于Node.js实现的工具,主要用于查找Google的可用IP地址。它借鉴了原有的gogoTester项目,但采用了不同的编程语言和实现策略。以下是实现...
这个项目的主要目标是为用户提供一个便捷的移动平台,以便他们能够在手机或平板设备上浏览、阅读和互动博客园上的文章和讨论。下面将详细探讨该项目中的关键知识点。 1. **Android SDK与开发环境**: - ...
本文主要总结了QLineEdit的一些核心功能和使用方法。 首先,`setPlaceholderText()`函数用于设置输入框的提示文字,当用户尚未输入内容时,这个提示文字会显示在QLineEdit内,帮助用户了解该输入框预期的输入类型。...
在文档的其他内容中,还包括了作者的个人资料和在博客园的活动记录,以及对其它文章的分类和链接。这部分内容对于理解自动登录方法没有直接帮助,但对于了解作者的其他技术分享和活动有一定的参考价值。
标签 "万一_-_博客园.2.rar" 与标题和描述一致,没有提供额外的信息,但我们可以假设这个压缩文件的内容可能涉及编程、软件开发、网络技术、数据处理等常见的IT话题,因为这些是博客园用户常常讨论的主题。...