引言
作为一名从软件工程师出身的产品,一个软件或者产品的上限是由开发者和设计者本身的综合素养和能力决定的,而下限是由团队的综合效能的产出去决定的,君子不器体现了以人为本的核心思想,善假于物是在了解了工具和问题的特质后,采用合适的工具和方法,提高我们的效率,构建自己的核心知识体系,并且应用到工作中去解决实际问题。 同时,君子不器 成己达人。感谢CSDN的这次工具分享活动,提供了来自各个行业的创作者一个交流的机会,通过交流和对比印证,学习到了很多实用的东西:
- 云原生,敏捷开发团队,面对的一些问题,以及如何通过工具去提高效能。
- 面对初学者和新入行的开发者,他们面对的问题和思考的方法,对完善新员工的培训指导意义很大,
- 运维环节,有哪些新的工具和新的服务端IDE,例如新的监控工具等,帮我们解决实际工作中的问题。
- 大数据开发工作者,他们面对的工作场景和工具使用的心得。
- 工业互联网领域和嵌入式开发工作者,他们所面对的问题,以及采用的工具。
一个人也许走的很快,但是一群人才能走的更远,再次感谢所有参与本次活动的创作者,对本人认的知边界的拓宽和以及后续实际工作中可能面对的未知场景有了一个新的理解。
一、 概述
从产品落地的角度去看软件开发,Coding可以是即兴而且充满了天马行空的想象创作,又是一个项目型管理工程化结构为设计和构建导向的精密协同开发过程,尤其是如今前后端分离式开发的模式,更是彰显出无尽创意的洒脱与精密严谨的工程融合之美。本文从开发者个人和团队综合效能提升和软件产品开发落地的几个过程,对工具分类做了一个梳理和分享,由于个人能力和阅历有限,如有不足之处请多谅解和指正:
二、综合类
人生和Coding是一个长期的过程,综合类的工具帮助我们解决如下几个实际的问题:
- 在这个信息爆炸的时代里,如何快速高效安全的寻找到对应的知识和信息。
- 如何将信息和知识吸收转化成为沉淀到个人和团队的知识体系,提高学习的效率和进行知识体系的梳理和转化。
- 实际研发工作中,统一标准可团队协作的文档制式,便捷的预制模板,专注于更优质的输出和整个研发链条的信息传递,而不是浪费大量的时间到文档格式的调整。
1.1 猿如意
1.1.1 推荐理由:
综合类的搜索引擎很多,但是这是第一款专门面向对开发者的辅助集合工具。集成了很多实用的小工具和主流开发者IDE工具,同时具备面向问题的代码和文档检索功能,已经达到实用化阶段,虽然功能还有改进和提升的地方,实用工具库还有待收录的部分,但是潜力巨大,专业的事交给专业的工具,而且目前完全免费,因此推荐。
1.1.2 场景化具现:
在一个信息爆炸的年代,不管是你要进行接口测试,json格式化,安装一个新的IDE,还是去查找一个Bug或者报错的问题,又或者查阅一些电子版资料和好的技术文章,一个命令和语法没有记忆清楚,传统的方法是打开百度搜索,但是页面内被插入了大量广告和营销号,极大的影响了我们的体验和增加使用成本,现在猿如意的出现解决了如下几个问题:
1.实用化的集成了效率的轻量级小工具: 比如: toto进行日程安排, postman, 前端各种机型屏幕尺寸等, jeson 等实用小工具,无需再次搜索安装,开箱即用。
2. 针对开发类工具合集: 从后端到前端市面上常用的开发IDE都可以找到,无需在记住各种官网,不用担心被植入各种广告和木马,省心省力。
针对开发者,不用再去查一堆软件的官网,然后再去下载,常见前后端开发工具直接下载安装即可。 3. 免广告和营销号的文档和文章搜索工具
针对开发者,不同再去豆瓣百度文库等地方搜索,直接在猿如意中搜索,相关的博客和电子书籍应有尽有。极大的提高了检索效率和时间成本。 4. 针对新入开发者一行代码提示功能,便于学习和查询
1.1.3 改进建议:
- 没有我的常用等功能,建议后期可以将常用IDE关联到面板上,便于快速启动。
- MarkDown等工作和论坛上传等打通,便捷式的提交。
- 代办事务列表和时间提醒功能,方便开发者进行时间和精力管理。
- 运维等工具的集成。
- 对问题搜索的优质内容的排序和推荐,以及和论坛问答区的集成,和优质开发者的悬赏答疑,形成业务闭环。
- 学习资料和视频的集成,方便找到对应的学习资源,以及阅读软件的内部集成,笔记及学习时长的统计。
- 贡献磅单、本周学习时间长榜单,用户统计分析,以目标管理的信息反馈闭环,提高用户的参与度和成就感。
- 更智能化的根据用户偏好可设置的信息咨询推荐。
1.2 WPS
1.2.1 推荐理由:
- 纯国产,All in One 一站式办公服务平台!
- 极小安装包,完整支持常用DOC、XLS、PPT、PDF、VISVO、Xmind文件的查看和编辑,全面兼容微软Office。整合在线模板和多种实用办公服务,助您快速完成工作。
- 提供免费在线网盘存储。一个账号即可在所有设备同步数据,并提供安全可靠的云端备份和修改历史。
- 远程办公推荐、远程会议,多人音频会议,对同份文档进行讨论,标记重点,多人编辑。
- 预制很多个性化模板,可以满足从销售,营运、产品、开发、运维大部分工作需求。
1.2.2 应用化场景:
只要是软件开发相关所有岗位,在软件研发的整个生命周期中,各阶段都要输出大量各种文档,虽然常用的有各种专业化工具,包括但不限于石墨文档等,但是频繁的切换和检索,不同文件制式的转化也是个很头疼的问题,WPS就是这样一款这种能够极大提高效率的文档集成化输出工具,来帮助我们解决研发工作、管理、分析、汇报和学习中各种文档问题。
我们在软件项目的各个阶段需要编制各种计划,并通过输出标准化的文档来进行约定,降低软件开发项目的风险。 不管是项目的立项和启动阶段
又或者项目的方案设计阶段:
我们可以使用WPS里面丰富的预制模板快捷的进行: 产品信息架构图设计
绘制业务流程图
整理思维导图绘制来拆解问题和需求,以及功能清单等:
编制项目计划的SOW进行项目预算编制和项目全过程管理
并且在线编辑团队文档,协同作战
还有其他的UML图和接口文档以及测试原型报告等等。同时在国产操作系统中,WPS也能够正常使用。 感谢WPS,给我们整个软件开发全生命周期提供全方位的文档编帮助,不用在进行繁琐的软件切换和文档制式转换,同时云文档工具及协作功能,极大的提高了我的实际中的工作效率,从安全性,协作性和效能提升等几个维度都有了明显的提升。
1.3 为知笔记
1.3.1 推荐理由:
它不仅仅是一个记事本,更是一个知识管理软件,可以做很多事情,包括网页收集、MHT 编辑、HTML 编辑、电子书制作等。 但网文快捕过于臃肿,不可以称为移动互联网作品。 为知是一个轻量级的笔记软件于是软件开发团队与时俱进的开发了为知笔记这款轻量级的笔记软件。作为一款轻量级的笔记软件,为知笔记在继承了原网文快捕的强大的笔记编辑功能的同时,有几个重要的特性: 第一,相较于网文快捕,新的软件的界面更清晰,操作更灵活。 第二,引入了云的概念,开发了多平台、多终端的产品线,充分满足用户随时随地的笔记记录与管理需求。 第三,良好的树形结构和缩略图,可以更好梳理整个知识体系。 第四、个性多样化话笔记功能,包括学习时的康奈尔笔记,记录生活和重要事件的9宫格笔记,以及常用的撰写Markdown笔记等。
1.3.2 应用化场景:
树形和目录具象化的知识体系管理,同时支持网页和文章外链等功能,作为外脑辅助
9宫格矩阵化呈现的日程列表以及日记式总结
还是使用康奈尔笔记记录读书心得和学习笔记
更或者使用Markdown笔记进行归纳输出
1.3.3 解决的问题:
- 为知笔记作为可以对标Notion的笔记软件,他不仅仅是一个记录的工具,更完成知识从记录、关联、简化、输出的整个转化过程。
- 具象化的日记,便于每天对个人的OKR和todolist进行形象化的复盘。
- 并且丰富的外链功能,可以作为我们的外脑,极大的提高知识的使用效率和记忆难度。
二、团队协作的开发和交付过程
从产品视角来看,软件开发是一个以用户的需求为中心,项目型工程化去解决问题的循环迭代过程,下图省略了客户营运和服务部分,统一归纳到需求入口:
下面就从产品视角,采用系统化思维,将研发流程中所涉及到几个岗位常用的高效能工具进行一个简单分享:
三、界面设计
作为一名产品,都明白一个好的产品一定是“有用的、好用的、用过还想用的”,因此,应用设计思维,其中最重要的交互性大概可以总结为下面这几点:
- 是针对行为的设计,让原本的物理逻辑向用户行为逻辑转化; 平衡业务价值和用户价值,
- 脑海中永远不要忘记“用户价值”这几个字.
- 以目标为导向,保证产品贴合用户心智,用户能更好的理解、使用产品,并获得愉悦的使用体验;
好的界面和交互设计,能够帮助我们打开用户的心防,极致的体验,更能沉淀出品牌的价值。 尤其是存量时代,内容为王,如何设计出一款更加简单易用,贴近用户的设计,尤为重要,其中的视觉和交互设计更是一个必须研究的课题,与用户引入、转化和留存及个关键指标呈正相关性。
__
3.1 墨刀
墨刀是一款国产打通产设研团队,实现原型,设计,流程,思维导图一体化的在线协同工具。全新版本聚合四款工具的创作与管理,包括「原型」、「设计」、「流程图」、「思维导图」等主要工具。
3.1.1 推荐理由:
一款更偏向于“交互向”的原型设计工具,简单易上手,更符合团队协作的设计工具。早期大部分用户使用的是web版本,简单高效的制作APP端交互,快速的可以放在手机端进行演示和体验,真正的让产品体验放在研发之前,提前确认效果,降低研发试错成本。
3.1.2 应用化场景:
完整的设计工具和素材库,帮助产品岗和UI设计岗沟通,快速设计并迭代。
完善的中文帮助文档,平滑的学习曲线使中文用户上手快,迁移成本低
3.1.3 解决的问题:
刚入行产品的时候,花费了大量的时间去学习原型设计工具,尤其AXure的操作和使用,但是在与美工,前端讨论界面设计方案和控件的样式等总是找不到满意的视觉效果。 后面接触墨刀后,快速上手并应用到实际工作中,主要解决了如下项目中的实际问题:
- 界面设计美观大方,比较符合客户和美工的使用习惯和审美,动效和交互设计简单,用于演示和确定验证需求时用户体验好、
- 丰富的应用市场,在团队没有专门的UI设计时,可以通过生态伙伴,外包设计且有平台的信用背书。
- 快速的简单易上手的使用模式,对新接触的产品和设计更加的友好,AXure的使用方法可以平移。
- 降低了与客户需求确认的沟通难度,快速定稿。
- 降低与美工、前端设计之间的沟通成本和压缩项目交付周期。
- 不足之处,复杂页面的逻辑功能设计不如AXure,但是可以通过开发需求说明书去说明业务场景和需求的逻辑,期待墨刀在后续的迭代过程中能够简化问题并对其优化。
3.2 datav大屏原型展示
3.2.1 推荐理由:
dataV是拖拽式可视化工具。
- 专精于业务数据与地理信息融合的大数据可视化,可以快速设计做出演示DEMO。
- 试用版成本低,而且用不同账号注册,9.9可以无限套娃。
- 节省大量的时间成本,视觉效果好。
3.2.2 应用化场景:
身为一个To_B的产品,日常还有售前支持的职能,BOSS告诉你,后天要去XX客户高层拜访,洽谈项目做预演,如何让客户领导层直观的感受到实施和开发价值,除了常规的PPT汇报以外,一个具有视觉冲击力的大屏展示,将客户高层关注的主要指标等呈现给决策用户,可以快速建立在客户心中的专业形象,促进项目的达成。
3.2.3 解决的问题:
- 之前做大屏展示,需要用JS HTML CSS做静态初稿,费工费时,尤其是需求确认阶段,多次迭代是前端的噩梦。
- 项目汇报蓝图时,用VUE等做接入数据,视觉冲击力较好的3D组件库等开发对前端要求比高。
- 采用dataV后,能够根据拆解的指标,采用拖拉拽的方式对可视化控件进行组合,快速迭代布局和数据呈现效果,让售前聚焦于设计业务场景。
- 直接发布后登录网页即可演示,不用在本机搭建环境,配合PAD,触屏电视等让用户自己体验,效果尤佳,定版后可以形象和前端确定数据交互后要达到的效果,所见即所得。
- 即使租用企业版,用户首次投入的软件成本和开发交付成本都会大大降低。
四、开发工具
4.1 JAVA后端开发
4.1.1 工具介绍:
Java作为后端开发技术栈应用范围最广,这里推荐作为市面上最常见的2款Java 集成IDE,相信大家都不陌生。 Eclipse IDE Eclipse 是一个开放源码的项目,是著名的跨平台的自由集成开发环境(IDE),最初主要用来 Java 语言开发,后来通过安装不同的插件 Eclipse 可以支持不同的计算机语言,比如 C 和 Python 等开发工具。 Intellij IDEA Intellij IDEA 简称 IDEA,具有美观,高效等众多特点。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持 HTML,CSS,PHP,Python 等。免费版只支持 Java 等少数语言。据传它有“最智慧的 Java ide”之称。它能帮助开发人员拿出最具有创造性的解决方案。它的“Smart Code Completion”和“On-the-fly Code Analysis”功能等可以提高开发人员的工作效率,并且还提供了对 web 和移动开发高级支持。
4.1.2 适用场景和优缺点比较:
4.1.2 解决的问题:
- 刚开始接触java的时候,是基于公司根据Eclipse 迭代出来的BOS ,用于产品的二次开发。针对Java初学者,可以很快的上手该IDE,Eclipse最大的优点是免费,教程也多,因此对新入java技术栈的强烈推荐,尤其是学生党,这个阶段最需要培养的是工程化的思路和对结构的理解,性价比最高。
- 后来在蚂蚁金服的兄弟推荐了Intellij IDEA,尤其是针对自研项目,明显感觉到有了效率质的提升 如:JRebel热部署后,修改代码后不用重新启动程序,所有的更改便可以生效。 lombok 当我们创建一个实体时,通常对每个字段去生成GET/SET方法,但是万一后面需要增加或者减少字段时,插件自动帮助我们生成GET/SET方法,非常便捷。 等等等等,这里就不一一列举了,对已经有了一定收入的进阶java技术栈从业者的项目交付效率和质量提交非常显著,投入的这点钱和对应的产出不算什么。
4.2前端开发
4.2.1 推荐理由
VS Code:丰富的扩展性 VS Code 是最具扩展性的编辑器之一,而且集成能力和可扩展性是它的核心功能。在众多扩展能力中,Python 扩展、远程开发扩展以及一些智能感知驱动的扩展是目前最热门的。此外,VS Code 也有一些很酷的功能,例如通过 Prettier 进行代码格式化,通过图标和代码编辑器主题进行主题定制等。VS Code 提供的每个事项或功能特性都是完全可扩展的,同时扩展的本身也可能是增强扩展能力的过程。
JetBrains:集成生态 对于 JetBrains 来说,可扩展性并不是它需要突出的一个点,因为你会发现绝大部分你需要的功能都会随着的 IDE 版本的发布而发布。为某种语言安装一款强大的 IDE 的好处是,当我们需要某些新功能的时候可能只需要升级下 IDE 版本就拥有了,而无需去扩展市场进行寻找。
4.2.2 解决的问题
针对商业化团队,协作者质检IDE版本一致性,解决环境冲突 Intellij在企业环境中具有巨大的优势,在企业环境中,一致性,统一性和易于更换的团队成员至为重要,所以在专业化的商用环境里,标准化和效率是他大规模应用的前提。 针对新人和学习者, VSCode是高度可定制的代码编辑器,适合不同的用例,而且更符合新手使用的学习难度,同时免费这个是一个巨大的影响力。 同时现在有了VSCode的Server版本,期待他更加完善,也在持续的学习中。
五、版本控制工具
版本控制系统是用来跟踪、制作和管理软件代码变化的工具。它能够帮助开发者存储不同阶段对文件所做的每一个改动,这样我们、或者与我们协作开发的同事就可以在检索到这些改动。
5.1 推荐理由:
首先声明,不当二极管。作为集中式和分布式的两个代表,个人认为 SVN更适用于项目管理,Git更适用于代码管理。 他们各有擅长的方向,很难下定结论哪个更好,如果你要管理大型二进制文件或者非代码资产,SVN更具有优势。如果你对离线管理,或者对于分支和合并有更复杂的要求,那么可以选择Git。
5.2 场景化比较:
Git vs SVN 下面,就分别从服务器架构、分支管理、访问控制、存储要求、可用性等方面对比Git和SVN的差异。
5.2.1 服务架构
Git 软件被安装在本机上,每个开发者在个人电脑上都有一个项目完整版本历史的拷贝。 Git的各种操作发生在本地,同时充当客户端和服务器,所以,开发人员不必一直处于联机状态。 SVN具有相互独立的服务器和客户端。只有开发者正在处理的文件被保存在本地机器上,而开发者必须处于联机状态,每次操作,用户检出最新文件,然后再将修改提交到服务器上。
5.2.2分支
SVN 分支是在版本库中以目录形式创建的,这种目录结构是SVN分支的核心痛点。 由于SVN是一种目录,因此,它不能反映出开发者信息,这样,就很容易造成冲突、缺失、杂乱无章等问题。 这使得分支和合并模式变得复杂,这在管理上也很费时。 Git 分支只是对某次提交的引用,它是轻量级的。 你可以在任何时候创建、删除和改变一个分支,而不会影响到提交的内容。 如果你需要测试一个新功能或发现一个错误,你可以建立一个分支,进行修改,将提交推送到中央仓库,然后删除该分支。
5.2.3 访问控制
默认情况下,Git 假设所有的开发者都有相同的权限。 相反,SVN可以指定每个文件级别和每个目录级别的读和写权限控制,权限控制方面更加精细。
5.2.4 存储要求
Git 仓库不能处理大型二进制文件。 SVN仓库除了可以处理代码外,还可以处理大型二进制文件。 在SVN中存储大型二进制文件会比在Git中占用更少的空间。
5.2.5 易用性
SVN不仅可以使用命令行,也可以作为一款客户端工具使用,不仅可以用于管理代码,还可以管理非代码类文件。 Git以命令行使用为主,而且,由于服务架构相对复杂,因此,使用方面有一定学习成本。
5.2.6 解决的问题
作为版本管理方面比较知名的两款工具,它们分别是集中式管理SVN和分布式管理Git的代表,各有擅长的方向: 面向传统软件开发 初创型公司,在开发团队规模不是很大的情况下,对多分支没有太大需求的情况下,SVN更具有优势。 面向互联网协作模式 面对开源型和跨地域的研发团队的代码管理,同时团队年龄结构年轻,学习能力较强,那么可以选择Git。 根据面对不同的场景和管理痛点,采用不同策略,现在已经出现了同时使用的融合趋势,SVN管文档,异地开发团队使用Git,每个开发的团队面对的情况和可支配的资源都是不用的,而且随着团队规模的变更和业务场景的变化,需求也是不同的,具体问题具体分析。
六、运维工具
6.1 Xmanager
6.1.1 推荐理由:
性能优越 当利用一个PC X服务器,精度和速度是必不可少的。Xmanager 7是高性能的X11R7.7 PC X服务器,它支持多个X扩展,从而最大限度地提高可用性。支持最多256个X的客户端连接,这意味着您可以获得几乎无限制的能力。 选项卡式界面 Xmanager 7集成了直观的选项卡界面,允许轻松的会话管理。运行多个会话并排最大化你的显示器的资源。用简单的拖放编辑视图,创建完整的工作站。
6.1.2 解决的问题:
尤其是针对商业化运维,设定好检修端口后,不用频繁的登录各种云控制台,直接通过运维用户利用SSH登录后,切换到root服务器进行监控和操作,尤其是针对Java技术栈中需要图形化界面操作的,Xmanager 可以在1个界面里操作服务器,另外1个SSH连接跟踪日志,非常便捷。但是缺点就一个字:贵。
6.2 WinSCP
6.2.1 推荐理由
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件,最核心的竞争力:免费。
6.2.2 解决的问题
- 安全方便快捷的文件上传模式,解决windows和Linux等不同之间的文件传输。
- 可以快速从服务器端,抓取程序的日志,在Window下打开进行问题分析,配合Xhsell使用更加。
6.3 MobaXterm
6.3.1 推荐理由
MobaXterm为程序员、网站管理员、IT管理员及其它用户提供了远程操作一揽子功能,也是在本次活动中看到并学习的,上手非常简单。 MobaXterm有安装版和纯绿色免安装版,下载过来exe包直接运行即可,不需要任何的安装过程。非常方便,这点和Putty一样的干练。而且有免费版。
- 功能十分强大,支持SSH,FTP,串口,VNC,X server等功能;
- 支持标签,切换也十分方便;
- 众多快捷键,操作方便;
- 有丰富的插件,可以进一步增强功能;
6.3.2 解决的问题
- 现场工作中,如RS232等串口调试也是个很麻烦的工作,居然有一款IDE直接集成了,让我实感意外。
- 具备了Xmanagerde 所有功能,同时商用价格也很便宜。早点知道就好了。
总结
这里感谢CSDN,作为国内影响力最广的开发者论坛。举办了本次面向开发者的工具分享的活动,通过本次征文活动,在很多优秀的开发者的博客里,破除了对工具类的只针对已使用部分的认知壁垒,极大的开拓了工具类的认知视野,学习了到了很多先进且实用的工具以及其使用心得,同时对通识类和专业类的技术博客的创作也有了新的认识,感谢这些领域的专业创作者的分享,为我们打开了新的工具类大门,后续期待更多优秀的开发者分享自己的经验,供大家学习。