1
tibbers 2016-01-10 22:16:52 +08:00
运用成本最低效率最高,适当考虑安全和维护的技术,多快好省地解决问题,这就是 web 开发者的核心能力
|
2
fy 2016-01-10 23:03:51 +08:00
CURD
|
3
YouXia 2016-01-10 23:05:29 +08:00
分布式
|
5
hahasong 2016-01-10 23:44:09 +08:00
CURD + SQL
|
6
alexapollo 2016-01-11 00:06:35 +08:00
计算,存储,网络
恩,所有人其实都需要,但看你的量级吧。 |
7
lbp0200 2016-01-11 00:12:39 +08:00
楼主已经给出答案了,先 1 ,再 2 ,……,如果学到 6 ,已经是小牛了
|
8
strahe 2016-01-11 00:20:24 +08:00
第五点还没达到,暂时没觉得很重要,但后期是要补回来的
|
9
lecher 2016-01-11 00:23:42 +08:00 4
对后端来说我认为重要程度排序是这样的:
5. 扎实的数据结构、算法、计算机网络、操作系统知识,但是这些又如何体现在平时的开发。 2.还是关系型、非关系型数据库的掌握 6. 架构、设计模式的理解 4. Linux 系统的使用、部署能力 3. HTTP 协议(暂时只想到这个)的理解,是否要很早的涉及 TCP/IP 1.对所使用语言、框架的掌握 7. 一定的前端技能 其实后端主要还是理论要扎实,实际解决问题就会快很多。理论基础是第一重要的,没有这个就没有办法分析问题。 实际开发的时候,通常的场景是,遇到一个问题 1.利用自己的理论基础诊断分析可行的方案,预测需要什么算法或方式解决问题。 2.扩大视野寻找可用工具和成熟的方案,这时候很看英文能力,毕竟很多资料都是英文的。 3.搭建最小化的架构测试工具和方案的可行性,这时候很看中对 linux 系统的使用、部署能力和语言熟练程度。 4.分析测试结果,评估可选方案,这时候就只是看数据和经验了。 5.最后就是定方案开发。 这一套走下来,主要还是靠分析,如果实际开发能力足够强,经验丰富,往往可以跳过 123,直接选择一个成熟的方案上线。 像我是经验和代码熟练读不太够的,我会在第 2 步查资料和第 3 步搭建最小化的架构耗费比较多的时间,才能定下来一个可用的方案。 如果熟练的老手,时间可能是在日常的视野扩展上花的比较多,平时就会有意识去了解业内的新技术新方案并快速做个小系统练练手,这中间的试错积累的就是经验。这样实际遇到问题,就可以直接选型解决掉。 |
10
lecher 2016-01-11 00:51:46 +08:00
如果是进阶的话,我个人觉得再进一步提升的捷径是了解一些网络攻防的 hacker 技巧,这对提升架构能力很有帮助,做为开发者写代码的时候,有时候由于视野的局限,没有精力去考虑系统的健壮性,写出来的程序的可用性就要差一些。
如果业余有时间了解一下别人是怎么攻击 web 服务器的,比如 xss 攻击, sql 注入,溢出, DDOS 等等破坏系统的行为是怎么绕过正常检测攻击系统的。有时间实践实践,对个人架构提升还是挺大的。 这样至少会在开发上多注意几点 1.不信任任何客户端提交的数据,写代码的时候会额外做提交数据校验,对敏感数据进行多种检测,负值、转义符、超大溢出数值这些普通应用在开发的时候往往是交给框架处理的,但是自己要有这个意识去确定框架是否能完全解决这个问题。 2.不会将敏感数据传给客户端,敏感数据只会在服务器之间传输,客户端永远只凭借 session_id 或者 auth2 的 key 提交请求,服务端拿到标识依然要进行鉴权,比如避免构造 session_id 或者 key 之类的仿造用户提交的请求,用户的敏感信息如邮箱、身份证等返回给客户端的接口被人恶意遍历。 3.对接口性能比较敏感,对直达数据库的接口尽可能做缓存。比如校验用户是否存在,密码是否正确,生成验证码之类的接口会考虑到容易被攻击,使用缓存、多做一些请求频率的限制。 4.对数据一致性和安全性特别敏感,比如数据库操作的时候会考虑是否加锁,风险高的业务要不要用队列分摊请求峰值,日常数据库备份的方案等等。 这些意思如果自己不去接触 hacker 的技巧,再强调也没有用。自己动手玩一遍,知道危害程度有多大,开发的时候就会分出一部分精力去预先考虑解决方案了,当然可能最后考虑到开发成本和实际能力没有去做,但至少不至于遇到问题会慌张。 |
11
elgoog1970 2016-01-11 09:24:28 +08:00
拿个小板凳,等大家各抒己见。
|
12
zeroten OP 感想楼上诸位的回答
|
13
theJian 2016-01-11 09:30:37 +08:00
mark
|
14
nick32m 2016-01-11 09:34:19 +08:00
我们一般 by convension 说 CRUD 不是 CURD
|
15
expkzb 2016-01-11 09:38:31 +08:00
长远地来看,到最后就只需要一个**建表**能力了
|
16
zeroten OP 收藏比回复多系列。。
|
17
windyboy 2016-01-11 09:55:22 +08:00
数据存储
分布计算 资源协调 |
18
zky001 2016-01-11 09:59:29 +08:00
Zky001
|
21
simapple 2016-01-11 10:18:07 +08:00
发现问题 搞清楚问题的原理 解决问题
然后就是越快越好 |
22
li24361 2016-01-11 10:57:26 +08:00
6 比 5 重要
|
23
Lucups 2016-01-11 11:16:52 +08:00
我觉得作为一个 Web 开发者(后端),终极目标是:根据现有条件制定解决问题的相对比较多快好省的方案,并作为 Leader 角色去解决问题。 (非 Web 领域的项目不算在内)
要达到这个目标,既需要野路子的那种实践精神(大量的实际项目经验,踩过各种坑),也需要学院派那种扎实的研究(基础理论的学习)。 |
24
zonghua 2016-01-11 11:19:52 +08:00
机器学习,人被机器奴役
|
25
zdkmygod 2016-01-11 11:26:07 +08:00
建模。。。其他都是死知识,只有这个才是活知识。
|
26
romisanic 2016-01-11 11:29:50 +08:00
业务能力。
|
28
SoulSleep 2016-01-11 11:51:21 +08:00
这么多人讨论难道没人考虑 对业务的熟悉吗? 整体来看 经验多的人 更多的是业务经验啊....技术水准不见得多太多,但是业务经验就和你人生经历一样啊,真是在用时间在换
|
29
SoulSleep 2016-01-11 11:53:40 +08:00
看了#27 的回复 那就另外说一点:
我想核心能力是对技术的热爱吧 不装逼,真的爱技术,写代码、学习新技术是开心的,如果只爱钱,这个过程是痛苦的,不一样。 后台没难搞的,这么多年都很成熟了,真的喜欢 3 年干别人 5 年的,不就可以说优秀有竞争力了? |
30
loading 2016-01-11 12:36:38 +08:00 via Android
在写代码时时刻考虑安全性!
|
31
felixzhu 2016-01-11 16:28:24 +08:00
开发者的核心能力应该是从公司的角度来说的吧,不应该从程序员的角度来看
那毫无疑问,就是能帮公司解决问题,这个问题很广泛,随便列举 1. 能凭借自己的经验判断一个项目的开发周期和人员需求,技术选型,而不会留下坑 2. 负责的项目知道从一个用户到一亿用户,要经历哪几步的改进,知道如何快速定位问题,让技术不会制约公司业务发展 3. 能够打造一个稳定的技术团队,能够持续吸引优秀的人加入 etc... |
32
WendellSun 2016-01-11 16:32:54 +08:00
少写 bug 。
|
33
joewangyz 2016-01-11 16:56:09 +08:00
我感觉看你想发展的方向吧,是纵向还是横向
纵向的话,就针对于目前工作所需的技术研究透彻,并有所创新。 横向的话,类似全栈,核心竞争力应该是超强的动手能力和给出解决方案的能力,这种的话感觉需要多关注新技术、新框架,自己有什么想法的话尝试着自己实现。 以上只是我对自己工作的一个设想和想法,并没有什么实践基础,只是自己后面可能会选一条路然后摸索 |
34
thenbsp 2016-01-11 19:10:04 +08:00
处理 Http 中的 Request 和 Response
|
35
Gem 2016-01-11 19:15:38 +08:00
钱花的少,事办得好。
|
36
Chanel 2016-01-11 20:43:23 +08:00
大神们对应届生(明年暑假找这样方向的工作)有什么建议,感谢答疑
|
37
dsphper 2016-01-11 21:39:14 +08:00
这里面根本没有我。你让全栈工程师咋办?/大哭
|
38
zeroten OP 收藏远超回复系列
|
39
xman99 2016-01-12 10:21:57 +08:00
我觉得是强大的恢复能力吧, 不然加班加点干一个项目,炒鸡累的。精神恢复很重要
|
41
xman99 2016-01-12 10:30:21 +08:00
先 mark 吧, 晚上有空再多看看, 谢谢各位前辈指引
|
42
wyx 2016-01-12 13:29:54 +08:00 1
活的久
|
43
avantcontra 2016-01-12 22:31:48 +08:00
运维
|
44
HarveyZ 2016-01-12 23:47:30 +08:00
其他几点不谈了,我很想知道扎实的数据结构、算法知识的掌握包括哪些呢?不会是大学的那些课程吧?
|