初级开发人员的缺点_初级开发人员应阅读的书籍

初级开发人员的缺点

这些书籍“基本上是作弊代码”,可帮助您提高开发人员的技能和知识。 (These books “are basically cheat codes” for leveling up your skills and knowledge as a developer.)

Whether you’re a new developer or you’re fairly experienced as a programmer, you’ll come to realize that the amount of time you’ve worked at a job isn’t the best way to determine your skill and knowledge as a programmer (I know, tell that to the recruiters ?).

无论您是新开发人员还是有相当丰富的程序员经验,您都会意识到,从事某项工作所花的时间并不是确定您作为程序员的技能和知识的最佳方法(我知道,告诉招聘人员?)。

What you do in your spare time and how you choose to take learning into your own hands is what’s going to ultimately determine your success in this industry. That’s why it’s so important for us as developers to adopt a growth mindset.

您在业余时间所做的事情以及如何选择将学习掌握在自己手中,这最终将决定您在该行业的成功。 这就是为什么对于我们(作为开发人员)采用增长思维方式如此重要的原因。

There are some excellent ways to learn and improve as a developer. Some of those ways are pair-programming, online courses, meetups, work experience, building projects and finding a mentor.

有一些学习和改进开发人员的绝妙方法。 其中一些方法是结对编程,在线课程,聚会,工作经验,建立项目和寻找导师。

One of my personal favorite ways to learn is to crack open a well-written book and try to absorb something from those who have distilled years of knowledge and insight into a permanent artifact.

我个人最喜欢的学习方法之一是打开一本写得很好的书,并尝试从那些已经积累了多年知识和洞察力的人那里吸取一些东西,这些知识和见识使他们成为永久性的艺术品。

Here are my personal recommendations that I think all developers (especially junior ones) should read at some point. These books are all highly regarded by professionals in our industry and have the potential to leave a profound impact on the quality of your work and your speed of development & learning.

这是我的个人建议,我认为所有开发人员(尤其是初级开发人员)都应在某个时候阅读。 这些书均受到本行业专业人士的高度评价,并有可能对您的工作质量以及您的发展和学习速度产生深远影响。

Some of them stray from the technical details and focus more on giving you practical rules about what it means to be a good developer on the interpersonal and professional level.

其中一些偏离了技术细节,而更多地侧重于为您提供有关在人际和专业水平上成为优秀开发人员意味着什么的实用规则。

Disclosure: Some of the links below are affiliate links. But, I’ve only added those books that I personally feel are useful for a junior dev.

披露:以下 某些链接是会员链接。 但是,我只添加了一些我个人认为对初级开发人员有用的书。

1.清洁代码 (1. Clean Code)

by Robert C. Martin (Uncle Bob)

由罗伯特·C·马丁(鲍勃叔叔)

After you overcome the basic challenges of development and get comfortable figuring out how to write code to solve problems, it’d be a good idea to take a look at this book. It turns out that making the code work the first time is actually the easy part. The hard part is making your code read well so that others are able to understand it and change it in the future.

克服了开发的基本挑战并轻松弄清楚如何编写代码来解决问题后,最好看一下这本书。 事实证明,使代码首次运行实际上是容易的部分。 困难的部分是使您的代码读得好,以便其他人能够理解它并在将来进行更改。

Remember the last time you had to read code like this?

还记得上次您必须阅读这样的代码吗?

function calculateIt (a, b) {
 if (a.delta < b.element.x) {
   var x = b.element.x;
   return x - b.delta.x
 } else {
   var y = b.next.y;
   var h = b.element.y * 2;
   return y - h
 }
}

Who knows what it really does. Code like this might work, but the moment we need to change it, we have to hope the author of the code is still in the company and pray that they are somehow able to decipher what they wrote potentially years ago.

谁知道它到底在做什么。 这样的代码可能会起作用,但是当我们需要对其进行更改时,我们必须希望代码的编写者仍在公司中,并祈祷他们能够以某种方式解密他们可能在几年前编写的内容。

