㈠ 前端工程师的职业发展路线在哪
前端工程师往往属于产品研发团队,但却很容易被边缘化——后端工程师觉得自己才是主力,没有后端工程师 产品就不存在了,但没有前端工程师产品还能有,只是界面非常糟糕而已。这时候前端工程师就开始感觉自己像是个外包似的,只是来帮别人完成一些任务而已,对 产品没有归宿感。这时候成为一个更好的外包吗?要做关键任务我觉得,要别人重视你的工作,不仅仅是你做得好就行了,还要求你的工作对别人来说足够重要。这跟产品定位有关——例如说对搜索引擎来说,前端对产品 的影响不会非常大,用户只要能搜索到自己想要的结果就行了。搜索引擎最复杂的交互可能就是搜索框的自动完成了,但有自动完成和无自动完成的区别到底有多大 呢?跟准确率和召回率相比,有没有自动完成实在没有多重要。况且,自动完成的结果本身也依赖于准确率和召回率,所以后端工程师比前端工程师重要得多。因此,前端工程师在选择工作时首先要选择前端足够重要的工作。重要用什么来衡量?务实的话,是钱;务虚的话,是产品。如果一个功能只能在前端实现, 并且这个实现能够提高多少的转化率,使得多少原本不产生利润的点击产生利润,那么前端对这个产品来说一定十分重要。可惜往往跟钱相关的事情不由前端工程师 来研究和决定,所以这部分工作还是安心交给产品设计师来做吧,让他们来决定怎么样的产品能赚钱,然后由你来完成这个产品的实现,这时候你的目标就是把产品 做好。回到刚才的问题,有些产品更依赖于后端,例如搜索引擎,当然也有些产品更依赖于前端。什么样的产品更依赖于前端?就是后端难以建立起技术壁垒的产 品。这类产品要抄袭一个功能差不多的并不难,因此只有细节做得最好的能够获得足够多的用户。这类产品在 iOS App Store 上很常见——有很多 app 拥有相似的功能,而其中只有一个交互设计得最好的能够获得绝大多数的用户。尽管 app 不存在 HTML + CSS + JS 这个前端,不过道理是一样的。当年 Tweetie 能够取代老牌的 Twitterrific 成为主流 Twitter 客户端,靠的就是交互上的创新,外加不差的性能和稳定性。如果交互对于一个 web app 来说十分重要,这个 web app 自然也就需要十分优秀的前端工程师。总结一下,由于前端工程师的价值在于实现复杂的前端细节,因此如果可以选择的话尽量选择一个细节决定成败的产品。如果产品的成败已经由后端工程师决定了,例如某某数据规模要么能做要么不能做,那么这个产品就没你什么事了。要懂核心业务每一个公司,每一个项目,都有它的官方语言。不是指普通话,也不是指 C++,我指的是大家围绕什么问题来展开项目,什么问题的讨论能让大家为之兴奋。举个例子来说,网络的官方语言就是搜索,跟搜索没有关系的产品也会使用 “准确率”、“召回率”这样的术语用来做比喻。前端工程师有多少知道什么是“准确率”、“召回率”的?估计不多,因为前端根本没有这样的概念。这时候前端 工程师要跟后端工程师沟通也就不容易了。久而久之,你对人家很兴奋在讨论的什么 O(1) 还是 O(n) 不感兴趣,人家也不理解你的 {} != {} 是什么意思,你就被边缘化了。如果不想被边缘化,就算前端不是公司的核心业务,你也必须懂公司的核心业务,然后说着官方语言,而不是前端的方言。这就意味着,如果你在一家后端技 术很强大的公司,你最好也懂后端技术。我知道国内有很多前端工程师并不是计算机系毕业的,就算是国内的教育也不怎么样,这时候你只能恶补相关的基础知识 了。如果你不懂这些,就算你能把整本《JavaScript 权威指南》背下来,你说的还是方言,说官话的人还是会鄙视你。如果公司主要服务于某个垂直领域的话,你必须对这个垂直领域十分了解,随时能用这个领域的行 话来沟通。总结一下,由于每个人已经熟悉的领域都不一样,所以没办法说哪个领域更适合前端工程师。如果你原本已经有某个领域的从业经验,进入服务于该领域的技 术公司总是有显着优势的。如果你进入了一个自己不熟悉的领域,那就一定要补充相关基础知识,否则你对这个领域不感兴趣,这个领域也不会对你的前端工作感兴 趣。实际例子为什么我选择加入豌豆荚?主要考虑的还是上面两点。我在网络的时候一直就在想,既然前端对搜索引擎来说不重要,那对什么类型的应用来说比较重要呢?当时看到 Facebook 做得不错,所以觉得社区会需要复杂的交互,而如果复杂交互做不好则会影响用户使用,因此前端对社区来说应该十分重要。现在看来,也不完全是这样子。前端对 社区来说确实重要,但 Facebook 并不是一个典型的例子,它是一个前端做得尤其优秀的例子。在我了解到豌豆荚 Windows 客户端的实现方式时,我立即意识到它可以通过我的第一个判别标准——前端对它来说是关键任务。它使用 Webkit 做了一个容器,然后把所有的交互都通过 web app 的形式做在里面,然后通过一组接口跟 native 进行交互。如果一个应用决定要这样做了,那么前端就能影响到它的成败,因为这时候前端后端的分隔线已经很明确了。如果一项功能应该由前端来做那就必须由前 端来做,后端基本不可能成为实现此项功能的备选方案,这时候前端就具备了无可替代的位置。至于第二个判别标准——豌豆荚的核心业务是什么?我觉得豌豆荚做的很多事情都是以产品设计为起点的,而这至少是我感兴趣并且也有点感觉的东西。从细 节上来说,就是大家喜欢谈论的事情是一致的,例如产品如何做一些很智能的设计,最新的技术方案如何能够巧妙地帮助这些设计得以实现。Junyu 说“设计就是创造性地解决问题”,这是我喜欢的解决问题方式。这个世界上能够把逻辑转化为代码的人非常多,同时有一定数学和计算机专业基础的人也不少,因此要拼谁的解决方案更好的话那还要加上创造力。我知道国内有很多产品设计师,在考虑产品时首先想到的是百万千万级用户量,这样无论从单个用户身上赚到的钱多么的少,最终产品还是能赚大钱。网络曾 经就属于这种思维方式,但这不是我喜欢的风格,因为没有明确的目标用户定位。我知道国内由很多工程师,在编写代码时用尽各种技巧以展示自己过人的才智,但 是这样的代码还有可复用性吗?除了作者本人没有人能够维护啊。不同的人有不同的品味,能够跟品味一致的人一起工作是一件幸福的事情。
㈡ 前端开发好还是软件测试好
web前端相当于是半个程序猿,测试门槛比较低但是薪资待遇也相对差一些。每当换行业时,总是不知道学习什么,又怕自己入错行了,那到底web前端和软件测试哪个好呢?
了解web前端的知识
前端方面非常稀缺人才,如果懂H5那是非常好的了,而且待遇也不低,不过 浏览器兼容性是前端噩梦测试虽然入门门槛低,但是其实需要学的东西非常多,如果是web测试,那么各种乱七八糟前端的东西都要去了解(JS,CSS,HTTP,HTTPS,POST请求,XML,JSON)起码不会写代码,但是你要了解。
软件测试的基础知识
软件测试还可以细分为功能测试,这个要求技术不高薪水也不高,属于黑盒测试开发,这个介于黑盒和白盒之间,都要懂,而且要会代码,薪资和开发比差不多;白盒测试,这个一般开发会做,也有给测试做的,薪资和开发差不多,基本持平自动化测试,这个基本要会写代码而且量还不少,薪水不错性能测试,这个主要是性能分析,薪水也不错,不比开发少安全测试这个基本就是搞安全的 这个能力有多强,薪资有多高。
web前端该掌握的基础
web前端开发一般指网页开发,学好CSS3是网页外观的重要一点,就是布局效果,CSS3可以帮助把网页外观做得更加美观。学习JavaScript的基本语法,以及如何使用JavaScript编程将会提高开发人员的个人技能,JavaScript相对于前端来说,也是分量比较重的。也要认识一下NodeJS和PHP加上数据库等这样的后端语言,方便前后端开发配合,学习 HTML5、CSS3、响应式页面布局、微网站制作等开发移动互联网的应用。像Ajax、JQuery、jQueryMobile、Bootstrap、AngularJS等更是前端开发必学的高级技术,掌握精通这些可以拿到很满意的薪资。
软件测试逻辑性
软件测试工程师与软件工程师不同,软件工程师大多是男生,因为软件开发的工作需要很强的逻辑推理能力,而软件测试工程师则不需要天天去思维创造,工作重点是在注重经验的积累上面,同时,软件测试工程师要查找软件的缺陷需要具备的素质与女性所有的细心,耐心,安静,敏感等各个方面很吻合。同时,女生做测试的优势还在于沟通,女生应该比男生稍微细心点,这点对于发现Bug还是很有优势的。
软件测试是在软件开发过程中,在不同阶段对程序进行测试,发现程序中的错误,对软件的质量进行控制,扮演着“把关人”的角色。细腻、敏感、认真、有耐心、想象力丰富、沟通能力强是女性与生俱来的性格特点,这些性格特点可以使女生在软件测试工作中更加顺利。