高中程序员引起工作注意的最佳地方是什么?[关闭]


52

我是16岁的高中生,对计算机编程充满热情。我在11年级,并且已经作为学校教学大纲的一部分学习了大约8个月。我已经超越了学校所教的内容,并且编写了一些(相当不错的)申请。我在Windows平台上编程的语言是C ++。最终,我想在一所好的大学主修CS,然后成为一名程序员。

我的具体问题是:

  • 什么是让我的工作受到关注的好地方?
  • 是否有专门针对年轻程序员的期刊或出版物?
  • 如果不是出版物,那么是否有任何好的博客,或者开始自己的博客更好?
  • 还有什么可以帮助我成为程序员的?

我试图做到尽可能客观。

如果这一切都是这样;那么:作为年轻程序员而受到关注的最佳方法是什么?

编辑:我不希望直接从高中毕业就被雇用。目的不是要给社区留下深刻的印象,使他们成为一名专业的程序员。这是针对大学申请的,目的是让他人看到和批评您的工作将改善您的申请。我不希望从到目前为止的著作中赚钱。


12
是什么让您认为其他人想知道一个16岁的未婚夫;-)?
Doc Brown

27
堆栈溢出是一个好地方!提供一些有益的,有用的答案(并提出一些有益的,有用的问题!),然后将您的潜在雇主指向您的个人资料。
科迪·格雷

24
我赞扬@viraj,感谢您的热情和良好的回答。但是我对您的建议是不要让它消耗您的早年生活。承担其他爱好和兴趣,社交并获得乐趣,您一生只能是个小孩子,在这里您可以将事情搞砸并不受伤害地反弹。一旦长大并有事业,您很可能会在余生中拥有事业。在这样的年龄,这是一个非常认真的承诺。您不想成为这么多的人,他们在年轻时就迷恋职业,然后又讨厌他们的生活,并经历了可怕的中年危机。
maple_shaft

4
@FrustratedWithFormsDesigner如果你想进入顶部学校没有顶部的钱,然后就更难拿到。
maple_shaft

10
@maple_shaft您的观点很好,但是如果他真的对编程充满热情,那么您就不想让他远离它-想象一下告诉年轻的比尔·盖茨/马克·扎克伯格“不要花太多的时间在编程上,度过余生”。建议应该着重于您的兴趣和爱好,而不是您的职业
柯克·布罗德赫斯特

Answers:


61

我想给您一些警告和建议。

警告:

  • 不要高估您的知识:现在,我可以假设您足够了解编写一个简单的应用程序的知识,而不是课堂上实际讲授的内容。但这并不能使您成为“专业程序员”。它最多可以使您成为“自由职业者”。

  • 不要低估在学校教的东西的价值。即使您觉得有些明显的东西,也应该研究一下:在继续过程中,您会看到“新方面”(我将在以后更加清楚)。

意见建议:

  • 专业应用程序的典型生命周期为3-5年,需要数千(多达数百万)小时的工时。它们不能由开发人员单独部署。专业程序员必须与他人合作。这不仅是对工具(如语言,IDE等)的良好了解,而且还涉及技术,方法和习语。

  • 虽然可以通过正式的样本和练习来教授工具,但是只能“描述”技术和习语。要“学习”他们,您必须体验并与他人分享经验。它们是不断发明和改进的。

  • 公司在从学校招聘时,会检查您对工具的了解和基本技术的能力,但是-最重要的是-测试您在快速学习新事物和“捕获工作”时的能力。

  • 当雇用有经验的人时,他们会看他们做了多少事情,以及从这些事情中学到了什么经验。

道德:

  • 如果您想被更多的“评估”,可以通过参与其他人的问题(例如stackoverflow)或开放项目(例如sourceforge)来学习与他人合作

  • 另外,不要太快地要钱。将您的“代码生产”划分为“可共享的东西”和“可出售的东西”。您可以共享的内容可以供他人使用,但也可以吸引他人的参与以扩展初始项目。您可以销售的产品使您的应用相对于其他类似项目而言是“独特的”,从而使其成为真正的商业产品。
    要与他人共享代码,可以参考site codeprojectsourceforge。他们的评分还可以使您了解您对其他人有多有趣。


