程序员

想成为程序员,这些技能不能少

对于刚开始学习软件开发的新人来说,“必备技能”往往意味着一个长长的、标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增。

本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一个比较明确的学习重点和路径。

深入学习一门编程语言

没有掌握任何一门编程语言,就不可能成为一名编程人员。

许多程序员试图在学习之初一次学习几种编程语言,以便应对他们第一份软件开发工作的需要。虽然我认为开发人员最终会学习多种编程语言, 但建议不要在开始时这样做。 因为同时学习多种语言只会导致混乱,也会分散学习其它技能的精力。相反,我建议深入的学习一种编程语言,这样也会对使用这种语言编写代码感到非常有自信。

如何组织代码

新手程序员在完成编程语言的学习之后,或者最好在学习编程语言的同时,需要掌握的是如何正确的组织代码。

通过Steven McConnell所著的《Code Complete》,可以帮助学习这个宝贵的技能。

shader程序员需要注意的优化Tips

在写shader的时候,其实一些写法对于其执行影响非常大,而且由于gpu和cpu在架构上的不同,代码的优化思想也不一样...

首先要树立几个思想:

1.gpu是SIMD的架构,即单指令多数据流架构,即在gpu上同时执行n个数据和执行1个数据的效率是一样的,我们要

尽量的把并行的计算搬到gpu上

2.gpu是以向量计算为基础设计的,也就是说在gpu上执行一个向量乘法和执行一个float的乘法的效率是一样的,

并不向cpu那样要多执行几次

3、通常,需要渲染的像素比顶点数多,而顶点数又比物体数多很多。所以如果可以,尽量将运算从PS移到VS,或直接通过script来设置某些固定值;

所以

1.尽量把一些计算合并成向量计算,记住一个向量计算和一个float计算那样快!
比如
float x,y;
x = x * a;
y = y * b;
不如写成 float2 v = float2(x,y);
v = v*float2(a,b);

因为前一种写法是两次乘法计算,而后一种只要1次

2.不要在gpu里面用分支或者条件判断这种语句,尽管大多数gpu 的shader支持这种语法,但是多数gpu里面的

东方程序员怎么看西方程序员?

东方程序员与西方程序员,彼此心中是什么样子呢?本文收集了东西方程序员对彼此的看法与各种印象,对于西方/东方程序员,你留有什么印象呢?

本文是作者根据StackExchange上的一个讨论贴:东方程序员眼中的西方程序员是怎样的?整理而来的,有网友发帖问:

在我看来,东方的程序员如何看待西方同行是一个有趣并且重要的问题。

通常认为东方国家(印度/中国/菲律宾)是为西方国家提供外包服务(美国和欧洲)的。

你有过参与离岸开发的经历吗?如果有,你对此有何看法?

那么对于西方程序员你有哪些印象呢(比如是否具有协作精神,是否按时交付产品,或者他们的工作质量如何)?

以下是来自东方各国程序员的答案:

一、印度程序员

Danish

程序员的十层楼

自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。

那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多大。

当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅代表个人的观点,如有不当之处,还请砸板砖予以纠正。

程序员的十层楼(1~3层)

第1层 菜鸟

第1层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层。

程序员这个职业会是另一个即将破裂的泡沫?

摘要:IT和一些低级别的编程工作最终会消失吗?这个工作是一个巨大的即将破裂泡沫吗?本文作者对此做了详细的分析。以下是译文。

作者:Tyler Elliot Bettilyon
翻译:雁惊寒

一位朋友最近向我提了个问题,这个问题我曾经在不同的论坛上听到过,虽然问题的形式不太一样:

“你认为IT和一些低级别的编程工作最终会消失吗?这个工作看起来有点像一个巨大的即将破裂泡沫。我认为,科技和低水平计算机科学相关工作能够“受人尊敬”以及保持高薪的唯一原因是这个行业中充斥着晦涩难懂的专业术语和公众对计算机的无知,而这两种情况在未来的10年里都将消失。”

这个问题既跟技术工作的未来相关,也是对软件工程领域误解的一个常见例子。虽然这个行业里确实有很多“晦涩难懂的专业术语”,但其中也存在着相当多的难题正等待着具备相应技能的人去解决。一些软件相关的工作正在慢慢地消失,但真正具备一定经验和知识的程序员们将继续会受人尊敬,也能拿到较高的报酬。最近的AI研究员薪水大爆炸和相应人才的缺乏正是印证了这一点。

程序员薪酬到底有多高?来看硅谷的工程师统计

Triplebyte一个被誉为程序员求职神器的求职平台,主要面向软件工程师,并和硅谷的科技公司合作。

