1. 既然程序员可以自己接工作外的单,那为什么不直接单干
软件行业工作10年+,现任系统架构师,自由讲师,专栏作者。曾经接过3、4个私活,并且项目完成,收到了尾款,但是做的并不开心。
观点
程序员可以自己接工作外的单,不直接单干的原因是投入产出比较低,你往往付出了巨大的努力,加班加点的熬夜,但是得到的报酬与你的付出往往不成正比。
接私活的单价一般较低,而且要求极高,一般是一些小的企业或者一些个人提出的需求。对于软件行业完全不了解,在他们眼里什么都是比较简单的,根本不会按照你的节奏去推进项目。往往工期短,要求的质量又极高。
私活往往还要协助后期做维护,而且甲方根本不愿意掏钱维护,他认为这都是你应该做的。
2. 做一个程序员需要达到什么样的水平
辨别一个程序员的水平唯一的办法就是看 产出质量。
算法和数据结构都是锦上添花,并非是雪中送炭。而一个程序员的水准大致上是可以通过之前的代码质量估算出来的。【如果你可以获得此程序员的真实编写的代码,比如原创的Github】。
举个栗子:下面是我最近在单位一个同事写的代码,Java语言
private boolean checkProportions(String str, Integer grades) {
String proportion = str;
for (int i = 1; i < grades; i++) {
String st = proportion.substring(proportion.lastIndexOf(",") + 1);
if (st.equals(""))
return false;
proportion = proportion.substring(0, proportion.lastIndexOf(","));
}
if (proportion.equals(""))
return false;
str = str.replace(".", "");
str = str.replace(",", "");
for (int i = str.length(); --i >= 0; ) {
int chr = str.charAt(i);
if (chr < 48 || chr > 57)
return false;
}
return true;
}
大致上的功能就是将 1,2,6.2,4,1 的字符串判断每一 ‘,’内是数字,而且长度符合规定
这样的代码看上第一眼就觉得非常的丑陋。所以在我的要求之下,进行了一次重构。
private static boolean checkProportions(String str, int grades) {
String[] proportions = str.split(",");
if (proportions.length != grades) {
return false;
}
for (String s : proportions) {
if (!NumberUtils.isNumber(s)) {
return false;
}
}
return true;
}
这里看上去差不多就Ok。这样的代码其实也并没有用到什么数据结构和算法,就是很简单的字符串处理。
实际情况:在我们写的绝大多数的代码里面,大部分属于业务逻辑,极少部分的代码需要使用到算法和数据结构,在这样的情况下,我们能使用的到的技能最为关键的是让代码如何更加合理。而让代码更加优秀的方式是通过千锤百炼的重构,而重构是极大的考验一个程序员耐心和能力的东西。
质量的范围广泛,我从下面几个小方面聊聊。
出货能力:如果一个程序,算法再精妙,不能出货都是扯淡,我看过某某大神,算法溜得很,但是一个人完全做不到按照工程需要把事情给做完。
优化能力:并没有一个程序是一步到位的,一个工程的交出去可运行了,那才是第一步,很多时候随着业务的增大,对性能的要求越来越高,有一定对于代码优化的能力也是比较重要的。
调错能力:项目越大,遇见的Bug也就是越离奇,这个时候需要强大的Debug能力,找出那个最为关键的错误点,甚至于追溯底层框架的源码。
技术掌控:你项目能用Spring,Hibernate等等框架,但是有没有想过,这些技术你真的可以掌控么,如果有一天你的框架版本需要升级,真的做得到么?甚至于从Hibernate转为MyBatis。
算法和数据结构是影响到一些核心区的问题,但是其他的一些技能,比如面向对象的架构设计,代码的低耦合,那都是对整个项目有着直观改善的技能。并非是贬低算法,而在实际工作中,有太多比算法更重要的问题了。
3. 程序员客栈接单要求高吗
高。程序员兼职需要自己有名气,程序员客栈接单要求是很高的。程序员客栈,是互联网远程工作中心,程序员的经纪人。雇佣BAT级别开发者为创业者开发产品。
4. 程序员需要达到什么样的水平才能顺利拿到 20k 月薪
对于多数程序员而言,月薪达到8000以上的水平不是一个难事,但是达到20K以上的月薪其实很难。
很多人会觉得it行业特别赚钱,对于已经参加工作的小伙伴来说,it行业其实是一个不错的赚钱选择,但这并不意味着每一个程序员都能够赚到足够多的钱,月薪高的人其实只是少数。
普通程序员的工资在8000左右。
我们这里提到的工资主要集中在一二线城市,因为一二线城市的工作机会很多,所以程序员的工资也比较高,一般可以维持在8000元左右,对于那些进入到知名互联网企业的人来说,他们的工资可以到达15K左右,有些人甚至可以到达20K以上。现实生活中,并不是每一个程序员都在知名互联网企业上班,在私企上班的程序员的工资只能维持基本温饱。
5. 怎么才能算是一个合格的程序员要求要懂些什么东西,到什么程度
如何成为一个合格的程序员
确定目标
做什么事都要有明确的目标,因此,你首先要为自己确定一个可测量的目标,并把这个大目标分解为几个分阶段的小目标。比如,要在一年内开发出一套仓库管理软件:第一月的目标是学会一种计算机语言;第二个月的目标是熟悉仓库管理业务;第三个月学会数据库;第四个月写出原型……然后按计划去做,每完成一步你的信心就会增加一些,并会感受到成功的快乐。
选择工具
当你开始着手的时候,会发现市面上有太多的计算机语言和工具供你选择了。具体选择某种语言和环境与你的目标直接相关,比如要开发单片机系统和要开发管理系统,所选择的语言会有天壤之别。下面是一些参考意见(纯属个人意见):
1、脚本类:特点是简单、易学、易用。比较常用的有:Unix/ Linux的Shell语言,网页里用的VBScript/JavaScript,MS-Office里用的VBA,动态主页用的JSP、ASP、PHP等,通用语言Perl、Python等。当然像Python/Perl语言的功能已非常强大,有用它们写出的数据库、系统管理等大型系统,如Zope、WebMin等。
2、RAD类:这类以快速开发着称的语言及工具比较流行,常用的有VB、Delphi、Powerbuilder、Visual FoxPro等,这类工具常用来开发管理信息系统,如用友、金碟等,也用来开发通用软件。
3、专业类:最常用的是C/C++,Java等,如果你想成为专业的程序员,就要学习这些内容。它们通常用来开发系统级程序,比如操作系统(MS-Windows、Unix/Linux等)、数据库(Oracle、SQL-Server等)、开发语言(C/C++、Python等)、工具软件(WPS、KV3000等),在大型系统里基本都有它们的身影。
4、专用类:这类语言种类最多,它们一般设计用来完成一项特殊的工作。例如现在最流行的Flash,它内含Action Script语言;AutoCAD内带VBA和AutoLisp;每一种单片机都带有自己的ASM语言;许多系统如MatLab、Spss、Intouch、Modsoft等都有自己的专用语言。
总的来说,当选择语言的时候,一定要与自己的目标相结合,另外,入门的时候,可先选择容易一些的,入门后,再选择专业些的。一开始就选择C++可能会让你知难而退,但如果选用Python,你就可能会觉得计算机语言原来也挺容易。
勤奋练习
除了多写程序,没有别的办法去更快地提高你的程序水平了。看书的时候,最好把书上的例子自己输进电脑实践一遍,然后进行各种试验,再联想出各种相关的程序,自己写出来,并验证自己的结果。如果有好的想法,就尝试把它写出来,很快你会发现你的水平在快速上升。
当你有了一定的基础的时候,可以尝试去读高手写的程序,解读他们的程序的设计理念、风格、解决问题的思路等。在这方面,GNU/Linux为我们提供了一个巨大的源程序宝库,里面有各种各样的程序源代码,详细研究一套你感兴趣的系统,你的水平会得到大幅度提高。
不断提高
除了多加练习,你还需要多读书,特别是英文书。读书可以在理论上提高你的水平。信息技术发展太快,而大部分的技术最先出现的时候都是英文版本的,要几个月以后才有中文版本的书出来,因此要想跟上步伐,一定要努力提高自己的英文水平,这样才能同步跟上信息技术。你可能担心自己的英语水平不行,没关系,刚开始多查字典,很多就会发现计算机英语其实很容易。当然,这里的书是泛指,包括网络上的各种文章,电子书等。
另外,多与他人交流经验也有助于自己水平的提高。互联网为我们提供了一个巨大的交流平台,各种BBS和新闻组上都有热心的高手回答你的问题。不过在问问题之前,自己一定要先努力尝试过,再给出自己的想法。动不动就问别人,自己水平得不到提高,别人也不再会回答你的问题。
继续深造
当你觉得自己成了程序员的时候,你就会发觉还有很多东西要学,你可以继续深入学习来提升你的水平。
1、向下深入:了解操作系统的机制,了解底层的API,这对开发系统级程序非常有用。
2、向上延伸:学习项目管理,软件工程,设计模式,分析设计等,这对你开发大型系统非常有帮助,特别是一个团队去开发一个大型项目的时候。
3、横向扩展:熟悉各种系统如数据库、多媒体、人工智能等,然后集成起来应用,会产生更大的效果。
6. 程序员的招聘要求
怎么说呢,不同的程序员要求是不同的,我们以JAVA程序员为例子:
三个基本要求:
(1)学历要求:大学本科以上学历(含本科),专业: 计算机相关专业本科以上;专科以上学历,计算机及其相关专业,3年以上相关岗位经验;
(2)工作经验要求:一年以上java开发工作经验;B/S项目开发经验2年以上;3年以上的Java, J2EE, XML等开发经验,1年以上架构设计经验(Windows环境);
(3)项目开发要求:具有一定规模的项目开发经验;
其实这三个要求,可以说,是目前大多数开发类技术岗位上,一定都有的要求。
学历来说,只是一个敲门砖,我们没有办法帮你,你达到基本要求即可,当然,如果你的要求不太合适,可以强调你的技术实力。
没办法,这个社会就是这么残酷,大多数公司,都不想花培养人的成本,都希望用熟手。
但另外一方面说,具有一定的项目开发经验,工作起点就会高很多,不管是收入,还是发展,你都会站在一个比较有利的位置上。
实际上,大学生也可以通过一定的训练,积累很多的项目开发经验,达到工作2-3年程序员的水平,这个我们另文专门再说。
7. php程序员,如何能稳定的接单。都有什么方法
楼主会织梦程序二次可以吧,织梦不是什么很大型的程序,一般很多人用织梦设计一些模板,做一些公司站和信息站。当然如果楼主要接单要找到这样的单子才行,建议可以去远程工作平台看下,像云工上定期就有一些开发任务发布
8. 现在的公司需要的程序员要具备什么能力啊
最佳答案
作一个真正合格的程序员,应该具有的素质。
1:团队精神和协作能力
团队精神和写作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
2:文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。 一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
5:模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员、项目经理。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力
9. 有的程序员接私活可以每个月收入30k,真的是这样的吗
没有年龄底线吗
10. 应届程序员大概需要什么水平,java方面,请说具体些
首先程序员你一种数据库都不了解肯定是不行的,说实话你只要能面试过了,再学习能力强一点,其他什么技术都不重要,像你说的一样具体做的时候查手册就行了,每个公司在聘程序员都会有不同的需求,但大致都是这样的:精通Java、Jsp、Servlet、XML、Web Service等相关技术,熟悉Oracle/Sql Server等大型数据库应用开发,熟悉Struts,Hibernate,Spring,Webwork等MVC或ORMapping框架,熟悉Tomcat,JBoss,webLogic等应用服务器,就这些歌东西了。