30
+1表示高估了您的知识。上高中时,我在写一些很酷的东西,并认为自己是一个不错的程序员。然后我开始上大学,意识到自己甚至还没有达到专业水平。
Mike L.

1
尽管OTOH +1,但我认识的人(不是个人)在高中期间写的东西我仍然不知道
BlueRaja-Danny Pflughoeft

+1,当我第一次上大学时,我认为获得我已经掌握的技能的认证就不那么容易了。尽管在某些方面我比其他学生要领先得多,但我仍然离专业水平还差得远。
user606723 2011年

4
+1会高估您的知识。我无法告诉您一周我得到多少简历,说明他们在列出的每种技能上都是“专家”。这样做只会显示您的天真。
Jesse Bunch,

6
有趣的是,我知道有一些人在计算机科学领域中以3-5年的专业水平编写代码,他们无法用纸箱编程自己……只是说一个有动力去实际学习良好做法的人就是通常要比许多专业人士领先。
马克斯

35

您是否考虑过为自己编写的应用程序创建开源项目并在线托管它们?SourceForge.netGitHub.com是很好的开源项目宿主。这将帮助您了解应用程序。


11
这些站点上的反馈也可能是直接的,残酷的,或者您的项目可能会被忽略。重要的是要获得反馈并进行改进。确保将社区视为可以为您提供帮助的东西。
jefflunt 2011年

26

首先,让我们明确一点:16位YO程序员中的大多数不会真正给社区留下深刻的印象。

我认为这是有原因的。成为一名优秀的程序员不仅依赖于编程技能。当您在CS大时希望看到的,编程只是一个子集计算机科学,和大多数人得奖的(学术奖至少)会这样做是因为他们证明了一些新的东西(例如一个新的定理),或发现一种完成某种任务(设计模式)的新方法。为此,您(至少)需要:

  • 要获得良好的数学背景,需要了解算法并因此掌握不同的数据结构。
  • 理解好的程序员在对“具体”语言感兴趣之前,首先要理解范例(面向对象,功能等)。
  • 了解良好的编程通常也可以用于代码建模,并了解现有的设计模式。

如果您认为自己已经掌握了所有这些知识,那么可以,您可能会给社区留下深刻的印象。

您总是可以尝试为一个开源项目做出贡献,但是您可能还很惊讶,在实际能够做出贡献之前,您必须追赶多少。

最后,浏览一下StackOverflow,看看您能用自己喜欢的语言回答多少……您将获得一个不错的代理水平。


2
+1:经验无可替代。当我招聘员工时,我通常希望看到有人在尝试下反复尝试许多错误。
JohnFx 2011年

3
+1:与我合作的许多程序员似乎认为数学对他们并不重要。然后,他们将转过头,同时讨论算法效率。
kojiro 2011年

+1:数学是计算机科学中最基本的元素之一。没有数学就不可能存在计算机科学这一领域。没有数学运算就无法将一组字节转换为另一组字节。另外,如果您不了解计算机的工作原理,或者不了解如何将两个字节寄存器加在一起(这不是一个简单的过程),那么在此字段中很难做到这一点,那么您将永远不会理解计算机科学。编程本身需要解决问题的能力,学习编程语言,而下划线框架是计算机科学中比较容易的部分。
拉姆猎犬,2011年

1
成为计算机科学领域的专业人员最难的部分是能够确定解决问题的最佳方法。学习一种新的编程语言是容易的部分,学习如何利用给定语言的优势并避免其弱点要困难得多,能够做到这一点就能将“代码猴子”与“专业人士”区分开。
拉姆猎犬,2011年

13

尝试在Stack Overflow上获得很高的声誉。这里讨论了几乎相同的主题:

