开发一个项目需要的基本知识

一个完整的软件开发流程离不开策划、交互、视觉、软件、测试、维护和运营这七个环节,这七个环节并不是孤立的,它们是开发一款成功产品的前提,但每一项也都可以形成一个学科,是一个独立的岗位,随着敏捷开发的流行,以及来到了体验为王的时代,现代软件开发更多的是注重效率和敏捷,而不是循规蹈矩的遵循这些开发流程,比如软件开发的岗位不再仅仅是个技术岗位,它需要去参与前期的设计和评审、可以在视觉和交互方面提出自己的见解,在开发的过程中需要自测程序尽快解决现存问题,运营和维护的过程中也需要软件的帮助。可见现代软件开发对开发者的综合素质(这并不是facebook所讲的全栈工程师)越来越高,自称为码农或者程序猿显然是不合理的,因为这个过程是脑力劳动和体力脑动并存,称呼自己为工程师显得更为合理。

  • 策划:需求收集(通过用户调研、灰度发布、大数据分析、竞品分析、领导拍脑袋等方式获取需求)、需求整理(将需求归类、划分优先级等)、将需求转换成解决方案(输出设计文档);

  • 交互:从心理学(利用人性的弱点)、人性化(心智)、个性化的角度将解决方案转换成可交互的功能和界面(需要输出交互文档),比如加载等待、消息提示、页面布局、页面内和页面间的交互逻辑、页面切换动画等等,这个过程中一般会使用Axure或者PowerPoint来制作交互文档;

  • 视觉:根据交互图,使用PhotoShop来做视觉效果,在Android上的图片格式大多是png和jpg,对于需要屏幕适配,程序又适合做屏幕适配的地方可以使用九图,格式为*.9.png

  • 软件:根据视觉和交互效果将需求转化为具体的实现,在实现的过程中可能会因为需求、交互或者视觉的变动导致软件实现的变动,因为策划、交互、视觉这每一个环节都可能会有信息失真的现象,或者是由于市场环境的变化、获取信息不够准确、领导拍脑袋等等情况导致软件始终处于被动状态,所以现在会提倡敏捷开发结对编程程序设计同行评审单元测试来提高程序的灵活性和稳定性;

  • 测试:软件达到可交互的标准后,需要将可交互的程序提供测试,其中灰度发布(用户测试)、自测(开发自测)、SQA(品质保证)都算是测试;

  • 维护和运营:通过测试程序达到稳定标准后,软件就可以上线了,软件上线后,需要去维护,用户反馈的问题要及时解决、用户有疑问要及时解答;根据后台统计信息、抓住可运营的节日、民族文化需要做运营来提高用户使用产品的粘度,让更多的用户知道、使用产品都是运营应该做的。

注:

提问的智慧

  大多数工作都是以结果为导向的,特别是软件开发这个职业,绩效考核、KPI这些都是在考核你工作的成果,所以工作更多地是需要你解决问题的能力,至于学习这个事情,还是在工作之外的时间去做吧。对于提高解决问题能力我有两个建议:

  • 学会学习和思考:学习的过程中要广度和深度并存,Android应用开发本身对技术功底的要求不高(因为很多底层的东西都被google、框架、开源代码给封装起来了,多数时候你只需要看ReadMe或者API知道怎么用就可以了),更多地是在你遇到问题的时候知道这个问题能够通过什么方法和方式来解决。书要看,但多逛逛论坛、QQ群、Github、StackOverflow、CSDN博客专栏对自己都是有益的。

  • 学会提问:你身边有很多资源,比如同事、StackOverflow、QQ技术交流群、搜索引擎,当你遇到问题的时候完全可以利用身边的资源来解决遇到的问题,如果一个问题在一个小时之内自己都不能够解决它,我就会通过搜索引擎、Github、QQ技术交流群、同事、StackOverflow(以上排序是按优先级排列的)来解决它。如果你需要好的答案你就需要有好的提问,特别是在QQ群或者论坛,在提问的过程中需要体现出你的思考,能够通过搜索引擎解决的问题坚决不问他人,这是对别人的尊重,在这里推荐几个链接,认真看会对你有莫大的帮助:

