这篇文章是6年前写的blog,进行统一的整理,内容如下:

第一篇就写一下随笔,写一写工作感想吧,希望大家帮我提出宝贵意见。

在企业工作了多年,感觉自己的技术水平没有多大进步,只是觉得更加迷茫了,感觉在目前电子商务盛行的年代,自己如果去开发商业类软件和工业控制软件的话,感觉什么都做不了,什么都不会。

首先,简单写一下在企业里做应用系统,或者做项目的流程。当然这里主要说的是新项目,续建或者运维项目,我再总结总结吧。新项目的一般做法是拿到一个任务单,需要与业务部门的主要负责人(可能多个)进行沟通,最好形成沟通会议纪要,当然在沟通过程中,会根据我们自身做项目的经验,进行有针对性的互动沟通,比如这些数据需不需要结构化,需不需要进行数据统计,系统需不需要异地部署,数据是否需要同步汇总等。其次会进行架构、编程语言环境的选型,这个其实就是根据项目负责人熟悉的语言环境、架构环境,比如选择用.Net还是Java。第三进行数据库结构设计,包括选择的数据库产品,大部分采用MS SQLServer,小部分用Oracle,当然有时候这部分和第二部分交换或者同步进行,在这部分做的过程中,会大致确定系统的几大模块,每个模块涉及到哪些业务,有时候会根据用户的业务情况进行模块分类,这种模块分类方法在我们企业的软件设计过程中会经常出现。第四进行开发,分模块进行任务的分配和测试,公共模块和数据结构的调整,整体界面的设计都是在开发之前由项目负责人带头完成的,和大家讨论共同形成的,第四进行测试,功能测试一般都是在开发阶段就完成了,这里主要进行环境测试,比如不同浏览器下的运行情况,各个模块整合后的集成测试,比如公共模块是否重复引用,公共模块是否一致,是否有同名的类等等。第五进行总结和验收,主要对这一期建设情况的总结,和其他系统建设成员交流有没有可以共用的东西,有没有困难需求兄弟项目协助,同时提出下一期建设工作的设想。

一、应用系统设计与开发方面

1.在企业工作的前几年,主要做过了很多行政管理类的系统,比如OA系统,科技项目管理方面的系统,360度考核系统等等,感觉这一类系统最大的特点是要求的专业不高,流程比较多,流程总是变化,用户界面比较落后,比较古板,用到的技术比较老,比较陈旧,比如左侧一般用一颗树,上面有一些导航链接,右侧是正文,主要用到table,但好像目前比较新的技术趋势是多用div,少用table,同时会有一些图文混排技术,因为企业中很多资料都是图文并排的。
2.在企业里后来的几年,主要做专业应用类系统,比如生产数据的管理、地质资料的管理,专业矢量图形的生成。这一类系统最大的特点是要求专业性比较强,流程很少或者没有,报表很多,图件比较多,多张图综合显示的要求比较多,用户希望资料之间的关联度比较高。在做数据结构,数据接口分析,报表生成方面时,需要了解各专业的特点,各个单位之间的换算,比如方与桶、桶与吨、比采油、气油比、饱和度和成功率等等。做这类系统过程中,自己感觉软件开发水平很难有提高,顶多在图形图像显示、数据传输、数据汇总等方面有一些提升,特别是海量数据方面。用到的一些软件技术如下,比如为了帮助用户快速上传下载资料,特别是大文件、多文件或多文件夹方面,我们采用Activex控件的方式,基于ftp协议进行传输、缓存与保存,为了解决异地数据汇总迁移的难题,开始采用数据库提供的publisher和subscriber,但是随着后来系统的专业强,数据库表和字段的急速增加,这种方式总是存在问题,而且没办法解决海量附件的同步传输迁移,后来我们自行设计了一套数据传输和汇总工具,主要用C#开发,传输方面主要基于Wcf技术,可以用Tcp协议,也可以采用http协议,支持断点续传和文件的打包传输等。其他的管理界面用到的技术,其实第一部分行政类管理系统中用到的组件就已经足够了,这里有一些体会就是在右侧正文的table显示方面,我们当时用到ExtJS提供的UI控件(如GridPanel),但是随着数据量的增大(比如常规100万条记录,30个字段),系统的性能就会特别慢,后来我们采用最原始的div加table的方式,反倒快了不少,当然可能与我们的分页技术、数据表设计也有关系。

二、数据库设计方面