在Stack Overflow中享有很高的声誉会有助于找到一份好工作吗?


5
此外,在SO上获得较高的代表非常有趣,而且您在阅读,发布和回答问题的过程中会学到很多东西。
Paul Hiemstra 2011年

1
我认为,在SO上享有很高的声誉意味着“我在网站上花费了大量时间来回答每个程序员都可以涉及的无数基本问题”。我不会考虑太多。(注意:您仍然可以是专家并且在SO上享有很高的声誉)
siamii 2011年

8

您可能想尝试的几件事:

  • 编写解决实际问题的软件,理想情况下是以前从未解决过的问题(或者至少没有令人满意地解决过)。如果尽最大努力进行推广,如果没有人使用您的软件,那么他们很可能根本不需要它。
  • 在相关的邮件列表,IRC频道和互联网论坛上宣布您的工作。如果您的程序大量使用某些图书馆,请考虑发布到图书馆社区;如果它是对其他现有软件的补充,请向其社区宣告,等等。
  • 如果这是一个足够认真的项目,请为此建立一个专用网站。该网站应提供功能摘要,下载和文档的链接,以及(如果适用)一些屏幕截图。确保它是一个正确的网站,而不是一些充满广告的cheapo geocities风格的可恶的网站-您需要认真对待,因此请采取行动。添加新闻栏目,Wiki和/或错误跟踪器可以向潜在用户指示该项目的活跃程度,这可能对您有用或不利于您(如果项目毕竟不是很活跃)。
  • 如果它是一个开源项目,则将其托管在一个流行的FOSS集线器中(如果需要,可以在github,bitbucket,sourceforge上),并且(请参见上文)公开Wiki和Bug跟踪器(但前提是您必须定期使用它们)。
  • 无论您做什么,都要提供良好的文档。您需要简短的“入门”和完整的参考。如果您没有第一个程序,人们会发现您的程序很难使用。如果您没有第二个,则人们将无法使用它,因为他们找不到所需的信息。

7

我将按照Bernard的回答进行补充。那里有太多的OSS项目,除非您创建一个受欢迎的项目,否则仍然很难引起人们的注意,这对于刚开始的程序员来说并不容易。

假设您正试图在编程社区中引起人们的注意,我建议为程序员使用的工具发布(OSS或封闭源代码)附件。想象一下要接受面试,并且可以说该公司已经在使用您编写的软件。许多开发人员工具都具有用于创建加载项的API,甚至还有一些托管“ App Store”的站点,您可以在其中获得一些工具的使用机会,而不必太担心它的营销。

这是我脑中浮现的一些例子:

根据您选择的工具,您可以定位要引起关注的编程社区的特定领域。


4
  1. 参加像“ 想象杯”这样的比赛,或者至少参加您学校的比赛(如果有的话)
  2. 将您的应用程序联机,也许提供源代码,尽管与您的问题无关,但请听取他人的反馈并从中学习
  3. 尝试为不同的社区做出贡献

4

我的观点略有不同。

如果要引起您的软件注意,最好的方法是让人们使用它。尽管比尔·盖茨和马克·扎克伯格是伟大的年轻程序员,但还是有很多更好的程序员。但是,这两位先生让很多人使用他们的产品,因此以他们的工作而闻名。

为了使人们使用您的代码,您可以:

  • 将您的产品卖给很多人。例如,在应用商店中放置一个移动应用,并跟踪下载,购买和持续使用情况。
  • 吸引很多人使用您的产品并赚取广告收入。
  • 吸引许多开发人员来开发与您的产品兼容的产品。这很难。
  • 为一个受欢迎的开源项目做出贡献,以便您的贡献将被很多人使用。

我认为,软件几乎不相关,而不会给用户带来好处。您会因解决人们关心的问题而受到关注,这是一项非常罕见的技能。


3

我尚未阅读的一个答案:Google Summer of Code。

网站