解决bug的方法

  为了写这一项我专门在知乎上提过一个问题:

  你有哪些解决bug的技巧?

  在知道如何快速解决bug之前,你需要知道什么是bug。没有完成策划、交互、视觉要求的功能,这不叫bug,这叫功能缺陷;一个功能完成后不能正常使用也不叫bug,因为它根本还没达到可测试的标准。我认为当你的程序达到可测试标准之后发现的问题才叫bug。综合我自己解决bug的经验和知乎上的回答,总结常见的解决bug的方法有(你想要高效解决bug的前提是你能够快速定位到缺陷所在的位置,所以以下方法多数讲的是如何快速定位问题,至于真正解决bug,需要你自己修改程序才行):

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要用Java写一个web项目需要掌握以下知识: 1. Java编程语言:掌握Java编程语言的基本语法、面向对象编程的思想、异常处理等基础知识。 2. Java Web开发基础:了解Servlet、JSP、JSTL等技术,能够使用Tomcat、Jetty等Web容器部署Java Web应用。 3. Web框架:熟悉Spring、Spring MVC、Struts2等主流的Web框架,了解它们的特点、使用方法和常用功能。 4. 数据库:掌握SQL语言,熟悉关系型数据库的基本概念和使用方法,能够使用JDBC、Hibernate等技术进行数据库编程。 5. 前端技术:熟悉HTML、CSS、JavaScript等前端技术,了解jQuery、Bootstrap等常用框架,能够进行前后端分离的开发。 6. 开发工具:掌握Eclipse、IntelliJ IDEA等Java开发工具的使用,了解Maven、Gradle等项目构建工具,熟练使用Git等版本控制工具。 总之,要用Java写一个web项目需要掌握Java语言、Web开发基础、Web框架、数据库、前端技术等多方面的知识。 ### 回答2: 写一个Java的web项目需要以下几个方面的知识: 1. Java编程语言:作为一种使用广泛的编程语言,熟练掌握Java编程语言是编写Java web项目的基础。需要了解Java的基本语法、面向对象编程的概念和特性,以及掌握常用的API和类库。 2. Java Web开发框架:了解和熟悉一些常用的Java Web开发框架,如Spring、Spring MVC、Struts等。这些框架提供了一套成熟的开发模式和工具,能够简化代码开发和管理,提供更好的可维护性和扩展性。 3. Java Servlet和JSP技术:Java Servlet和JSP是Java Web开发的核心技术。了解Servlet的生命周期、请求处理流程和基本API,熟悉JSP的基本语法和标签库,能够编写动态的web页面和处理用户的输入请求。 4. 数据库知识:对于涉及到数据存储和处理的web项目需要具备一定的数据库知识。了解数据库的设计原则、SQL语句的编写和调优,以及熟悉常用的关系型数据库(如MySQL、Oracle等)或非关系型数据库(如MongoDB、Redis等)的使用。 5. HTML、CSS和JavaScript:虽然编写Java web项目主要是在后端完成,但前端技术也是必不可少的。熟悉HTML的标记语言和基本页面布局,了解CSS的样式设置和布局,以及掌握JavaScript的基本语法和DOM操作,能够编写出美观且交互性强的前端页面。 6. 版本管理工具:对于团队协作或个人开发,使用版本管理工具如Git是很重要的。能够熟练使用Git进行代码管理、分支管理和协同开发,能够顺利解决代码冲突和版本回滚等问题。 以上是写一个Java web项目所需的主要知识点,当然还有更深入和专业的知识可以学习和掌握,如安全性的考虑、性能优化、RESTful API设计等。 ### 回答3: 要用Java写一个web项目需要掌握以下知识: 1. Java语言基础:对Java语法、面向对象编程、异常处理等基础概念和语法规则有一定的了解。 2. Servlet和JSP:了解Servlet和JSP的生命周期、请求和响应处理、会话管理以及JSP的标签库等。 3. Java EE框架:熟悉Java EE框架的使用,如Spring、Spring MVC、Hibernate等,这些框架可以简化开发过程,提高效率。 4. 数据库知识:理解关系数据库的基本概念和SQL语言,掌握至少一种数据库操作语言,如MySQL、Oracle等。 5. HTML、CSS、JavaScript:了解并熟练使用前端开发基本技术,包括HTML标记、CSS样式、JavaScript脚本等。 6. Web容器:了解如何配置和使用Java Web容器,如Tomcat、Jetty等,熟悉Web应用的部署和调试。 7. 网络协议和常用技术:了解HTTP协议、常用的Web开发技术和工具,如RESTful API、Web服务、JSON等。 8. 版本控制工具:熟悉使用Git等版本控制工具,以方便代码管理和协同开发。 9. 测试和调试:掌握基本的单元测试和集成测试技术,能够利用调试工具进行代码调试和问题排查。 10. 安全意识:了解Web应用的安全机制和常见的安全风险,如SQL注入、XSS攻击等,有效保护Web应用的安全性。 总之,要用Java写一个web项目需要对Java基础和Web开发技术有一定的掌握,并熟悉相关的工具和框架,以便能够高效地进行开发、测试和部署。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值