它和其他求职平台较大的区别是:Triplebyte自己会面试求职者,相当于将技术面试作为一种服务提供给公司,给公司招人省去一部分成本。

程序员薪酬到底有多高?来看硅谷的工程师统计

他们上来先不看求职者的简历,而是要求求职者先参加他们的技术筛选流程,然后对求职者能力进行评估。而根据他们和客户公司之间的协议,Triplebyte推荐的求职者能直接进入公司的最终面试阶段而不必经过考核。
程序员薪酬到底有多高?来看硅谷的工程师统计

程序员开发辅助工具总结

工欲善其事,必先利其器。使用开发辅助工具将大大提高程序员的开发效率,以下推荐12个开发辅助工具供你选择:

1、Notepad++

Notepad++ 程序员必备的文本编辑器,软件小巧高效,支持27种编程语言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS 等,推荐各位下载使用。Notepad++ 可完美地取代微软的记事本。

2、XML Marker(xml查看编辑工具)

XML Marker是国外的一款非常实用的xml查看编辑工具。软件功能强大,纯文本调试输出和日志文件,你可以有效增加修改你的程序才能产生XML格式他们的作用。你也可以使用XML标记的图形功能,以现场隐藏的趋势,并更快地解决你的错误。更多的功能包括表格排序,语法高亮编辑器和自动缩进,经常编辑XML文件的用户可以下载本软件使用。

3、Everything

每个程序员都应该知道的基础数论

这篇文章讨论了数论中每个程序员都应该知道的几个重要概念。本文的内容既不是对数论的入门介绍,也不是针对数论中任何特定算法的讨论,而只是想要做为数论的一篇参考。如果读者想要获取关于数论的更多细节,文中也提供了一些外部的参考文献(大多数来自于 Wikipedia 和 Wolfram )。

0. 皮亚诺公理

整个算术规则都是建立在 5 个基本公理基础之上的,这 5 个基本公理被称为皮亚诺公理。皮亚诺公理定义了自然数所具有的特性,具体如下:
• 0是自然数;
• 每个自然数都有一个后续自然数;
• 0不是任何自然数的后续自然数;
• 不同自然数的后续自然数不同;
• 如果集合S包含了数字0,并且包含S中每一个数字的后续自然数,那么集合S就包含了所有的自然数。

上述第5个公理也被称为“数学归纳法的基础”。

通常,除了我们想要证明其他算术定理的情况,我们很少直接使用上述公理。但作为算术的基石,这些公理是值得我们去了解的。

1. 算术基本定理和除法运算法则

每个程序员都该知道的五大定理

定律-或称法则,可以指导我们并让我们在同伴的错误中学习。这篇文章中,我将介绍我每次设计或实现软件时出现在我脑海的五大定律。其中有些和开发有关,有些和系统组织有关。它们可以帮助你成为合格的软件工程师。

墨菲定律

“凡事可能出错,就一定出错。”

这条定律来源于 Edward Murphy —— 一名航天工程师在 50 年代初对火箭测试失败的回应。这条定律给我们的启示是永远在系统关键地方使用防御性设计,因为系统某些地方总会出错!

这条定律很容易引入软件工程领域。当你将软件暴露给终端用户,他们会创造性地输入一些出人意料的内容,使系统宕机。所以你需要让你的软件足够健壮,能够检测并警告非预期行为。

当你在机器上运行软件时,任何地方都有可能发生问题 —— 从硬盘上的系统到数据中心的电力供应。所以你必须确保你设计的架构在每个层级都可以应对故障。

程序员的八重境界

看到一篇有趣的文章The Eight Levels of Programmers。以前似乎看过不少这种程序员的多少个级别、境界,但这篇语言很风趣,而且分类比较细化,让人觉得挺合情合理、无法反驳的。绝大部分人想成为一名优秀程序员的人,通过努力可以避免1,因为在编程上的追求避开了2,最终可能都停留在4或5。但努力追寻是没有错的,不然没有梦想和咸鱼有什么分别:)。注意一点,作者并没有无脑地批判谁,并没有说会编程、代码写得好就怎样,其他都是不求上进、不务正业。他全文一直都在客观强调一点:每个人的追求不同,想好自己想要活成什么样子,然后就去努力。

下面就简单翻译一下,说是翻译,没有逐字逐句。而且加了一些自己想说的话,主要是传达一下作者的主要想法。另外倒排了一下八个Level的顺序,这样读起来可能更有意思。希望大家阅读愉快。

同步内容
--电子创新网--
粤ICP备12070055号