Google Summer of Code是一个全球计划,可为学生开发人员提供助学金,以为各种开源软件项目编写代码。[...]通过Google Summer of Code,被录取的学生申请人与参与项目的一位或多位导师配对,从而可以接触到现实世界中的软件开发方案。

您必须年满18岁才能参加,但这并不遥不可及。我知道有些人参加了,并且经验丰富。因为您所有的贡献都是对开源程序的贡献,所以它们是公开的,因此会受到关注。

由于您未满18岁,因此Google还为大学预科学生(13-17岁)提供了类似于GSOC的计划,称为Google Code IN


3

从我的角度来看,编程的人很多。

  1. “程序员”-包括16岁的自学成才和中国99%的可用“软件开发人员”劳动力。他们可以在某种程度上完成工作……但是,对概念的想法很少,例如设计模式,可维护性,健壮/防御性编码,算法/数据结构以及其他需要有效使用源代码的事物控制软件。他们具有有效阅读文档并使用大多数API的能力。
  2. “普通电气工程师”-80%的电气,10%的计算机科学,10%的软件工程师。精通电子技术,但几乎与典型的“编程器”一样多。电气方面的逻辑和批判性思维以及管理技能将有所帮助。
  3. “平均计算机科学BS毕业生”-25%的程序员,25%的软件工程师,25%的计算机科学家,25%的应用电子产品(包括逻辑)。
  4. “平均计算机工程师”-这些人是50%的电气工程师,50%的计算机科学专业的毕业生的混合体。

定义:

  1. “计算机科学”-迪克斯特拉曾经说过:“计算机科学与计算机无关,与天文学有关的望远镜无关。” 计算机科学更多的是数学而不是计算机。这包括开发,理解和分类复杂算法和数据结构的能力。
  2. “软件工程”-设计模式,代表程序的图表(我不记得这些被称为什么)。像那样的东西。防御性编码..源代码控制使用,

注意,我在上面使用了“平均”一词。根据个人兴趣和工作经验,这些百分比可能会发生巨大变化。这些只是过于笼统的刻板印象。不要凭封面判断一本书。我也只是从我的经验学士学位。


1
您不同类型的程序员完全是胡说八道。没有软件工程师,您就无法成为有效的程序员。计算机科学家一直在使用软件工程。您与“电气工程师”的分离完全是胡说八道,计算机工程师和计算机科学家之间几乎没有什么区别。
拉姆猎犬,2011年

我确实写得有点奇怪。我通过重构对其进行了修复。但这仍然不是完全正确的。回答:a)重点是,我列表中的“程序员”根本不是有效的程序员。b)计算机科学与软件开发无关,因此它们不使用软件工程。c)计算机工程是计算机科学与电气工程之间的混合领域。en.wikipedia.org/wiki/Computer_engineering
user606723 2011年

1

我是一名自由程序员。自9年前高中毕业以来,编程一直是我的主要收入。我仍然打算获得学位,但目前时间仍然不适合我。

我的自我驱动识别方法如下。我并不是说这些步骤将使您得到编程社区的认可,但是当需要面试时,这将有助于提高您的信誉。

即使当时我很精通IMO编程,但我还是回到了基础知识上并通过教程学习,并根据这些灵感启发的作品来建立自己的作品集。我也开始强迫自己以JavaDoc风格的方式注释我的代码。该产品组合可能暂时不会充满浮华和魅力,但它为您提供了一个基准,您可以以此为基础并最终替换其中的内容。然后,我有一组演示和代码示例向潜在客户展示。这对于获得第一份工作至关重要。没有人愿意雇用没有任何经验的人,但是,有很多人会给那些没有专业经验的有前途的程序员一个机会。

后来我分析了这些程序,并开始根据我的常用任务编写库。有了新的库,我开始查看Internet上的CompSci问题,并开始计时自己用库构建解决方案所花费的时间。这将为我将来确定特定任务应收取的费用提供基准。

