做一个“多人在线编辑器”,你会怎么开始

       看似只是一个简单的问题,但是其中却隐含了非常多的知识,对于“多人在线编辑器”这么一个产品来说,如果让你来负责设计并开发,你会怎么去开始一步步展开工作,其中主要考察的并不是让你迅速的不假思索的说运用什么技术,什么设计模式去开发,而是看在你面对这个问题时你的解决思路。

      这也能明显的反映出你在日常工作中在面对一些从未遇到过的问题时的解决思路和解决问题的能力。那么,在面对这么一个问题,结合自己多年的项目经验,你会怎么去一步步展开工作呢,是预先思索一番,提出自己的见解,又或是立即大展身手,运用毕生所学立马开干。当然,这取决于自己在以前的工作中解决问题的方式和习惯。就我来说,对于这么一个产品和需求,记录下自己可能采取的解决方案和思路。

     1.找几款类似功能的产品,先用上一阵,熟悉产品的大部分的功能。目的在于收集类似产品应该具有的基本功能,借鉴其中的优点,找出其中的缺点,以及结合自己的需求,对其进行改进。

     2.在对类似产品进行详细的分析以及对产品有了足够的了解以后,可以从工程师的角度去观察,结合自身的经验,找出其可能需要用到的技术,以及其核心的关键技术点是哪些,比如既然是多人在线编辑,那么网络通信,用户之间的操作互斥以及协助还有其中涉及到的算法在这里是重点,至于UI等是次要点。这样的话我们就能够从宏观的角度对这款产品从功能需求,技术实现,核心技术点有了足够的认识。

     3.在常用论坛或者博客上(比如知乎,CSDN,GitChat等)查找类似产品的设计原理和思路,然后进行整理。 在网上寻找实现该产品所需要用到的开源框架和开源库(比如说网络库和UI库等),一般来说,对于这种比较普遍常用的工具都会有开源框架和库,甚至找到类似产品的源码等。而后对开源库和源码进行整理学习。作为一名技术开发人员,要时刻注意我们要站在巨人的肩膀上,而不是选择单干,重复造轮子,做一个孤胆英雄。

    4.所有的以上几点的都是从一个比较宏观的角度去分析的,并没有涉及到产品具体的设计以及开发,在经过上面的分析整理收集到足够的信息后,经过以上几点,已经为后面的工作打下了一个坚实的基础,可以基于这些信息从产品的细节开始展开工作了,在这个阶段又揽括了产品需求的分析(产生需求文档),软件架构的设计,模块的划分,人员的分配等等。自此进入实际的设计,开发阶段。

   以上都是基于自己平时在工作中在面对一些实际问题时的解决思路,自己也是按照这些思路来执行的,所产生的结果也还感觉令人满意。因此借助一个实际的问题来记录下来。依自己的见解,觉得作为一个开发人员来说,应该所具备的最重要的能力应该时面对问题时的解决问题的能力,其中包括分析问题,直击问题的核心关键点,解决思路,思维逻辑等,只要思路对了,问题自然迎刃而解,甚至事半功倍。其次才是技术能力,技术是基础,不可或缺,只有技术够扎实,才能更快,更高效率的解决问题。思维逻辑需要我们在实际工作中不断总结,然后养成习惯。核心技术需要我们不只在工作中,也包括业余时间,不断学习,不断提升。

   程序员,如果没有自己思想,永远只是一个所谓的“码农”“搬砖的”,只有在融入了自己的思想后,才会成为一个合格的工程师。




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mr. Bender and Square

Description Mr. Bender has a digital table of size n  n, each cell can be switched on or off. He wants the field to have at least c switched on squares. When this condition is fulfilled, Mr Bender will be happy. Well consider the table rows numbered from…

nginx_keepalived配置(转载保存)

文章链接: https://blog.csdn.net/yabingshi_tech/article/details/52038332

IT技术网站

GitChat : http://gitbook.cn/ CSDN: https://blog.csdn.net/nav/career 知乎: https://www.zhihu.com/ 简书: https://www.jianshu.com/ 程序师: http://www.techug.com/ 酷壳:https://www.baidu.com/link…

A Simple Job

描述 Institute of Computational Linguistics (ICL), Peking University is an interdisciplinary institute of science and liberal arts, it focuses primarily on the fundamental researches and applications of language information processing. The research of ICL …

