如何取舍用户的“友好”体验?
在V站看到这篇文章https://www.v2ex.com/t/561958 有感而发,也是记录自己的经历吧。
我将楼主的所有回复看完了,大概明白了楼主想法是想做一款“好用”的编译器/编程语言,具体如何好用主要体现,在语法上如何更加优雅。
我的经历
我也有过类似的经历,之前我就想做一款“用户友好”的扫描器,因为之前用过的扫描器要么安装过于复杂,要么使用体验特别不好(对于新手来说),想metasploit,sqlmap之类的我都认为不好,命令行操作,那么多参数?谁记得住?所以在写w9scan
的时候,我尽可能的减少了命令行的参数,达到用户输入一个网址,就可以进行扫描了。
但是,这里面涉及到了很多场景问题。之前很多扫描器有“轻量级”扫描与“重量级”扫描之分,我认为这是很愚蠢的设计,因为对于使用扫描器的安全从业人员来说,当然是扫描到的漏洞越多越好,后来在w9scan
的编写中,我意识到很多功能都是无意义的,例如有子域名爆破,Fuzz字符等等的功能,如果达到用户输入一个网址,就可以进行扫描了
的状态,会浪费很多时间,所以于此同时加入了选项
功能,在扫描时可以自定义选择。但我们的初衷也就此打破。
遇到的这种情况还有很多。emlog大前端模板的编写例子,起初为了满足一个小博客的好看就行,但是后面用户需求加上了越来越多的功能,虽然有些功能我自己都不用,但是不同人的需求是不同的,为了满足所有用户的需求,设置中心越来越多,设置越来越复杂。
回到V2EX楼主发的那个帖子来说,做这样一件事主要为了什么呢,仅仅是自己觉得它们不够好?那么其他方面的用途呢,几乎没有。
场景
关键是什么呢,我认为还是一个使用场景的问题。就像现在很多细分领域的App越来越多,一个大而全的App根本无法兼顾那么多的需求,鱼和熊掌不可兼得。
就像我前几天发的微语
鱼和熊掌不可得兼,想要简单,就需要牺牲性能,想要多扩展性,就需要复杂的安装,甚至复杂到文档都不想写。说的是W12Scan
起初W12Scan就想像zoomeye一样扫下东西,存点数据,方便分析。为了安装的方便,我使用了docker的形式部署,但是,用户想自定义很多功能,我都一一设置了环境变量或预留了一些参数可供设置,但这样一来,于我的简单部署的概念就背道而驰,你需要设置环境变量,或者修改配置文件,重新打包docker镜像才能最终启动。
这些问题,后面可以通过写一个后台来自定义所有的配置,但可想而知这样做需要写多少代码,代价巨大,同时性能可能会在一定程度上受损。
所以,既然定义为了网络资产扫描器,就只做网络资产扫描器相关的事情吧,虽然修改一些参数能做到其他更多事情,但是相关文档的撰写,相当于“搬砖”,枯燥无味还很累(这么累我图啥呢????)
说道场景,这几天写《从0开始poc框架开发》,我对比了Pocsuite与poc-t的区别,Pocsuite在常规的验证之外,还需要填写大量的字段用于说明,poc-t就很简单,一个验证函数足矣。这么快似乎两者比较优缺点显而易见?但是很多安全产品的集成开发上都是用的Pocsuite,因为他的字段详细,可以返回更多可以自定义的内容啊。
sqlmap与metasploit提供了大量接口与API用来完成它们特定领域内的东西,它们有新手的引导模式与老手的各种五花八门的自定义配置,到后面导致了源码太难读了,业务逻辑代码不是本人很难弄明白。。
所以说,不同场景下是有着不一样的解决方案。于此,来看不同的编程语言似乎也有不同场景下做的事情。PHP(后端),Java(后端,虽然Android上有很多用Java,但是相当于被Google改造了大量的API,现在好想还准备抛弃它用一款新的语言了),Python(大数据,人工智能),易语言(外挂? )等等,当然,你也不能说Python不能做后端啥的,但是已经被使用场景打上了标签,在这个场景下,使用它绝对是最好的方案(适合自己的最重要?)。
思想
也是V2EX的楼主说的
我不是一个合格的程序员,我也不想成为一个合格的程序员,那会限制我自身对于事物的想象力。
被打上标签后自己的想象力会有局限吗?我认为会的。
在不会编程前我曾有很多天马行空的想象(很后悔当时没有拿小本本记录下来),现在完全忘记了。。可能是有些东西在想到后,被我脑袋里的“技术可行性”给筛选出去了。但是这些想象不能否认它不是巧妙的。有时候可能就需要这些想象来刺激你的大脑完成有趣的东西。
成熟
现在越发觉得,使用成熟的框架、源码是一件节省时间的事情,还是拿requests举例子,自己实现一款网络访问引擎就能知道有多少坑要踩,而且还踩不完,各种bug满天飞,不同平台还不一样,调试和修复都有很大的心里压力。
“友好”体验
最后点个题,有些东西,由于技术上实现的问题,会有一些看起来不那么优雅的实现,但是它已经是在当前场景中最佳的解决方案了,如果想硬凑两者在一块,将不得不付出巨大代价。
所以对于W12Scan,定位是一款安装与使用非常简单的网络资产搜索引擎,将围绕这两个点来打造开发,其他一些自定义的功能就放一边吧,当然,在相关场景内的核心能力是必不可少的,这点不要忘了。W12Scan的目的很简单,就是在相关目标场景变得我所说的“成熟”就行。