When careful attention isn’t taken to write code that’s readable and maintainable, we end up with pockets of code like this that everyone is afraid to touch, and if it ever breaks, we’re in trouble.

如果没有仔细注意编写可读性和可维护性的代码,我们最终会得到像这样的成堆的代码,每个人都不敢触摸,并且一旦中断,就会给我们带来麻烦。

Uncle Bob’s “Clean Code” teaches you how to identify what clean code looks like compared to bad code, and it teaches you how to transform it into good code. A task like this sounds trivial to most, but you’d be surprised at how turning a just a few clean software design principles into habits can help you write much more professional and scalable code.

Bob叔叔的“干净代码”教您如何识别干净代码与不良代码相比,并教您如何将其转换为好的代码。 这样的任务对于大多数人来说似乎微不足道,但是您会惊讶于将一些干净的软件设计原则转变为习惯可以帮助您编写更加专业和可扩展的代码。

We’re software craftspeople, you know. Building a house is not much different than building an application in principle. We need to pay attention to the details or else it can all become very expensive to fix in the future if not done right first time.

您知道我们是软件手Craft.io者。 建造房屋与建造应用程序在原理上没有太大不同。 我们需要注意细节,否则,如果第一次做的不好,将来修复它们的成本将非常昂贵。

2.清洁编码器 (2. The Clean Coder)

by Robert C. Martin (Uncle Bob)

由罗伯特·C·马丁(鲍勃叔叔)

This book is not necessarily a technical book as it is a book for teaching you how to be a professional in this industry. Professionals are those who, when faced with challenges, uncertainty and pressure, will continue to treat creating software as a craft and will be determined to adhere to their professional values.

这本书不一定是一本技术性的书,因为它是一本教你如何成为该行业专业人士的书。 专业人士是指那些面临挑战,不确定性和压力的人,他们将继续将创建软件视为一种手Craft.io品,并决心坚守自己的专业价值观。

The Clean Coder is full of practical advice on estimation, refactoring, testing, dealing with conflict, schedules, avoiding burnout, and much more. Trusted advice from someone who has spent decades doing this stuff.

Clean Coder提供了有关估计,重构,测试,处理冲突,计划表,避免倦怠等方面的实用建议。 数十年来从事此工作的人的可靠建议。

One of the best things it teaches, is how to have integrity as a developer, when to say “No” and how to say it.

它所教的最好的事情之一是,如何以开发人员的身份保持正直,何时说“不”以及如何说出来。

A book about professionalism.

一本关于专业的书。

3.重构 (3. Refactoring)

by Martin Fowler

马丁·福勒(Martin Fowler)

Martin Fowler is one of my favorite authors. The first reason is that he’s hilarious. His approach to writing software books is unmistakably “Fowler”. The other reason is that he’s incredibly good at explaining complex topics, and doing so very simply, in a way that doesn’t fatigue you as a reader.

马丁·福勒(Martin Fowler)是我最喜欢的作家之一。 第一个原因是他很搞笑。 他编写软件书籍的方法无疑是“福勒”。 另一个原因是他非常擅长于解释复杂的主题,并且非常简单,以一种不会让您感到疲倦的方式来做。

Refactoring is a book that the creator of Ruby on Rails once said that you should “read before you write another line of code”. Fowler guides you through refactoring a simple application, introducing you to a number of techniques that he’s accumulated and cataloged over his years of consulting.

重构是一本书,Ruby on Rails的创建者曾经说过,您应该“在编写另一行代码之前先阅读”。 Fowler指导您重构一个简单的应用程序,向您介绍他在多年的咨询中积累和分类的许多技术。

Fowler shows you how to flip between coding and refactoring, how often you should be committing your code and when you should be writing your tests. Highly recommended. The latest version of this book was updated to present the examples in JavaScript, which was an added plus for me since it’s my favorite language.

Fowler向您展示了如何在编码和重构之间切换,应该多久提交一次代码以及何时编写测试。 强烈推荐。 本书的最新版本已更新,可以使用JavaScript展示示例,这对我来说是一个加号,因为它是我最喜欢的语言。