直到那时我才发现开源。我以感兴趣的语言浏览了sourceforge上的项目,并找到了可以使用的应用程序。我安装了这些应用程序,并开始将它们用作我日常计算经验的一部分。就我日常的互动而言,我能够看到这些应用程序的优缺点,因此我开始扩展它们以满足自己的需求。我会将补丁提交给正在开发的社区,以供审核,然后我将申请成为该项目的成员。在这里,我学会了使用团队中使用的各种工具,这些工具吸收了我当时认为的“丰富经验”,并将其带入了一个新的高度。

当我个人工作时,我适应了自己从事开源项目工作的所有做法,并实施了可行的解决方案。我开始认真地从事自由职业者的职业生涯,并加入了许多自由职业者招聘网站。我查看了热门职位,然后开始申请。对于我会拒绝的每一项工作,我仍然会自己完成它,就好像我已经获得了扩展知识的工作一样。这将有助于建立我的投资组合,并向我介绍一些现实世界中的挑战。当我最后一次接受采访时,我很直率,告诉他们我没有任何专业经验。然后,我开始告诉他们我曾经从事的开源项目,以及我在那完成的工作。我遇到的一些主要障碍以及如何解决它们。


0
  1. 尽可能多地学习。这可以通过书籍,论坛,课程来完成,但最重要的是可以通过实际编程(并受到批评)来完成。如果您在高中阶段的编程班已经不多了,请查看当地(社区)大学是否有您可以参加的任何优秀的CS班(可能是夏季或夜间班);或尝试使用MIT / Stanford类型的开放课程软件。
  2. 展示主动性。说您知道C ++将被完全忽略。说您对开源项目列表进行了数十次提交,这表明您了解某些内容(尽管要小心;不要仅仅为了提交而进行提交)。启动您自己的开源项目。这不会是您下午要做的事情;但是会在几个月后变成宝宝的东西。编写并发布一个做有用的事情并使人们下载的android / iphone应用。

PS:自从我申请大学以来已经很长时间了-他们仍然为您提供列出类似内容的机会,对吗?(例如,有关爱好的部分,或有关您的兴趣的作文问题)。


0

我认为JohnFX对这个问题给出了很好的答案。

一些想法:

  • 我认为jQueryUI可能是最好的起点。它既有趣又直观。因此,您可以进入jQuery网站上的jQueryUI开发人员论坛,并要求成为一名贡献者。

  • 我认为您将展示出对编程的热情和奉献精神,而不是展示出出色的技能。但是不要让那阻止你!我强烈鼓励您参与其中。

  • 此时,您可能需要进行质量检查。质量检查很无聊,但您可以接受并表现出奉献精神。但是从那里您可以贡献一些代码,甚至可以制作插件。

  • 如果您要求参与某件事并且使他们感到困难,那是因为它们是混蛋。只是寻找一个让人感到鼓舞和友善的项目。

  • 当您找到一个由令人鼓舞的好人组成的项目并做出了贡献后,您可以请一位成人贡献者或一位负责项目的人给您写一封简短的推荐信。


0

我谨不同意那些回答“不要高估自己”的人!

如果您喜欢在您的年龄编程,那么继续努力吧,您可能比同龄的其他孩子都伟大,甚至更伟大,并且当您是资深人士时,您可能会成为下一个Brian Kernighan,Edsger Dijkstra或Doug Lea!

我建议学习IPhone或Android开发,并构建一些真实的应用程序。

擅长于某事,而您到达那里时,在会议上讲话和写文章,这会引起您的注意,并会提高您的技能。

我从70年代末开始从事编程工作,从1996年开始从事Java。我可以告诉你,我读过的最重要的Java书籍是《四个设计模式的帮派》,它是在Java发明十年之前编写的。阅读并表现出色!

今天收入最高的行业是金融业,但它正在迅速变化。我相信它会回来的,但是你永远不知道!

成为一名程序员,享受高就业和工作满意度!

祝您好运,您的事业蒸蒸日上!


