本人就是文科生,从对HTML感兴趣到能做小规模webapp的全栈开发,断断续续花了差不多七八年,在完全自学的条件下,现混饭吃的工作内容包括Web开发。分享一下,希望对题主有帮助。
简洁版回答你肯定猜到了:现实。稍微复杂一点的回答应该也不新鲜:无论学科背景,只要有兴趣,再投入足够的时间,没有做不到。
主要原因是,偶认为Web开发不需要考虑太多数据结构和算法方面的问题,所以无论文理科,在数学方面只要有中学数学基础就够了,最重要的是要适应工程师的语言和行事方法,这对“文科生”来说可能最有挑战性,但是只要跨过这个门槛,你一定会觉得豁然开朗。
办法只有一个,就是找靠谱的资料,跟着做tutorial,做的时候必须自己手动敲代码和调试,这个不用多说了,懂英文的话推荐http://codecademy.com。进阶之后最主要的是学会查文档,偶个人认为文档的质量是项目活力的重要指标。有不明白的地方就上社区问,首推http://stackoverflow.com,没有第二。
另外,所谓web开发包括的内容太多,楼主可以慢慢学习了解后,找自己喜欢的钻研下去,或者做一个generalist,两者需要的精力都差不多,对文理科生来说,十年磨一剑算正常吧。总之,下面每一个关键词都是一个大坑,你要学会取舍和分配精力(不好意思,后端以PHP为例,因为只会这个):
· 前端
o HTML+CSS
o 基础Javascript -> jQuery -> 其他框架和库(Bootstrap, React, AngularJS, D3.js…)
o Design pattern, UX(要关注Jakob Nielsen的文章,篇篇经典)
· 后端
o 基础PHP -> 框架和库(墙裂安利 Laravel。当然还有许多,如Yii, CodeIgniter等,都是极其优秀的工具)
o OOP概念 -> MVC概念 -> software design pattern
o 学会版本控制、单元测试、数据库迁移
o 数据安全(关注各种安全博客,了解基本的XSS, CSRF, SQL注入/远程执行、白名单)
o 有兴趣的话了解一下Node.js
· 数据库
o 关系型数据库的特点 -> mySQL基本语法 -> 复杂的statement
o MongoDB
· 服务器
o Linux 操作(基本文件操作、设置访问权限、白名单、数据备份、CRON job、分析access log等等)
· 工具
o 版本控制、合作:Git(windows下有gitbash)
o 代码编写:Notepad++; Sublime Text; Eclipse或phpStorm
o 虚拟机:vagrant, XAMPP 等
个人认为,不像其他专业,关于Web开发的知识最容易获取,因为有无数优秀的开源项目和优秀做法,很多项目的文档做的都非常好。
功夫不负有心人,少年,动手吧,奔跑吧。