4.设计模式:可重用的面向对象软件的元素 (4. Design Patterns: Elements of Reusable Object-Oriented Software)

by Erich Gamma, Richard Helm, Ralph Johnson, & John Vlissides

Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides撰写

This is the seminal book on Design Patterns. What are design patterns, you ask? Design Patterns are well-known solutions to commonly occurring problems in software development. If you’re familiar with the patterns, you’ll find that you’ll be able to greatly reduce the amount of time it takes you to put forth the solutions to those problems.

这是关于设计模式的开创性著作。 您问什么是设计模式? 设计模式是解决软件开发中常见问题的众所周知的解决方案。 如果您熟悉这些模式,您将发现您可以大大减少为这些问题提出解决方案所需的时间。

Having a good awareness of design patterns also allows you to communicate your solutions effectively with other developers.

对设计模式有良好的了解还可以使您与其他开发人员有效地交流解决方案。

“Yeah, I just used a Facade overtop of whichever database Adapter gets loaded from the Strategy.”

“是的,无论策略从哪个数据库适配器加载,我都只使用了Facade顶层。”

“Yeah, I just used a Facade overtop of whichever database Adapter gets loaded from the Strategy.”

“是的,无论策略从哪个数据库适配器加载,我都只使用了Facade顶层。”

“Yeah, I just used a Facade overtop of whichever database Adapter gets loaded from the Strategy.”“Ahh! Gotcha.”

“是的,我只是使用从Facade加载的任何数据库适配器的Facade顶部。” “啊! 知道了。”

Yeah, it’s an older book. But it’s still one of the best for reference. If you’d like something on this topic that’s a bit more recent and friendly, I’d also recommend the good “Head First Design Patterns: A Brain-Friendly Guide” by Eric Freeman.

是的,这是一本旧书。 但这仍然是最好的参考之一。 如果您想在这个话题上找到一些较新的和友好的内容,我还建议您使用Eric Freeman撰写的出色的“ Head First设计模式:大脑友好指南”。

5.域驱动的设计:解决软件核心问题的复杂性 (5. Domain-Driven Design: Tackling Complexity in the Heart of Software)

by Eric Evans

埃里克·埃文斯(Eric Evans)

In order for large code bases to continue to scale, we need to logically split up code into different parts. The idea is to partition your code in a way such that it would be possible for separate teams to work on those parts of your system without affecting anyone else.

为了使大型代码库能够继续扩展,我们需要在逻辑上将代码分成不同的部分。 想法是对您的代码进行分区,以使各个团队可以在系统的那些部分上工作而不会影响其他任何人。

The underlying concept that enables moving your code base in this direction is Domain-Driven Design (DDD). It’s an approach to software development where we model the problems that exist in the “problem domain” (the real world) to a number of solution domains.

使代码库朝这个方向发展的基本概念是域驱动设计(DDD)。 这是一种软件开发方法,我们将“问题域”(现实世界)中存在的问题建模为多个解决方案域。

DDD is incredibly important when a code base gets sufficiently large. Large enterprise companies employ DDD in order to assign teams to parts of the company’s code base.

当代码库变得足够大时,DDD非常重要。 大型企业公司使用DDD来将团队分配给公司代码库的一部分。

Eric Evan’s coined the term “Ubiquitous Language”, which is the term for building a common, all-encompassing language between the developers, the domain experts and any other users or actors in the domain. By using this Ubiquitous Language, it ensures that the most important domain concepts are well understood and get modeled in the software.

埃里克·埃文(Eric Evan)创造了“无处不在的语言”一词,该术语用于在开发人员,领域专家与该领域中的任何其他用户或参与者之间构建通用的,包罗万象的语言。 通过使用这种无处不在的语言,它可以确保最重要的领域概念得到很好的理解并在软件中建模。

The book is a little more technical and challenging than the others, but if you get familiar with these concepts, you’ll be very well off in understanding how today’s largest companies keep their code bases manageable and scalable.

这本书比其他书籍更具技术性和挑战性,但是如果您熟悉这些概念,那么您将很容易理解当今的大型公司如何保持其代码库的可管理性和可扩展性。

