美高梅官方网站66159

如果没有不同编程风格的良好组合,你永远无法知道一个程序员在做什么

作者:新闻公告    来源:未知    发布时间:2020-05-03 04:43    浏览量:

在我的代码旅程和编程经历中,已经遭遇很多奇特的对手,还有更为奇特的盟友。我至少发现有5种代码勇士,有些是出色的战友,其他则似乎都在搅黄我的每个计划。不过他们都在软件开发的万神殿上都有一席之地。如果没有不同编程风格的良好组合,你可能会发现你的项目要不就是耗时过长,要不就是太不稳定或太过完美而无人去做。

(转)自学的程序员如何找到好工作?

1.A good programmer is someone who always looks both ways before crossing a one-way street. (Doug Linder)

不过他们都在软件开发的万神殿上都有一席之地。如果没有不同编程风格的良好组合,你可能会发现你的项目要不就是耗时过长,要不就是太不稳定或太过完美而无人去做。

【伯乐在线导读】:2016 年有位年轻的程序员在 Quora 上提问求助:
我今年 17 岁,从 14 岁开始编程。我主要关注 Java 语言,并在 AP 计算机科学这门课上拿了 5 分。我相当精通 Java(比如语法、主要类、GUI/JFrame 等),HTML5 和 CSS3 也不错。我感觉自己缺乏很多有用的技能,来帮助我在人才市场上推销自己(比如数据库的工作原理,以及我应该使用哪些工具),我很好奇其他人是如何学习这些东西的。我打算去大学拿一个软件开发的学位,但我开始感到有点沮丧,觉得读大学的目的就是为了工作。现在有哪些我应该上的课程,或者应该做的事情吗?

好的程序员即使在过单行道时也总是会环顾两边。

1. The duct tape programmer 喉咙贴了胶带的程序员
The code may not be pretty, but damnit, it works! 代码或许不漂亮,但能用!
这种家伙是公司的基石。代码有问题的时候,他能快速补漏,下不再犯。当然他并不关注代码看起来怎么样,是否容易使用,以及其他琐碎的问题,但是他能搞定,没有一堆废话或不会唧唧歪歪。用这种程序员的最佳方式是,你指出问题后走开就可以了。
 
2. The OCD perfectionist programmer 有完美主义强迫症的程序员
You want to do what to my code? 你想对我的代码做什么?
这类家伙并不关心你的截止日期或预算,和编程艺术相比,那些都微不足道。当你最终收到最终成品时,你没有选择余地,只能对那漂亮格式的代码,不,是白玉无瑕的代码,衷心地赞叹。那代码是如此有效率,你无须再对它做什么,否则就是画蛇添足,亵渎大师手笔。他就是那位唯一有资格改动代码的人。
 
3. The anti-programming programmer 反编程的程序员
I’m a programmer, damnit. I don’t write code.  我是一个程序员,擦!我不写代码。
他的世界只有一个简单的真理:写代码不好。如果你不得不写些东西,那你就错了。因为早已有人做过了,只需拿来就是了。即便他写代码所用时间和其他程序员差不多,或更长,他会告诉你,这种开发实践是多么多么地快。当你拿到他提交的项目时,可能实际代码只有20行,也易于阅读。代码或许并不快、高效或向前兼容,但所耗费之力是最小的。
 
4. The half-assed programmer 不称职的程序员
What do you want? It works doesn’t it? 你想要什么呢?代码不是能用么
这种家伙很少关注代码质量,那是其他人的工作。他只快速完成安排的任务。你可能不喜欢他的代码,其他程序员也讨厌,但管理层和客户喜欢。虽然将来他会给你带来很多的痛苦,但他可以单枪匹马地在期限之前干完活,所以你不能嘲笑他(不管你心里有多想)。
 
5. The theoretical programmer 理论型的程序员
Well, that’s a possibility, but in practice this might be a better alternative. 嗯,有那种可能,但实践中这种应该更好。
这家伙对应该要做事之外的份外事更感兴趣。他80%的时间在呆呆地盯着电脑,15%的时间在抱怨不合理的期限,4%的时间在琢磨份外事,1%的时间在写代码。当你拿到他的最终成品时,总会看到这样的话,“要是时间多的话,这个地方我可以做得更好。”
 
你是哪一种?
个人而言,我自认为是完美主义者。所以,你是哪种类型呢?或者是哪几种的混合型呢?还是你觉得还有上面没有讲到的类型?请在评论留言。
编注:看完此文后,推荐再看看 Jeff Atwood 的《程序员的8种级别》一文。
 
