首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有经验丰富的开发人员的情况下,如何在实际项目中提高我的技能?

在没有经验丰富的开发人员的情况下,如何在实际项目中提高我的技能?
EN

Software Engineering用户
提问于 2012-10-31 17:23:47
回答 5查看 2.1K关注 0票数 15

我是一家小公司的首席开发人员,与C#和ASP.Net合作。我们的团队规模很小,2-3人,没有太多的开发和设计经验.我没有机会向更高级的开发人员学习,我的团队中没有人来指导我,帮助我选择最好的方法,因为我自己负责大部分的项目。

在缺乏经验丰富的开发人员的情况下,如何在实际项目中提高软件开发技能?

EN

回答 5

Software Engineering用户

回答已采纳

发布于 2012-10-31 18:13:22

除了更有经验的同事之外,还有很多资源可供学习:书籍、熟练开发人员的博客、Stack Exchange、讲座/会议等。代码评审也是至关重要的,CodeReview.SE是一种宝贵的资源。

让我们看看它如何在一个例子中工作。

示例

你正在读一篇博文,其中提到了一个术语"ETL“。您不知道它的含义,但从本文中您模糊地了解到,它是一种将数据从某种数据支持转移到另一种数据支持的过程或工作流。

你去维基百科和其他资源,获得一个更精确的愿景。现在还不清楚什么时候使用ETL是有用的。毕竟,编写将完成所有工作的SQL查询似乎要容易得多,而不是花费太多的时间构建真正的ETL。

要回答这些问题,你可以从本地图书馆借一本关于ETL的书。它解释了使用一个简单的SQL查询,一些提取转换加载过程并不容易完成:不仅提取阶段可以处理多个不同的数据支持,不仅是一个关系数据库,而且转换步骤对于验证/规范化数据和映射数据来说也是非常复杂的。

您现在对什么是ETL,如何使用ETL,特别是当您需要ETL时,以及当它不是合适的工具时,有了一个清晰的愿景。同时,您已经将一个小ETL作为一个个人项目来实现。这个项目可以让你发现一些对你来说不够清晰,并且没有被一本书涵盖的观点。这些要点相当抽象,与源代码无关,因此您在Programmers.SE上发布了一个问题。

当你有机会在你的公司建立一个,你就开始创建它。你有一些问题。有些与代码相关;您可以在堆栈溢出上发布问题。其他问题与数据库有关;您可以在DBA.SE上提出问题。

最后,有一个由高技能的开发人员完成的关于如何优化ETL的会议。您参加这个会议,它将为您提供宝贵的提示,说明您可以为您的项目做哪些增强。

您还会开始关注一个开发人员的博客,他多年来一直在开发不同的ETL。看到不同的方法很有趣,通过这个博客,您了解了ECCD;您很感兴趣,所以您借用了拉尔夫·金博尔的数据仓库ETL工具包,这本书详细讨论了“提取、清洁、符合和交付”过程。同一篇博客还提到了很多没有编程技巧的应用程序来创建ETL。这对于你为公司所做的ETL特别有用,因为你的老板,非技术人员,经常要求你对你所做的事情做一些小小的改变。

发现事物

IMHO,当你没有导师或更有经验的同事的时候,最困难的部分是去发现事情,我的意思是从“我从未听说过这件事”到“我听说过但不太清楚它是什么”。