**更新:2019年4月17日** (**Update: April 17th, 2019**)

I’ve thought about this recommendation a little bit. Introduction to the DDD world is, in my opinion, extremely beneficial for Junior Developers. I believe this to be true because DDD places importance on familiarity with software architecture, design principles and design patterns. It’s a great way to practically introduce yourself to a higher level of programming.

我考虑了这个建议。 在我看来,对DDD世界的介绍对初级开发人员非常有益。 我相信这是正确的,因为DDD非常重视对软件体系结构设计 原理设计模式的熟悉。 这是将自己实际介绍给更高级别编程的一种好方法。

That said, DDD is a large and challenging topic. For some readers, this book (the seminal “blue book”) by Eric Evans might be better treated as a reference. It was Eric Evans who wrote the first book on DDD.

也就是说,DDD是一个巨大而具有挑战性的主题。 对于某些读者来说,这本书(开创性的“蓝皮书” ) 埃里克·埃文斯(Eric Evans) 可能会更好地作为参考。 埃里克·埃文斯(Eric Evans)撰写了有关DDD的第一本书。

However, I just recently finished reading DDD Distilled by Vaughn Vernon. It’s a really short and sweet intro to DDD, written in order to address the fact that most books on DDD are huge in size.

但是,我最近刚读完沃恩·弗农(Vaughn Vernon) 撰写的DDD Distilled 。 这是DDD的简短介绍,旨在解决大多数DDD书籍规模庞大的事实。

Definitely try DDD Distilled instead. I think this book would be a lot better for most developers in order to get ramped up on the DDD essentials first. For more practical details on how to implement the concepts, refer back to “the blue book” and “the red book”.

绝对可以尝试DDD Distilled。 我认为这本书对于大多数开发人员来说要好得多,以便首先掌握DDD的要点。 有关如何实现这些概念的更多实用细节,请参考“ 蓝皮书 ”和“ 红皮书 ”。

6.软技能:软件开发人员的生活手册 (6. Soft Skills: The Software Developer’s Life Manual)

by John Sonmez

由John Sonmez

We should strive to stay well-balanced as a software developer. Unfortunately, being well-balanced is not a trait that most people affiliate with software developers. The truth is, it’s incredibly important to invest in your learning, health and overall well-being as a developer.

作为软件开发人员,我们应该努力保持平衡。 不幸的是,保持平衡并不是大多数人都隶属于软件开发人员的特征。 事实是,作为开发人员,对您的学习,健康和整体福祉进行投资非常重要。

“Soft skills” is about the important stuff that matters outside of actually coding, like productivity, career goals and personal finance. Sonmez also goes into investing, how he retired at 33, fitness hacking tips and maintaining relationships - things rarely addressed in the programming community.

“软技能”是指与实际编码无关的重要内容,例如生产力,职业目标和个人理财。 Sonmez还涉足投资,他33岁退休的方式,健身黑客技巧和维持人际关系等方面,这在编程社区中很少解决。

It’s written in such a way that you can jump into the book at whichever chapter you think is most relevant to you today.

它的编写方式使您可以在您认为与您今天最相关的任何章节中跳入本书。

7.清洁建筑 (7. Clean Architecture)

by Robert C. Martin (Uncle Bob)

由罗伯特·C·马丁(鲍勃叔叔)

What? Uncle Bob writes good books, ok?

什么? 鲍伯叔叔写好书,好吗?

In school, there’s a lot of focus on algorithms and less focus on software design principles. I think it’s kind of unfortunate because in reality, you don’t encounter that many algorithm challenges too often. Instead, it’s more common that you’ll be faced with the challenge of structuring your code in a way that’s modular, flexible, readable and will allow you to add new features quickly when requirements change.

在学校里,很多精力放在算法上,而很少关注软件设计原理。 我认为这很不幸,因为实际上,您不会经常遇到太多算法挑战。 相反,更常见的是,您将面临以模块化,灵活,易读的方式构造代码的挑战,并可以在需求变化时快速添加新功能。