原文: Steven Benner   编译:伯乐在线 – 黄利民
译文链接:

下面是 Brain Knapp 的回答分享︰
我认为你的看法错了。你觉得你需要上课,让别人来教你,告诉你答案。从根本上讲,自学的程序员能够做不一样的事情。
自学的程序员和自学的吉他手有很多共同点。我不知道你是否玩过吉他,所以我将向你解释如何自学吉他。
首先,这一切的开始是由于某人与某个吉他手产生了共鸣。大多数突然想要自学吉他的人,是想要成为另一个吉他手。之后,他们下定决心——“我也可以成为一个吉他手 ”,于是去了当地的乐器店,买了一把二手吉他(因为二手吉他更便宜,但也很酷)。
接下来可能会有两种情况,要不买一本“吉他入门”或类似的书籍开始自学,要不打开 YouTube,开始学习如何弹奏自己喜爱的歌。那些尝试学习弹奏喜欢的歌的自学者,往往学得更好。
当年轻的吉他手主动地学习某首歌时,他们往往需要观看视频、打印曲谱、练习和弦等等。然后,根据拿到的视频和曲谱,他们会坐下来尝试重新演绎歌曲。
经过数小时的练习,不断重复和弦、独奏、节拍等,他们将能够以自己的形式表演那首歌。它不再是原来那首歌,但也够酷。
然后,他们会拿起另一首歌,重复这个过程。一路走来,他们不断学习节拍、技术以及其他的东西,甚至都没有意识到学习的内容。在知道专业名词和理论前,他们已经懂得如何操作。
最终,弹吉他变成了一种“直觉”,学习一首新歌也变得习以为常且不再痛苦。吉他的“语言”变得像你我说话那样容易。
这一切的发生,背后是数千小时的艰苦练习。即使每天只练习一小时,也需要耗费数年。
那么,这和自学的程序员有什么关系呢?
事实上,真正成就自学的程序员的,就是他们会自己创建东西,很多东西。要成为一个具有卓越技能的出色程序员,你必须创建东西,写代码。
上课学习理论知识固然是好的,但很多教授不能跳出条条框框的束缚,以自己的方式编程。就算他们努力尝试,也做不出别人愿意用的应用程序。
这并不是说他们不了解教授的知识,而是说,作为一名教授,他们掌握的技能是研究和理论性理解,而不是写代码和为客户提供价值。
你看到区别了吗?
我合作过的最好的程序员,他们的工作方式就是做东西,做很多东西,并且几乎一直这样。
例如,现在几乎每个人都使用 WordPress。在 WordPress 出现很久之前,我就用 PHP 和 MySQL 创建了 3 到 5 个不同的内容管理系统。我写过游戏、移动应用程序、框架,还有 SAAS 应用程序。
没人付钱让我做这些事情。我做这些事纯粹是出于好玩、学习或好奇的目的。
我已经好几年都没有上过课了,即使上了,我也不觉得这会对我的事业有任何帮助。然而,如果我决定坐下来,从头开始创建我自己的计算机语言或操作系统,我打赌我一定能在过程中学到很多有趣的东西。
是的,我可以带着那些想法上课,但在创建东西,犯下错误,以及真正“体会到”这一切的经历中,相比读一本书或听一次讲座,我能收获更多。
因此,我给你的建议(如果你做到了,相比没有做的那些人而言,会带给你巨大的优势),就是:
解决一个你想解决的问题。创建一个用于某件事的软件,解决一些你本人或他人想要通过软件解决的问题。每天为这个软件写代码,晚上写,周末也写,每天都写。即使你每天只花了 15 分钟写代码,也没关系。
最终,你将得到一个能用的软件,这很不错。
然后,你再重复这一过程。做一个其他的东西。不断地做。花费大量的时间,通过创建更多的东西来提升你的技能。
做东西的同时,注意在你的网站上保存工作,并将其放在一个作品集中。每次你结束了一个项目,就将它上传到 Hacker News、Reddit 或其他什么网站,并发条关于它的博文。
你现在仅仅 17 岁,当你 20 岁的时候,你已经轻松地将两千多小时用于锻炼技能,你的个人作品集中也有了大概十到二十多个软件,你学习到的经验是那些仅仅上课的人无法比拟的。
更重要的是,你已经清楚地告诉别人,你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点。
一旦你找到了工作,请继续在业余时间创建东西,并提升你的工作技能。你的提升速度将比你的同事更快,因为他们在下班回家后看电视,而不是学习、成长或创建东西。他们拿到了薪水就回家享受去了。
你做的越多,你学的也越多;你学的越多,你的价值就越高;你的价值越高,你就越容易找到工作,你的工资也就更高,这是一个良性循环。
所以,去做些东西出来。现在就开始写代码吧!