如果有人回顾我的代码,并说我真的应该开始使用一些样式约定,我可以好奇地发现,在编程中,有不同的风格编写代码,对于给定的语言和代码库,应该坚持一种样式,而且许多语言都有工具来执行样式(比如StyleCop for C#)。

如果没有人告诉我这种风格,我怎么知道有这样的东西存在呢?

这是博客或Stack等资源方便的地方。维基百科帮不上什么忙(除非你花了几天的时间随机浏览编程页面),而且书籍很少谈论这些东西。

同样的情况也适用于模式和实践,或者与代码不太相关的事情。例如,我很难想象一些开发人员在早上醒来时对自己说,他必须了解ITIL,而他以前从来不关心ITIL。

一旦你发现了一个新的术语,了解它是相当容易的。如果您给出了一个新的术语“代码契约”,并且您是一个C#开发人员,那么您可以轻松地在MSDN上找到足够的信息(或者更好地说,在Jon的书中)。

好奇帮助

当我和实习生一起工作时,我总是注意到最好的是那些在课堂之外好奇的人。他们可能知道有一种叫做函数式编程的东西,即使他们的老师都没有提到它,虽然他们可能不知道任何函数式语言,但他们仍然能够解释什么是FP,它与其他范式有何不同。他们可能知道敏捷,或Unicode,或部分信任/沙箱模型,仅仅是因为他们正在阅读博客和使用Stack Exchange,而不是简单地参加他们的讲座。

即使他们没有导师,他们仍然能学到大学里没有的东西。

票数 12
EN

Software Engineering用户

发布于 2012-10-31 19:06:55

这里的答案可能会有很大帮助,但我想强调一点:与比你更好的人一起工作(对于专断的,个人的,更好的定义),每天工作8小时,每周5天。那么多是肯定的。

如果你是那种总是想变得更好,总是想学习的开发人员,那么你最终将不得不去一家不同的公司。这是不可避免的,应该有计划。

当你找到适合你的公司时,你会发现你可以继续在它里面成长,而不是从它里面成长出来。

票数 3
EN

Software Engineering用户

发布于 2012-10-31 19:20:03

在我提出任何建议之前,我不得不说,一年多前我的处境非常相似。

如果你正在完成项目,但你觉得还有很多地方需要改进,那是件好事。

有一次,我没有完成这个项目的技术能力和信心。经常我会买一本书,我会读一个相当技术性的博客,发现自己“超出了我的深度”。我认为对我来说最大的问题是我没有接触过任何大型企业应用程序。很多时候我会做的很好,但是我不会让身边的人来验证我所做的事情。

这是令人沮丧和挑战,所以我知道你从哪里来。我是如何处理这个问题的?我离开了一家公司,加入了一家成熟的软件开发公司,这在过去的一年里帮助我获得了很多经验。

除非你想离开公司,否则我建议由我们这个行业的先驱们写的书。我会从安德鲁·亨特的务实程序员开始。这本书包含了大量有用的类比,它们很容易被记住。这本书的前几章鼓励我学习一种与我们在工作中使用的非常不同的编程语言。我已经开始阅读非技术文献--我现在相信阅读小说和科幻小说会使我成为一个更好的程序员。写文章离写干净的代码不远。有些作家是好的,有些是坏的。这本书使我关心我写的东西。其中一个类比被称为“破窗”。你丢下一辆被遗弃在街上好几天的车,结果什么事都没有发生。一旦你打破了一个单一的窗户,汽车可能会在第二天被摧毁。代码也没什么不同。如果您看到错误或编写不良的代码,那么立即修复它,不要只把它留在那里,因为它迟早会“困扰”您。一旦你开始用自己的方式读这本书,你会发现许多类似的类比,它们会让你以不同的方式思考代码。

然后我建议你继续使用罗伯特·C·马丁(RobertC.Martin)的“清洁守则”。这本书更实用,因为它迫使你读坏和好(干净)代码。作者使用了一个开源项目的代码示例。你说没有人可以指引你。有一个很好的机会来查看其他人的代码,将其与您自己的代码进行比较,看看如何改进它。对我来说,读这本书就像在跟踪一个正在做项目的人。这本书还强调了最简单的最难的事情--分离关注点。作者询问了我们这个行业的先驱,他们认为什么是“干净”的代码。一旦你阅读了他们的答案,你就可以将它们与你自己对干净代码的看法进行比较。

最后,您考虑过在开源项目上工作吗?您将与其他可能更有经验的开发人员协作,这些开发人员将能够检查您的代码并指出正确的方向。

正如我在最初的回答中说过的那样,这种情况不会在晚上发生。我已经做了好几年了,几乎每天我都发现自己做错了。

祝好运!

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/173077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档