1.进入公司首先接触到的数据库就是sybase数据库,这个数据库产品,感觉目前流行的电子商务公司几乎没人提了,但是sybase数据库的学习对之后的ms sqlserver帮助很大,很多基础的sql语言、存储过程和触发器都是相通的。后来接触到另一个生产项目中用到Oracle数据库,Oracle的学习要深刻理解其实例、schema、控制文件,数据文件和日志文件等,使用Oracle的过程中,感觉最方便的地方是,他有一个Ora-xxxxx的帮助说明,而且错误非常明确清晰,有错误就能直接找到。再后来就是Ms sqlserver数据库,目前到了Ms SqlServer2012了,微软的产品最大的特点就是工具做的非常好,不需要我们再去其他地方下载第三方工具了,他本身的执行计划分析,性能检测分析等都已经很完善了。
2.数据库设计方面的经验总结,感觉任何一个软件系统,不管是专业类的系统,还是管理类的系统,都会将表分为以下几大类:配置表(Config)或系统表(Sys)、注册表(Reg)、代码表(Code)、邮件表(Email)、人员权限授权表(Auth)、具体业务类表(如地质类:Geo,考核类:Evt)、工作流类表(Workflow)、各类报表(Report),不过不是每个系统都有这么多类,但根据这样的分类去做,应该都差不太多,而且以这些英文名为数据表的前缀,打开数据库管理工具会一目了然的找到要查看的表。当然有时候会按照各个库的设计早晚进行分库设计,并将功能的信息合并到一个库中进行管理。比如各个专业都会存在各类文档资料,那就会单独设计一个文档库(如document),表的前缀有可能就是Doc。
3.数据结构设计模板方面的经验总结,不管我们在做什么类型的系统,只要用到数据库,就需要进行数据结构设计,而且数据结构设计有早有晚,有时候会变化,比如长度的调整,类型的变换等,同时有时候会换人,有时候开发人员之间打开系统后台进行了修改,各类因素导致系统最早设计的数据结构设计文件无法跟随系统开发同步进行。为了解决这个问题,我们想了以下这个办法,将系统最终定型的数据结构都用一个系统的功能管理界面进行管理,相当于元数据的管理,当然这是各个系统独立的在管理,没有做出一个大的平台,管理所有系统的元数据。同时要求这个管理界面提供输出下面Excel格式的模板文件,这样就可以自动生成最新的Excel格式的数据结构设计文档,并生成最新创建表的SQL脚本,同时包含表、字段说明和注释,这样就非常方便项目和系统的持续建设和运维。​

4.对象数据库方面,这部分是从最近一年的系统建设过程中体会到的,同时查看了很多目前开源的产品,比如MongoDB,感觉我们之前用关系型数据库完成的资料的存储,我们自己需要对其进行管理,进行同步汇总迁移,其实很多的开源产品都已经提供了相应的机制帮我们做了这部分工作,而我们很多系统都需要有这一部分资料的管理,计划将文件资料的管理都放到这里面来做,这样就实现了关系型数据库和对象数据结合,一起来完成企业中的应用。不知道附件资料达到几十TB到几百TB的情况下,会不会降低系统的访问性能?

三、今后的技术方向

接下来的技术方向主要是以下几个方面,欢迎大家吐槽

  1. 数据接口方面:其实不管是最早的Dos,还是后来的Linux、Windows、到现在的iOS,对数据的访问,对文件的访问,都要转换为对设备的访问。那么我们在做企业软件系统时,我们在存储和访问数据时,目前还是要区分哪些来自于url、哪些来自于文件,哪些来自于数据库表,而且返回的格式各不相同,错综复杂,或许他们之间的握手协议也不同,试想能否通过几种规范或接口进行统一,而不需要让每个系统进行单独设计,单独开发和单独部署,甚至做到一套程序,多家调用呢。目前已经形成不同类型的数据服务,逐步形成体系。
  2. 前端技术方面,之前掌握的html+javascript(jquery)+css已经落后了,希望跟进潮流,加入一些最新的前端技术,比如AngularJs、Vue等。目前正在跟进,在数字孪生方面逐步开展。
  3. 后台技术方面:深入探讨MongoDB,Restful格式定义的规范等,以及与现有关系型数据库的结合方面结合项目进行研究,目前聚焦利用Spring框架实现各类接口服务等。
  4. 矢量图形展示方面:目前比较熟悉的就是SVG,不知是否有其他的图形显示技术能够适合企业级的复杂综合图形的展现技术。目前该项工作正在逐步开展,详见我的另一篇文章