Clean Architecture is about the essential software design principles and patterns that you’ll be able to use in order to face these challenges.

干净的体系结构是关于您可以用来面对这些挑战的基本软件设计原则和模式。

Some of the best takeaways from this book are the cost of dependencies, stable vs. non-stable code and the SOLID principles: a way to write code so that it’s more understandable, flexible and maintainable.

本书最好的收获是依赖的成本,稳定代码与非稳定代码以及SOLID原则:一种编写代码的方式,使代码更易于理解,灵活和可维护。

Other aspects of this book that were incredibly useful were concepts of “screaming architecture” and “packaging by component” which are opinions on how to organize your modules so that it practically screams to the reader exactly what the project is all about.

这是非常有用的这本书的其他方面是“尖叫架构”和“组件封装”,这是关于如何组织你的模块,因此,它几乎尖叫读者究竟该项目是关于什么意见的概念。

This book goes well hand-in-hand with Domain-Driven Design, which is enabled through the use of a “Layered Architecture” or as Uncle Bob calls it, “The Clean Architecture” (also known as Ports and Adapters). A great book for anyone who wants to up their architecture chops and learn how to effectively design a system at a high level, and do the dance of dependencies at the detail level.

本书与域驱动设计紧密结合,可以通过使用“分层体系结构”或Bob叔叔称之为“清洁体系结构”(也称为端口和适配器)来实现。 这本非常适合想要提高体系结构基础,学习如何有效地在高层次上设计系统,以及在细节层次上进行依存关系跳舞的人的书。

8.有效的工程师 (8. The Effective Engineer)

by Edmond Lau

埃德蒙·刘

Time is our single most valuable asset in life, and we should aim to be more efficient with it. It’s easy to get bogged down and spend a lot of time fixing bugs and wasting effort. Doing repeated work. Bleh. The Effective Engineer is all about getting more done in less time and removing repeated work.

时间是我们生命中最宝贵的资产,我们应该致力于提高时间效率。 很容易陷入困境,并花费大量时间修复错误并浪费精力。 做重复的工作。 eh 有效的工程师就是要在更短的时间内完成更多工作并消除重复的工作。

We can mitigate wasted time and effort on repetitive tasks through a framework called “leverage”.

我们可以通过称为“杠杆”的框架来减少重复性工作上的时间和精力浪费。

Leverage helps you identify the activities that you can do that produce the most disproportionate results- per unit of time invested. It’s a framework that can apply to anything, whether that be how you learn, how you code, how you debug… anything!

杠杆作用可以帮助您确定可以进行的活动,这些活动可以在单位时间内产生最大比例的结果。 它是一个可以应用于任何事物的框架,无论是学习方式,编码方式,调试方式……任何事物!

9.实用程序员 (9. The Pragmatic Programmer)

by Andrew Hunt & David Thomas

安德鲁·亨特(Andrew Hunt)和大卫·托马斯(David Thomas)

Praised for being easy to follow and understand, The Pragmatic Programmer is a book that should be on the desktop of developers of all levels. Andrew and David are programmers that not only spent many years doing what they do, but paying attention to what they were doing as they were doing it, and then trying to determine if they could do that better.

实用编程器因易于理解和理解而受到赞誉,该书应放在各个级别的开发人员的桌面上。 安德鲁(Andrew)和戴维(David)是程序员,他们不仅花费了很多年去做自己的工作,而且还关注他们在做的事情 ,然后试图确定自己是否可以做得更好

What came out of their years of introspection was this book, which introduces a number of essential programmer philosophies to follow throughout your career, like “programmers should have a “do it once, or automate” philosophy”.

这本书经过了多年的内省,由此介绍了在您的整个职业生涯中都应遵循的许多基本的程序员哲学,例如“程序员应该拥有“一次完成或自动化”的哲学”。

It includes simple yet detailed advice that you should carry with you in the back of your mind before you write another line of code or start a new project.

它包含简单而详细的建议,在编写另一行代码或开始一个新项目之前,您应该先带好思想。