2.Don’t worry if it doesn’t work right. If everything did, you’d be out of a job. (Mosher’s Law of Software Engineering)

转自:自学的程序员如何找到好工作? - 文章 - 伯乐在线
伯乐在线 > 首页 > 所有文章 > 开发 > 自学的程序员如何找到好工作?

不要担心它能否正常工作。如果一切正常,那么你就会失去工作。

原文:
How do self-taught developers actually get jobs?
Original question from Quora:
How do self-taught developers actually get jobs?
I’m 17 years old and I’ve been coding since I was 14. My main focus is Java and I managed to score a 5 on my AP Computer Science course. I’m pretty well-versed in Java (e.g. Syntax, major classes,, GUI/JFrame, etc.) and I’m decent with HTML5 and CSS3. I feel like I lack a lot of the skills I need to actually be able to market myself (e.g. How databases work and which ones I should use) and I’m curious as to how others learn these things. I do plan to go to college for a degree in Software Development but it’s beginning to get frustrating feeling like I have to go to college in order to be employable. Are there courses I’m not taking that I should be or things I’m not doing?
My Answer:
I believe you are looking at it wrong. You believe you need to take courses for someone else to tell and teach you the answer. Fundamentally, self-taught programmers do something different.
A self taught programmer has a lot in common with a self taught guitar player. I don’t know if you’ve ever played guitar, so I’ll explain how a self-taught guitar player might learn guitar.
First, it starts with someone who sees someone who they identify with playing the guitar. Most people who play guitar at some point want to be like someone else who plays guitar. After that, they decide “I can be a guitar player too!” and they go to their local music shop and buy a used guitar (because they are cheaper, but still cool).
Next, one of two things will happen, either the person will pick up a “teach yourself guitar” book in some form, OR, they will go to YouTube and start learning how to play their favorite songs. The ones who try and learn their favorite songs tend to do better.
Now, when a young guitar player is motivated to learn a particular song, they will watch videos, print out tab sheets, the chords, and so on and they will sit and try and recreate the song themselves based on the videos and tabs available to them.
After hours of practice, going over the chords, solos, picking patters, and so on, they’ll be able to play their own version of that song. It won’t be quite the same, but it will be close enough for rock n roll.
Then, they’ll pick up another song they like and another song they like. Along the way, they will learn patterns, techniques, and so on without even realizing what they are. They will just figure out how to do them without learning the names and theories.
Eventually, playing guitar will just “feel right” and picking up a new song will be common and painless. The “language” of guitar will be something they speak like you and I speak words.
This all happens after thousands of hours of accumulated practice. Even at hours of practice a day, it takes years.
So, what does this have to do with self taught programmers?
Well, the thing that really makes a self taught programmer is that they build things. Lots of things. To become a great programmer with very marketable skills, you have to build things and write code.
Taking classes and learning the theory is great, but a lot of professors couldn’t code their way out of a cardboard box. They couldn’t build you a useful application that anyone would want to use if they tried.
It’s not that they don’t know their stuff, but rather that the skill of being a professor is research and theoretical understanding, not building code and delivering value to a client.
Do you see the difference?
The way that the best programmers I’ve ever worked with got good is they built things. Lots of things. Pretty much all the time.
For example, nowadays everybody and their brother uses WordPress. Long before WordPress, I built for myself something like 3 or 5 different content management systems in PHP and MySQL. I’ve built games. I’ve built mobile apps. I’ve built frameworks. I’ve built SAAS apps.
Nobody paid me to do any of those things. I did them for fun or learning or curiosity.
I haven’t taken a class in years and I don’t think they would really move the needle on my career much if I did. Yet, if I sat down and decided to build my own computer language or operating system from scratch, I bet I’d learn a lot of interesting things along the way.
Yes, I could take a class on those ideas, but I’d learn more from building something, making mistakes, and really “feeling” the experience of it all, than I would from reading a book or listening to a lecture.
So, this advice I will give you that will give you a huge advantage over everyone else who mostly doesn’t do this…
Solve a problem that you want to solve. Build some software that does a cool thing you want software to do or someone else wants software to do. Write code for that every single day. Nights, weekends, every day. Even if you only spend 15 minutes, fine.
Eventually, you’ll have something that works and is pretty decent.
Then, you do that again. Build something else. Keep building and building and building and building. Invest the thousands of hours into your skill by challenging yourself to build more things.
As you are building, save your work and put together a little portfolio on your website. Each time you finish a project submit to Hacker News or Reddit or whatever. Blog about it.
You are 17… By the time you are 20 you could easily put 2,000+ hours into developing your skill, have like 10-20 things in your portfolio, and you’ll have learned many lessons that those who just take classes will never learn.
More importantly, you’ll be able to clearly demonstrate that you can write code, solve problems, and ship something to the world. That is valuable. That is the kind of thing companies are looking for.
Once you land a job, keep building in your spare time and promoting your work. You’ll rise faster than your peers because they go home and watch TV and aren’t learning or growing or building ANYTHING. They get the paycheck and go home.
The more you build, the more you learn. The more you learn the more valuable you are. The more valuable you are, the easier it is to get a job, the more you get paid, and so on.
So, go out there and build something. Write the code!
-Brian
P.S. I unpack more ideas in Creative Genius.