keepalived+nginx保持高可用配置

安装nginx、keepalived nginx安装 keepalived安装与添加服务在/etc/keepalived目录下新建nginx_check.sh(两台服务器都需要) 配置keepalived.conf: #配置邮箱 global_defs {notification_email {# acassenfirewall.loc# failoverfirewall.loc# sysadmin…

How-To-Ask-Questions-The-Smart-Way

转自:https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md 提问的智慧 How To Ask Questions The Smart Way Copyright © 2001,2006,2014 Eric S. Raymond, Rick Moen 本指南英文版版权为 Eric S. Raymond, Rick Mo…

The Book List

描述 The history of Peking University Library is as long as the history of Peking University. It was build in 1898. At the end of year 2015, it had about 11,000 thousand volumes of books, among which 8,000 thousand volumes were paper books and the others w…

nginx+keepalived详细配置信息

Nginx Keepalived 第一步: 下载keepalived地址:http://www.keepalived.org/download.html 解压安装: tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/ yum install -y openssl openssl-devel(需要安装一个软件包&#xff09…

毕业3年,为何技术能力相差越来越大?

导读:毕业三年,每个人在技术能力跑道上,有了或大或小的差距。有些人永远在重复的劳动,有些人却能从中总结和解决问题。今天我们来探讨下,如何避免让战术上的勤奋掩盖战略上的懒惰,使得真正掌握好的知识点慢…

Periodic Signal

描述 Profess X is an expert in signal processing. He has a device which can send a particular 1 second signal repeatedly. The signal is A0 ... An-1 under n Hz sampling. One day, the device fell on the ground accidentally. Profess X wanted to check whether …

boost stacktrace堆栈打印

在windows下最方便的是minidump,其他2个平台麻烦不少,google-breakpad使用起来又太麻烦. 最近boost1.65版本出了个stacktrace使用起来简单方便,只是无法看实际数据,对于快速定位BUG还是很有帮助的. 要注意的是异常的处理需要写文件,应用重启之后再读取查看~ 用其他应用读取或…

redis优秀文章

https://www.cnblogs.com/PatrickLiu/tag/Redis/

Countries

描述 There are two antagonistic countries, country A and country B. They are in a war, and keep launching missiles towards each other. It is known that country A will launch N missiles. The i-th missile will be launched at time Tai. It flies uniformly and …

Windows下dump文件生成与分析

一、 生成Dump文件方式 1.1任务管理器 在程序崩溃后,先不关闭程序,在任务管理器中找到该程序对应的进程。右键—>创建转储文件。 此时会在默认的目录下创建出一个dump文件。 可以看出,此种方法只适用于程序崩溃但没有立即自行退出的情…

HTTP与HTTPS的区别[转载]

优秀文章链接:https://www.cnblogs.com/wqhwe/p/5407468.html

迪杰斯特拉算法 两点间最短路径的选择

百度首页 登录 注册 新闻网页贴吧知道音乐图片视频地图百科文库进入词条搜索词条帮助首页分类艺术科学自然文化地理生活社会人物经济体育历史特色百科历史上的今天数字博物馆史记2015城市百科二战百科非遗百科用户蝌蚪团燃梦计划百科任务百科商城权威合作合作模式常见问题联系方…

TLS--线程局部存储

转自:https://blog.csdn.net/u013761036/article/details/54960277 这个东西并不陌生了,之前写过了一个关于这个的应用,利用静态TLS姿势实现代码段静态加密免杀或者所谓的加壳思路。地址在这:http://blog.csdn.net/u013761036/article/detai…

小白科普:Netty有什么用?【转载】

优秀文章链接:https://blog.csdn.net/bjweimengshu/article/details/78786315#commentBox

TLS线程局部存储--thread_specific_ptr

大多数函数都不是可重入的。这也就是说在某一个线程已经调用了一个函数时,如果你再调用同一个函数,那么这样是不安全的。一个不可重入的函数通过连续的调用来保存静态变量或者是返回一个指向静态数据的指针。 举例来说,std::strtok就是不可重…

icpc青岛栈

1001-I Count Two Three 题意:给出一个整数n, 找出一个大于等于n的最小整数m, 使得m可以表示为2a3b5c7d。 分析:很好想,因为数据是在1~1e9之间的,所以直接将所有2a3b5c7d的形式且小于1e9的数字打表,然后二分搜索出大于…