【经验分享】一名慕星人多年的工作感想相关推荐

  1. 【经验分享】产品、运营人如何告别重复的数据分析工作?

    我是一名互联网的运营打杂MM,除了每天繁忙的工作,每周.每月的数据汇报也是我头疼的东东.因为本身我不聪明,数学也不是太好,对数据不那么爱,而且还要做数据分析,对于我这种数据小白分分钟崩溃.每周.每月的 ...

  2. 【经验分享】怎么关闭烦人的office助手问答智能AI

    不知道大家有没有遇到过这种情况,每次打开office的时候都会跳出该死的"office助手问答智能AI",就是这个东西,在前天突然出现在电脑上,每次切屏都会蹦出来,相当烦人... ...

  3. 【经验分享】转行如何自学Python并且找到工作,分享一波自己心得体会

    写在开篇 在大学毕业后,我选择了留在重庆,并在在那里找了一份销售的工作.销售工作并不像想象中那样轻松,刚毕业时我没有经验就像无头的苍蝇一样四处乱撞,做了很多努力但工作进展并不太顺利,很快我感觉自己并不 ...

  4. 转行python经验_【经验分享】转行如何自学Python并且找到工作,分享自己心得

    目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Python开发. 做Python开发多年,给大家 ...

  5. 自学python在家怎么上班_【经验分享】转行如何自学Python并且找到工作,分享自己心得...

    目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Python开发. 零基础学习Python必须明确 ...

  6. 规培手册填写模板_9年老资料员经验分享,181套资料员模板+302页工作手册,成为优秀资料员还能提高工作效率,限时分享...

    一个工程项目中,资料员是不可缺少的,资料员主要负责工程的资料收集.编制和整理等工作内容.一个优秀的资料员价值千金,如何才能成为一个优秀的资料员? 今天带来的是在工程中9年资料员的老工编制的资料员工作模 ...

  7. 转型经验分享|我为什么放弃做VC投资,去做自媒体?

    先说下我的背景,我之前在上汽通用的泛亚技术中心,做底盘开发工程师,后来加入一家新能源车企,再后来因为看好自动驾驶的技术发展前景,自学自动驾驶算法,终于在2017年底加入阿里(菜鸟)自动驾驶团队. 我在 ...

  8. 转型经验分享|作为传统汽车工程师,我如何转型去阿里做无人驾驶?

    编者按: 以下这篇文章,其实是笔者2018年初发表在<业界良新>上的三篇转型文章的合集.这次重新汇总呈现给大家,一方面是给传统汽车产业需要转型的朋友做个转型参考,另一方面,也是给接下来的两 ...

  9. 高效研发管理五点经验分享

    高效研发管理五点经验分享 谁应该看 1.人可以少 但流程不能少 2.任务要有负责人,执行要有计划 3.明确绩效和惩罚措施,及时对研发进行激励 4.建立研发人员的成长引导.能力培养和人才选拔机制. 5. ...

最新文章

  1. 工作中的感悟 (一)初来工作之感
  2. ajax,php文件读取
  3. 合并排序(Java)-解析
  4. JavaFX官方教程(五)之在JavaFX中创建表单
  5. idea 热部署时 tomcat处 没有update classes and resource 选项
  6. find_element 和find_elements 的区别
  7. LeetCode : Word Pattern
  8. mysql管理数据 并上传至云端_西部数码网站管理助手创建、导入恢复、导出备份mysql数据库...
  9. 《树莓派实战秘籍》——1.20 技巧20使用Swap添加额外的内存
  10. POJ 3125 Printer Queue(队列,水题)
  11. roller源码分析
  12. linux 进程killed_linux下运行Gaussian09进程被killed
  13. matlab拟合不显示直线,新人求助一下MATLAB直线拟合问题
  14. Unit3D--人机交互入门
  15. UEFI+GPT双硬盘安装Win10+Ubuntu16.04双系统
  16. NFormer: robust person re-identification with neighbor transformer
  17. 华为云产品介绍—大数据
  18. Java 开发验证码。随机产生一个四位数的验证码,每位数可能是数字、大写字母或小写字母。
  19. [附源码]计算机毕业设计springboot酒店客房管理信息系统
  20. 近日onedrive突然消失问题的解决

热门文章

  1. SQL注入(Injection)简介
  2. 星际2服务器未能成功创建游戏,《星际争霸II》新手错误纠正
  3. 【总结】1059- 图解常见的九种设计模式
  4. 我与电脑的相识,相知,相爱
  5. 长沙基层公务员待遇调查结果
  6. 2018年APP应用上架苹果商店的详细步骤整理:
  7. es6入门到五连绝世之一血(first blood)
  8. localdatetime 获取天_LocalDateTime用法
  9. quill富文本编辑器quill粘贴图片上传服务器
  10. Redis:黑马点评项目之用户短信登录