A. 你怎么看待程序员的高压工作
我自己就是从事程序员工作十几年,这确实是一份很辛苦的工作,但是也有它的意义所在。
1、这是需要人不断学习才能胜任的工作,所以能促使大部分人养成持续学习的自觉性,让人一直走在前进的道路上;
2、这是一份比较损耗身体的工作,所以需要工作之外做好锻炼计划并付诸实践,这就促使大部分人养成一种爱锻炼习惯与爱护身体的思维;
3、这是一份重沟通的工作,所以很多人的表达能力得到极大的改善。
B. 您好! 想问一下。美国移民EB3的问题。
EB3需要先有雇主,并且排期漫长。
除非你已经在美国,并且已经在某公司工作,否则基本上不会有公司能雇佣一个需要在很多年后才能开始工作的程序员,这个专业知识更新太快了。
换句话说就是,如果你还在中国的话,那么通过EB3移民的可能性无限趋近于零。
C. 软件测试分为几个阶段
一、单元测试
单元测试:单元测试是针对软件设计的最小单位--程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行。
对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。
总的来说,单元测试是对软件中的最小可验证单元进行检查和验证。
测试原则:
1、尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例中重写模拟方法);
2、此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。
单元测试的好处:
1、尽早的发现缺陷;
2、利于重构;
3、简化集成;
4、文档;
5、用于设计。
单元测试的不足:
1、不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误;
2、每行代码需要3~5行代码进行单元测试,存在投入与产出的平衡。
二、集成测试
集成测试是在单元测试的基础上,把软件单元按照软件概要设计规格说明的规格要求,组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求。
集成测试包括BigBang、自顶向下、自底向上、核心系统集成、高频集成。
三、系统测试
系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计的要求。它主要由测试部门进行,是测试部门最大最重要的一个测试,对产品的质量有重大的影响。
集成测试和系统测试之间的比较:
1、测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个系统的功能和性能;
2、测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的角度进行测试。
四、验收测试
验收测试也称交付测试,以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行环境。是针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
验收测试包括alpha测试和beta测试,alpha测试是由开发者进行的软件测试,beta测试是由用户在脱离开发环境下进行的软件测试。
D. 开发小程序前期需要做好哪些准备工作
1、.选择开发模式
目前小程序有两种开发模式,一是自己开发,二是找专业的开发服务商来开发。如果选择自己开发,就需要招聘前端、后端、设计、测试等人员,尽快把开发团队建立起来。
如果选择外包,那就要对准备合作公司做一个考察,例如对方的实力、口碑、专业程度,有无成功案例等等。如果这家开发公司,有过大型企业开发的经验、案例,那就可以将其作为合作对象。
2.做好产品定位
在小程序开发之前,一定要考虑清楚,做小程序的原因是什么?想要通过小程序实现什么?然后结合行业特征、企业特色、产品卖点、目标人群等,做好小程序的定位工作。
3、确定好需求
在定位工作做完之后,接下来的工作就是确定一下需求。例如,功能、页面、内容、图片等。在确定好这些需求之后,应当把需求都整理成一份文档,方便后期与开发人员沟通、交流
4、提交需求
在确定好开发方式之后,接下来的工作,就是将前面已经整理好的需求文档交给相关人员。在提交完需求时,应当与相关人员确认所有细节,以免影响开发进度。
E. 程序员是怎么被逼疯的
本来是个很早写的3个赞的答案,不知怎么回事又被大家点了起来:D
再补充几个:
老板:给你超级高薪,年薪十万,给我做个微信出来!
老板:买毛服务器啊,我就要手机端就行!!!
老板:(半夜3点半,电话)别睡了!有bug!赶紧打车来公司!!!
PM:我们要做一个用户系统,猿猿,你估一下工作量,给个排期吧!
PM:没有需求文档,你就照着微信做个一模一样的就行!
PM:这是Boss说的,必须改!你问他去!
PM:deadline,deadline……
QA:那谁,有50个bug还没修,尽快处理!真是的!
烫
F. 程序员每天都是怎么过的
早上十点半到单位,花五分钟写一下今天的工作计划,去饮料机买饮料,喝快乐水,打开电脑,看看群里有没有人反馈bug,没有继续翻墙看看国外的新闻。大概十一点多了,群里讨论下中午吃什么,十二点下楼,下午一点回来玩手机+午睡。睡到两点,起来揉揉眼睛再买个饮料,两点半开始写代码,写到4.30,两个小时写完一天的任务。剩下的时间就测试,休息一下,学习新技术,想想怎么赚钱,提升自己。六点吃完饭。回来7点,继续学习,八点下班。出去喝一杯小酒或者奶茶回家。做兼职,学习。睡觉!
G. 作为一个程序员,选择哪些兼职比较好
接私活
大多数程序员想要在业余的时间挣点钱,第一想到的就是它,毕竟这是程序员本职的工作。但问题是哪里找私活?私活该怎么定价?这里大家优先选择熟人推荐的,比如你的朋友、同事、或者同事的同事等等。他们所在的公司可能刚好需要这样的私活需要找人做,比较靠谱。其次去各大外包网站寻找,很多技术网站都有人发布一些私活项目,网上搜索下就会找的到。那么私活该怎么定价?首先肯定是不能比你的工资低,不管是按时薪算还是月薪算,因为对于程序员来说你的业余时间比你工作时间更宝贵。
但这种接私活的方式并不是很推荐,自己最开始工作的时候有接过一个私活,但是后来就没做了。因为太累了,而且费心。如果你遇到雇主不是从事互联网的人,有可能连他自己的需求都理不清,就开始叫你做。做到一半的时候,又重新改需求。并且有时候做完的私活,尾款难以收到。
录制视频课程
现在在线教育大家越来越能接受,不管是网上的免费课程还是收费课程,总有受众人群的。所以这就是衍生了一种赚外快的方式,就是录制视频课程。一般录制的课程分为两种:免费课程和收费课程。免费课程是按照课程时长来算,一般至少是每小时 1000 - 2000 块,不同的网站与不同的课程级别,价格有浮动,但是这个时长是按照最后剪辑的市场,也就是说,最后剪辑的 1 小时课程,你很可能录制了 2、3 小时。当然,一开始录制会比较麻烦些,但是一旦上手了,后面录制就会比较快了,一般来说,每月靠录制课程赚个 5、6 K 是没有问题的。
还有一种是收费课程,但是收费课程一般都寻找一些大公司 title 好听的,或者有点名气的。因为这样才能吸引用户付费购买。收费课程除了录制课程费用,还有一定的提成,提成标准每家也都有所不同。如果你能力还不错,去录制一些免费课程应该没问题,如果你在业界小有名气,那只要你愿意,那肯定是没有问题。
自媒体
如今自媒体如日中天,以今日头条为首的自媒体平台非常的多。有的人玩今日头条年收入 50 万,有的人月收入一万。当然那些人都是全职在玩今日头条,但对于我们来说,利用业余时间每个月赚几千还是很轻松的。就已今日头条来说,你过了新手期,就会自动帮你开通头条广告。也就是说你以后发布的文章、视频、图集只要有阅读量就会有收益。今日头条视频一万点击量的单价是在 3-4 元左右,如果你开通原创之后一万点击量单价则高达 10-12 元。
H. 程序员到什么时候才能月入三万
不积跬步,无以至千里;不积小流,无以成江海。三万在毕业生眼里就是梦想,不同的人实现这个梦想可能时间不同。有的人天生丽质,有的人龟兔赛跑,硬件软件都不一样,所以会有差别。一说程序员,大家想到的就是编程,其实要达到三万水平,有很多方面都需要提升。据我观察,我们GS(知名互联网GS)达到这个水平的人具有以下能力:1.编码能力超强至少精通一种语言,了解两三种。基本的功能模块,随手就来。2.对自己负责模块的架构已深入骨髓对负责模块的架构相当的熟悉,增加功能模块,定位问题手到擒来。3.能够带领一个团队完成任务能够带领一个团队完成任务,主要是体现在团队管理上,合理的分配任务,合理的排期,按时完成。4.出现疑难问题时,能够hold住并解决对于一些偶现问题或者崩溃,能够借助软件或者工具定位问题所在并解决。俗话说的疑难杂症。(这种能力对提升你的影响力很有帮助。)5.具有快速学习能力两周内能够快速学习一种语言或者模块。6.单兵作战能够单独负责一个模块的开发任务。其实达到这个水平也不难,只要你踏踏实实,一步一个脚印的走,摒除一切杂念,五六年足矣。
I. 在大家眼中,程序员是一个怎样的职业
为什么有人在技术造神
大家应该已经感受到,技术圈这两年已经和娱乐圈创业圈差不多的氛围了,这其实是有原因的。
最主要的原因是,创业公司和创业媒体越来越多,他们需要大量的程序员投身到创业这个高风险的行业中,而造神,正是让程序员们自动跳进火坑的绝佳办法。不是说程序员不能创业,我是说,创业媒体们故意模糊了创造和创业的界限,把程序员们的创造冲动偷换概念,鼓吹了太多不适合的人去创业。
另一个原因是,招聘成本高涨,CTO 们为了能提升影响力,不得不频频出席各种大会刷脸。文笔好的再做做自媒体和技术社群,既能强化个人品牌提高身价,又能在融资的时候提升成功率。
总之,这个行业出现了各种技术大神。
这些大神在普通人类和初级程序员眼里是无所不能的,是他们向往的目标;在中级程序员和高级程序员眼里,这些大神就是他自己,只不过他还没红起来而已…
于是攀比心理也开始泛滥,全国第三的架构师比比皆是,整个圈子渐渐就浮躁起来。
然而绝大部分程序员,依然是雇员
媒体们在包装时,最喜欢按独立开发者的路线来整。“从小就对技术有天分”、“大学时曾在某编程大赛一鸣惊人”、“写了个 APP 玩结果一个月有了千万用户”、“从公司离职自立门户三年上市”。
OK,这的确是程序员的一条职业路线图。但是媒体们不愿意告诉你的是,一:只有极少数程序员是通过这个路线成功的;二:这条线其实需要太多非程序员职位的技能,比如产品设计能力和销售能力。
程序员的价值决定
绝大部分互联网公司的程序员职位,没有技术门槛
然而不幸的是,绝大部分互联网公司都不是技术驱动的公司。真的就是鸟哥说的那样,绝大部分技术岗位,其实技术门槛都不高(门槛在工程上,后文细讲)。技术不过是这些公司的护航舰,而不是破冰船。
先别打我,冷静下来想想,到底有多少你会的那些技术,是你的同行们不会的呢?不多,对吧?
几年前亿级别的搜索还是问题,现在已经到处是通用解决方案了;几年前千万到亿级别的网站和 APP 解决方案还在大公司手里,现在各个架构大会都讲烂啦,而且其实都差不多;就连 DeepLearning,带 API 接口的框架也开始涌现,只需要把图片用 REST 传进去就能取到结果了。
很多事情,已经没有难度,只需要持续投入。是的,对绝大部分程序员来讲,他们不需要成为科学家,而需要成为工程师,成为从科学家手里接过火种,去燎原大地的人。
怎样才是一个好工程师
工程的本质不是创造,而是去风险化。
工程是关于如何低成本、高效率、按时按量完成既定任务的。所以判断一个工程师是否优秀,并不是他多有创意多有名气,而是看他有多稳,看他能多 GettingThingsDone,中文就是“靠谱”。
有时候一个好的解决方案,未必采用了最新的技术和框架,而是看上去朴实无华,功力都包涵在背后的细节里。就像顶尖高手打的斯洛克台球,每一杆都平淡无奇,只是因为上一杆的回球太到位。
有同学问,那我工程做的太好,岂不是没有机会遇到一些高难度挑战了么?放心,一般公司都雇佣了产品经理来帮你制造高危事件。
同样的,一个好的工程师,会选择最适合需求和团队的方案,考虑开发效率和系统效率的均衡,从而已达到最优效果;而不是整天和别人去争论什么语言最好、哪些框架过时了。
工程的另一个要求是进度控制和质量控制。
在项目立项之后动工之前,对要做的事项作出详尽的规划,对未来一到两周的工作给出细致的排期,这是进度控制的基础。
代码的及时入库与合并,自动化测试和每日构建,CodeReview 和文档编写,这些看似无关紧要的习惯则决定了项目质量。
不幸的是,很多程序员把这些工程上至关重要的东西当成垃圾,视为对他们“创造力”的压抑。
他们总是以创造力为借口去寻求自身的自在,比如上班不带胸牌不打卡,中午休息时间在公司看视频打游戏,最好可以远程上班,项目到期之前再来检查进度,公司不要用统一框架,只有傻逼才写文档。
对职业的理解偏差和工程能力上的荒芜,培养了大批能写代码但死活写不好代码的“码农”,反而让那些有着彪悍工程能力和良好习惯的程序员变得奇货可居。
最后,来说说程序员那无处安放的创造力
有了锤子想找钉子是很正常的原始冲动,但我们必须认识到,创造力对于程序员这个职业来讲,是锦上添花的东西。如果你没有强大的工程能力,那么创造力也不过是无本之木。所以扎扎实实的把工程基础打好,这是最根本的。
在此基础上,我比较推荐程序员采用内外两条线来培养自己。在公司内的项目上采取相对保守的策略,尽力把稳定性做到最好,培养出自己卓越的工程能力;然后在公司外的开源项目和自己的独立项目上,采用一些新的技术、实践一些新的想法、充分发挥自己的创造力,梦想还是要有的,对吧。
这样做最明显的好处是,你可以了解到新技术和激进方案的优缺点,从而在进行方案选型时,有更多的依据;还有一个职业发展上的好处:如果不是主负责人,公司的项目往往不能代表你的能力;但独立项目却可以作为一个非常好的能力证明出现在你的简历里边。
你可以是一个身怀绝技的手艺人,在自己家里你尝试各种手法各种风格的个人作品;但当你参与颐和园这种级别的工程时,好好的把自己负责的石头雕成总设计师要求的样子就好 —— 毕竟这个时代一个人已经很难负责整个项目了。这就是我所理解的程序员的工匠精神。
J. 作为程序员,我是怎么月入三万
不积跬步,无以至千里;不积小流,无以成江海。
三万在毕业生眼里就是梦想,不同的人实现这个梦想可能时间不同。有的人天生丽质,有的人龟兔赛跑,硬件软件都不一样,所以会有差别。
一说程序员,大家想到的就是编程,其实要达到三万水平,有很多方面都需要提升。据我观察,我们GS(知名互联网GS)达到这个水平的人具有以下能力:
1.编码能力超强
至少精通一种语言,了解两三种。基本的功能模块,随手就来。
2.对自己负责模块的架构已深入骨髓
对负责模块的架构相当的熟悉,增加功能模块,定位问题手到擒来。
3.能够带领一个团队完成任务
能够带领一个团队完成任务,主要是体现在团队管理上,合理的分配任务,合理的排期,按时完成。
4.出现疑难问题时,能够hold住并解决
对于一些偶现问题或者崩溃,能够借助软件或者工具定位问题所在并解决。俗话说的疑难杂症。(这种能力对提升你的影响力很有帮助。)
5.具有快速学习能力
两周内能够快速学习一种语言或者模块。
6.单兵作战
能够单独负责一个模块的开发任务。
其实达到这个水平也不难,只要你踏踏实实,一步一个脚印的走,摒除一切杂念,五六年足矣。