3.The trouble with programmers is that you can never tell what a programmer is doing until it’s too late. (Seymour Cray)

Jul 7, 2016
in Quora

程序员的烦恼是,你永远无法知道一个程序员在做什么,直到为时已晚。

4.Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris. (Larry Wall)

程序员的美德:懒惰,没有耐心以及老子天下第一。

5.Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. (Martin Golding)

写代码的时候总是想象维护你代码的家伙是一个知道你住在哪里的暴力精神病患者。

6.One man’s crappy software is another man’s full time job. (Jessica Gaston)

一个人写的烂软件将会给另一个人带来一份全职工作。

7.If builders built buildings the way programmers wrote programs, then the first woodpecker that came along wound destroy civilization. (Gerald Weinberg)

如果建筑工人用程序员写程序的方式建造建筑物,那么来的第一只啄木鸟就将摧毁文明。

8.The most likely way for the world to be destroyed, most experts agree, is by accident. That’s where we come in; we’re computer professionals. We cause accidents. (Nathaniel Borenstein)

大多数专家认为,世界被破坏的最有可能的方式是,是因为偶然。那就是我们所要进入的领域:我们是计算机专家。我们制造偶然。

9.It’s a curious thing about our industry: not only do we not learn from our mistakes, we also don’t learn from our successes. (Keith Braithwaite)

这是我们这个行业的一件咄咄怪事:我们不仅不从错误中学习,我们也不从成功中学习。

10.Once a new technology starts rolling, if you’re not part of the steamroller, you’re part of the road. (Stewart Brand)

一旦一种新技术开始滚动碾压道路,如果你不能成为压路机的一部分,那么你就只能成为道路的一部分。

  1. If at first you don’t succeed, call it version 1.0

如果第一次你没有成功,那么称之为1.0版,继续加油。

12.All programmers are playwrights and all computers are lousy actors. (Anonymous Hack Actor)

所有的程序员都剧作家,而所有计算机都是糟糕的演员。

13.The sooner you get behind in your work, the more time you have to catch up. (Anonymous Scheduler)

工作拉下得越早,赶上去所需要的时间越多。

14.When a programming language is created that allows programmers to program in simple English, it will be discovered that programmers cannot speak English. (Anonymous Linguist)

当创建一种编程语言允许程序员使用简单英语编程的时候,那么新问题又来了,你会发现程序员不说英语。

15.Why do we never have time to do it right, but always have time to do it over? (Anonymous)

为什么我们总是没有时间把事情做对,却有时间做完它?

16.Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

傻瓜写计算机能理解的代码。优秀的程序员写人类能读懂的代码。

17.Any code of your own that you haven’t looked at for six or more months might as well have been written by someone else. (Eagleson’s law)

自己的代码六个月或更久不见,还不如别人写的代码。

欢迎关注我的公众号DoNet技术分享平台

阅读原文

上一篇:没有了
下一篇:没有了

更多新闻推荐

Copyright © 2015-2019 http://www.77zhth.net. 美高梅官方网站66159有限公司 版权所有