0

构建一个可以在iPhone和Android上运行良好的网络应用(暂时不使用标准浏览器),并利用HTML5的扩展功能(https://developer.mozilla.org/en/HTML/HTML5)来克服延迟,网络斑点,以及手机浏览器的局限性。这最有可能意味着提供一个可连接到基于服务器的api的javascript + html5浏览器应用程序。(选择xmlrpc / json / yaml,而不是SOAP)。让它尖叫得很快。在服务器上,我建议在廉价的VPS上的Linux(debian)中使用cherrypy。您可以在123systems.com,buyvm.net(首选但通常不可用)上以不到4美元的月费获得这些产品。学习使用Python,并使用Fabric将资料部署到服务器上。以每年2.99美元的价格在namecheap.com上获得一个.info域名,并将dnsmadeasy.com用作DNS(价格更高,但值得-多年来一直在使用它们,从来没有一个问题),您可以通过DNS进行负载平衡。另外,不要被数据库推迟。使用sqlite并学习使用sql语句手动设计表。最后,使用一台计算机,您可能可以处理30,000个用户。(每3秒一击同时向服务器发送2,000)。记住要在HTML5的存储中尽可能多地缓存。

如果您这样做了,并且在博客上发表了有关博客的文章以及您的进度,那么您肯定会受到关注。虽然有很多东西要学习,但是您可以做到!


-1

什么是让我的工作受到关注的好地方?

几乎在Internet上的任何地方-如果您编写值得一提的东西,例如实用或功能独特的实用程序,都会有大量的人使用/下载-那么您已经完成了大部分任务。很酷,有用且可用的应用程序可以自我宣传。

是否有专门针对年轻程序员的期刊或出版物?

如果不是出版物,那么是否有任何好的博客,或者开始自己的博客更好?

您已经在这里-在众多社区中,这仅仅是一个分享,以了解而闻名的渴望-其他人非常乐意将优点主题与当前讨论联系起来。

还有什么可以帮助我成为程序员的?

仅出于编程目的而编写程序-只要它具有生产力,创造性和实用性-就会引起注意。

我也支持其他答复中提到的一个观点,即对开源项目的贡献。更好地进行编码的唯一方法是进行编码-以及解决当前问题的更好方法。因为,没有解决的问题,您是徒劳的编码...哦,还有一件事,不要介意脾气暴躁的老兄,他们their肿且故意劝阻“年轻的wh子鲷鱼”评论-您还年轻,热情,这就是您所需要的。


-1

如果我是您,我想让我的知识广博地投入我的工作,那么你说的是编程,c那么就开始制作适合日常用户PC体验的程序,制作类似的东西 youtube downloader并开始自己的职业dev team生涯,我才19岁,而我开始编程4年以前,让我成为一个年轻的黑人……。所以我可以理解您可能对编程的热情,但与此同时,编程可能会花费您的大量时间和精力,让自己有时间生活。意思是,所有时间坐在一台计算机上对一个小男孩来说都是很大的压力。


-1

有很多地方可以使您的工作得到认可,但是尽管您可能认为自己的工作是一流的,但对于某些人来说,这可能只是简单的一天。我16岁那年,我以为自己的工作很棒,做了一些很酷的事情,但实际上我现在在这些领域工作,与那时相比,那时的我与现在相比毫无意义,而且我还有很长的路要走离我想去的地方。


-2

如果您喜欢游戏,请尝试参加Ludum Dare。一款出色的游戏将赢得一些声誉。


-3

如果您想获得关注并赚钱,我建议您在iPhone或Android上进行移动开发。您已经知道C ++,这是一个很好的开始。对于iPhone上的本机开发,您将需要Objective C,对于Android,则需要Java。两者都类似于C ++(由于没有内存管理,因此Java更容易使用),并且学习起来不会太困难。因此,您不仅会编写使您受到关注并赚钱的应用程序,而且还将在此过程中学习新的语言和热门平台。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.