最后的话 (Final Words)

Books really are some of the best tools to improve your knowledge and skills as a new programmer or Junior Developer. Books tend to have a really high return on investment; did you know you can make a lot of money programming? ?

书籍确实是提高您作为新程序员或初级开发人员的知识和技能的一些最佳工具。 书籍往往具有很高的投资回报率; 您知道您可以从编程中赚很多钱吗? ?

These are just a few of the best books out there right now in 2019! None of them are really new, but that’s because programming has maintained the same general philosophies and best practices for years. As a professor I once had to say, “you can make a lot of money in this industry, you just have to read the damn manual”.

这些只是2019年目前最好的书中的几本! 它们都不是真正的新事物,但这是因为编程多年来一直保持着相同的总体思想和最佳实践。 作为一名教授,我曾经不得不说:“ 您可以在这个行业中赚很多钱,您只需要阅读该死的手册 ”。

Have you read any of these books? What did you think? Any books not on this list that you think newer developers would really benefit from reading? Let us know in the comments!

你读过这些书吗? 你觉得呢? 您认为此清单上未列出的任何书籍,您认为新的开发人员将从阅读中真正受益吗? 让我们在评论中知道!

其他资源 (Additional Resources)

Here’s a list of some really excellent articles that cover some of the topics from these books. If you don’t quite have the time to invest in fully blown books right now, familiarizing yourself with these concepts might assist you in your journey to become a better developer!

这是一些非常优秀的文章列表,涵盖了这些书中的一些主题。 如果您现在还没有足够的时间投资于功能强大的书籍,那么熟悉这些概念可能会有助于您成为更好的开发者!

Surviving Your First Junior Developer Job [Guide] ??https://univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/

生存第一个初级开发人员工作[指南]https://univjobs.ca/blog/developer-guides/ultimate-guide-for-first-junior-developer-job-success/

Refactoring.guruhttps://refactoring.guru/

Refactoring.guru https://refactoring.guru/

SOLID Design Principleshttps://stackify.com/solid-design-principles/

SOLID设计原则 https://stackify.com/solid-design-principles/

DRY (Don’t Repeat Yourself)https://en.wikipedia.org/wiki/Don%27t_repeat_yourself

干(不要重复自己) https://en.wikipedia.org/wiki/Don%27t_repeat_yourself

NodeJS and Good Practiceshttps://blog.codeminer42.com/nodejs-and-good-practices-354e7d76362

NodeJS和良好实践 https://blog.codeminer42.com/nodejs-and-good-practices-354e7d76362

Implementing the SOLID and the onion architecture in Node.jshttps://dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad

在Node.js中实现SOLID和洋葱架构 https://dev.to/remojansen/implementing-the-onion-architecture-in-nodejs-with-typescript-and-inversifyjs-10ad

Better Software Design with Clean Architecturehttps://fullstackmark.com/post/11/better-software-design-with-clean-architecture

拥有干净架构的更好的软件设计 https://fullstackmark.com/post/11/better-software-design-with-clean-architecture

The Clean Architecturehttp://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

清洁架构 http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

我即将发布的免费资源,有关Node.js和TypeScript的软件体系结构和设计原理的介绍
https://khalilstemmler.com/resources/solid-nodejs-architecture (My upcoming free resource, an introduction to software architecture and design principles with Node.js and TypeScripthttps://khalilstemmler.com/resources/solid-nodejs-architecture)

Keep growing, and have fun while you’re at it!

不断成长,在旅途中尽情玩乐!



If you’re a Canadian student or recent-grad looking for entry-level developer opportunities or co-ops/internships, you should check out our platform, Univjobs. We only post jobs specifically for students and recent-grads.

如果您是加拿大学生或应届毕业生,正在寻找入门级开发人员机会或合作社/实习生,则应查看我们的平台Univjobs 。 我们只发布专门针对学生和应届毕业生的职位。

翻译自: https://www.freecodecamp.org/news/9-books-for-junior-developers-in-2019-e41fc7ecc586/

初级开发人员的缺点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值