Книги які має прочитати КОЖЕН програміст

Алекс про IT
3 Dec 202207:44

Summary

TLDRThe speaker, a seasoned programmer, shares insights on four pivotal books that transformed their professional journey. They discuss the comprehensive nature of one book, dubbed the 'Bible for programmers,' which covers all aspects of modern programming, including naming conventions and best practices. Another book introduces object-oriented design patterns, essential for managing complex projects. The speaker also highlights the importance of test-driven development and the paradigm shift it offers. Lastly, they touch on the practical advice in 'The Pragmatic Programmer,' which helped them plan their career and choose the right technologies to focus on. The talk concludes with a recommendation to read selectively and build a solid foundation with 'Clean Code' before exploring other resources.

Takeaways

  • 📚 The speaker recommends four books that significantly changed their programming perspective and helped them grow professionally.
  • 🔍 One book is described as a comprehensive guide covering all aspects of modern programming, including detailed advice on best practices like variable naming.
  • 🏛️ The book is often referred to as the 'Bible for programmers', indicating its depth and the frequent revisits it deserves for refreshing knowledge.
  • 🔄 The speaker emphasizes the importance of revisiting this book after gaining some experience, as new insights are gained with each read.
  • 🧩 The discussion of object-oriented design patterns is highlighted as crucial for maintaining large, complex codebases that are sustainable.
  • 📈 The speaker shares their personal journey of reading the book multiple times, noting how their understanding and application of patterns improved over time.
  • 🛠️ 'Test-Driven Development' is introduced as a book that can revolutionize the way one interacts with clients and develops software, by writing tests before functionality.
  • 💼 The 'Pragmatic Programmer' is recommended for its career development insights, helping programmers plan their career path and choose the right technologies to learn.
  • 📈 The speaker regrets not reading 'The Pragmatic Programmer' earlier, as it could have saved them from wasting time on irrelevant technologies.
  • 📘 Other books mentioned include 'Clean Code', 'Git', 'Code: The Hidden Language of Computer Hardware and Software', and 'The Art of Unix Programming', each offering unique insights into different aspects of programming.
  • 📝 The speaker advises not to get overwhelmed with too many books at once, suggesting a focused approach of reading one book per quarter and building a solid foundation with 'Clean Code' before moving on to others.

Q & A

  • What is the main criticism the speaker has about most programming literature?

    -The speaker criticizes most programming literature for being of questionable quality, containing too much unnecessary information ('water') and only a small amount of valuable content.

  • Why does the speaker recommend the book often referred to as the 'Bible of Programmers'?

    -The speaker recommends it because it covers all aspects of programming in great detail, offering practical advice on everything from naming variables to complex structures, making it an essential reference that programmers can return to repeatedly.

  • How does the speaker suggest programmers should approach learning programming patterns?

    -The speaker advises that programming patterns should be learned after some experience, especially when a project becomes difficult to maintain. Mastering patterns will help in better structuring and growing large projects.

  • What does the speaker say about the benefits of test-driven development (TDD)?

    -The speaker believes TDD can transform how programmers interact with clients by allowing them to catch problems early. Although it seems difficult initially, mastering TDD saves time by ensuring the program is built correctly from the start.

  • What impact did the book 'Test-Driven Development' have on the speaker?

    -The speaker says that this book reshaped their understanding of programming, changing their perspective on development and how to efficiently manage client requirements and code functionality.

  • Why does the speaker recommend 'The Pragmatic Programmer' for career planning?

    -The speaker recommends 'The Pragmatic Programmer' because it helps developers understand how to choose programming languages, plan their careers, and focus on relevant technologies, avoiding wasting time on unnecessary ones.

  • What lesson did the speaker learn from reading 'The Pragmatic Programmer' too late in their career?

    -The speaker regrets not reading the book earlier, as they spent a lot of time learning and using various technologies in a chaotic manner. The book would have helped them focus on building a structured and purposeful career.

  • What advice does the speaker give regarding reading multiple programming books at once?

    -The speaker advises against trying to read many books at once, suggesting that programmers should focus on one book at a time, such as 'The Clean Code', before moving on to others to avoid feeling overwhelmed.

  • Which book does the speaker recommend as a starting point for programmers who are unsure what to read?

    -The speaker recommends starting with 'The Clean Code' because it builds a solid foundation of knowledge that can support future learning in programming.

  • What common challenge does the speaker highlight about mastering programming books like 'Design Patterns'?

    -The speaker notes that books like 'Design Patterns' can be difficult to fully grasp, often requiring multiple reads over several years. However, once mastered, they significantly enhance the programmer's ability to build and manage complex software projects.

Outlines

00:00

📚 Essential Books for Programmers

The speaker discusses the importance of reading high-quality literature for programmers and shares their experience with four books that significantly impacted their professional growth. They emphasize that while many programmers have specialized knowledge, there are gaps that can be filled by a comprehensive book on programming. One such book, referred to as the 'Bible for Programmers,' covers all aspects of modern programming and provides detailed guidance on best practices, including naming conventions. The speaker shares their personal journey of revisiting this book after three years and gaining new insights, highlighting the book's timeless value. They also touch upon the importance of learning object-oriented design patterns, especially for those maintaining large and complex codebases, and suggest that while it might be challenging initially, it is a worthwhile investment for professional development.

05:02

🔍 Career Planning and Further Readings in Programming

In the second paragraph, the speaker focuses on the importance of career planning for programmers and the value of additional reading beyond the foundational books. They mention a book that discusses career growth and self-improvement from a unique perspective, aiming to help readers understand their coding identity better. The speaker also recommends a book that tells the stories of successful programmers, which can be motivational. They discuss the significance of understanding Unix-like systems and computer program structures, suggesting that a deep understanding of these can demystify computing and simplify problem-solving. The speaker warns against spending too much time on books and emphasizes the need for selective reading, suggesting to start with 'Clean Code' and then branch out to other resources. They also advise against making a long reading list, which can be overwhelming, and instead recommend focusing on one book at a time to build a solid foundation.

Mindmap

Keywords

💡Programming

Programming refers to the process of writing, testing, debugging, and maintaining the source code of computer programs. In the video, programming is the central theme as the speaker discusses various books that have significantly impacted their professional growth as a programmer. The script mentions aspects like variable naming, which is a fundamental part of programming, and how certain books provide in-depth guidance on best practices.

💡Software Development

Software development is the process of creating a software product through various stages like coding, testing, and debugging. The video script alludes to this process when discussing the comprehensive coverage of modern programming aspects in one of the recommended books. It also touches upon the importance of understanding the full cycle of software development to be a well-rounded professional.

💡Code Quality

Code quality pertains to the readability, efficiency, and maintainability of source code. The script emphasizes the importance of code quality by mentioning a book that dedicates 13 pages to the topic of variable naming, suggesting that even small aspects like this can greatly impact the overall quality of code.

💡Object-Oriented Design Patterns

Object-oriented design patterns are reusable solutions to common programming problems using object-oriented languages. The video discusses the significance of learning and applying these patterns as a way to manage complex software projects. The speaker shares their experience of revisiting a book on this topic after facing challenges with a growing product, highlighting the value of these patterns in professional growth.

💡Test-Driven Development (TDD)

Test-driven development is a software development approach where tests are written before the code itself. The script describes TDD as a method that can reshape a programmer's interaction with clients and tasks, emphasizing the importance of writing tests that initially fail and then developing the functionality to pass those tests. This approach helps in clarifying requirements and avoiding unnecessary work.

💡Professional Growth

Professional growth in the context of the video refers to the personal and career development of a programmer. The speaker reflects on how certain books have helped them grow as a professional, not just in technical skills but also in understanding the broader aspects of software development and career planning.

💡Career Planning

Career planning involves the process of choosing and working towards a career path. The video mentions a book that the speaker found helpful in planning their career as a programmer, emphasizing the importance of understanding which programming languages to learn and how to build a strong foundation for success in the field.

💡Version Control

Version control is a system that records changes to a file or set of files over time. The script mentions the importance of version control for programmers and how a book dedicated to this topic can be beneficial. It suggests that understanding version control is crucial for any developer working in a team environment.

💡Code Review

Code review is the process of examining source code as part of a software development process. While not explicitly mentioned in the script, the concept is implied in the discussion of improving code quality and maintaining standards, which are often part of the code review process.

💡Technical Debt

Technical debt refers to the consequences of poor code quality or architecture choices. The video script touches on this concept when discussing the challenges of maintaining a growing software product, suggesting that avoiding technical debt is crucial for sustainable software development.

💡Legacy Code

Legacy code is existing computer code that is old or outdated but still in use. The speaker in the video reflects on their experience with legacy code, indicating the importance of understanding how to work with and improve such code, which is a common challenge in software development.

Highlights

The programmer has an overflow of literature, but most of it is of questionable quality.

Many books contain a lot of filler with only a sprinkle of truly essential content.

The speaker has selected four books that significantly changed their perspective and helped them grow professionally.

One book covers all aspects of modern programming in detail, including a 13-page section on variable naming.

This book is referred to as the 'Bible for programmers' due to its comprehensiveness and frequent reference value.

The speaker re-read the book after three years and gained a lot of new knowledge that seemed uninteresting during the first read.

Design patterns are fundamental for developers working on large, complex projects that are hard to maintain.

The book on design patterns is challenging but will greatly elevate one's professional level if mastered.

The speaker recommends revisiting the book as new problems arise to continue learning and applying the patterns.

After 5 years of programming, the speaker felt they had mastered the book and saw a significant improvement in their skills.

Test-driven development is a book that will change how one interacts with clients and avoids unnecessary work.

Writing tests first forces developers to define clear technical requirements, which can prevent issues before development begins.

The speaker's approach to programming was completely transformed after adopting test-driven development.

The book 'Pragmatic Programmer' is a self-improvement guide for developers, helping to plan a career and understand what to focus on.

The speaker regrets not reading 'Pragmatic Programmer' earlier, as it could have saved them from wasting time on unnecessary technologies.

There are many useful programming books beyond the four fundamental ones mentioned.

The book 'Clean Code' is highly recommended for its insights on writing quality code and career growth.

Reading 'Code' by Charles Petzold can demystify computer systems and make programming more accessible.

The speaker advises not to get stuck on books for too long, as each one requires significant time to master.

It's suggested to read one book per quarter and not to overwhelm oneself with a long list of books to read.

Start with 'Clean Code' and build a strong foundation before moving on to other resources.

Transcripts

play00:00

Привіт за свій час працювання

play00:02

програмістом є перелопати в дуже багато

play00:04

літератури Але більшість з нею були

play00:07

доволі сумнівною якості Тобто було

play00:10

багато-багато води і трішечки буквально

play00:13

капелюсічка чогось суттєвого але і по

play00:15

своєму досвіду і по досвіду своїх

play00:16

знайомих я підібрав чотири книжки які

play00:19

суттєво змінили бачення і допомогли

play00:22

різко вирости як Професіонал

play00:25

багато програмістів мають відірвані

play00:28

знання тобто якісь аспекти Вони знають

play00:30

дуже гарно а інші аспекти не знають в

play00:32

принципі для того щоб покрити ці аспекти

play00:35

які вони не знають в принципі ця книжка

play00:37

підходить ідеально в ній детально

play00:40

розглядається всі аспекти програмування

play00:42

які використовуються в сучасних умовах

play00:44

програмування і розбирається по

play00:47

гвинтиках як що має бути банально там

play00:50

розділ який розказує як мають називати

play00:53

змінні займають 13 сторінок і наступний

play00:56

раз тобі не прийдеться задумуватись над

play00:58

тим як назвати змінну ти будеш одразу

play01:01

знати і не будеш відволікатись на всяку

play01:03

таку рутину в народі цю книжку називають

play01:06

Біблія програмістів і я цілком згідні з

play01:09

цим терміном в тому плані що ти не

play01:11

прочитаєш цю книжку і залишиш а будеш до

play01:13

неї повертатись час від часу причому

play01:15

Будеш повертатись до певних конкретних

play01:17

розділів для того щоб оновити знання по

play01:20

циклах тоді Колись так книжка з якимось

play01:22

складними циклами або по переборі

play01:25

таблиць після того як є через три роки

play01:27

вирішив наново перечитати книжку від

play01:29

початку і до кінця Я побачив наскільки

play01:32

багато нових знань я отримав Тому що під

play01:35

час Першої читання для мене здавалось не

play01:37

актуальними ці знання і мені було просто

play01:39

скучно тому я читав по діагоналі і йшов

play01:41

далі але під час другого я вже стикнувся

play01:44

з певною проблематикою яка там

play01:46

розповідається і тому мені це було

play01:48

набагато більш цікаво і пізнавально

play01:50

патерни об’єктно-орієнтованого

play01:52

проектування це певна фундаментальна річ

play01:55

яку не варто читати якщо ти її Новачок

play01:58

Але якщо ти почав будувати продукт Він

play02:01

розрісся а потім перетворився в такого

play02:04

монстра який неможливо підтримувати це

play02:06

означає пора вбратися за патерни ця

play02:09

книжка буде читатись важче ніж інша

play02:11

література Але варто зосередитись на

play02:14

тому щоб її освоїти В кінцевому

play02:16

результаті це дуже сильно підніме твій

play02:19

рівень як професіонала і дозволить

play02:20

набагато краще розбудовувати великі

play02:23

продукти в свій час я за нею брався рази

play02:26

2-3 до певного моменту дочитував і

play02:28

розумів що далі якось воно все не йде

play02:31

тоді зупинявся і потім коли стикався з

play02:34

новими проблемами повертався до книжки і

play02:36

продовжував її читання

play02:39

в кінці кінців десь після 5 років Як я

play02:43

вже получав гроші за програмування Мені

play02:45

здалося освоїти цю книжку Я побачив

play02:48

наскільки сильно вирізний рівень Після

play02:50

того як я вже почав використовувати ці

play02:52

патерни бо по суті ми завжди придумуємо

play02:55

якісь свої патерни і повторюємо якісь

play02:57

однакові штуки і якщо їх систематизувати

play03:00

а не підходити до цього інтуїтивно вибір

play03:03

в результаті набагато краще

play03:05

тдд розробка через тестування це книга

play03:09

яка дозволить тобі переосмислити

play03:11

взаємодію з клієнтом і не робити не

play03:14

потрібно роботу його ідея полягає в тому

play03:17

що спочатку ми пишемо Тести які

play03:19

провалюються а потім пишемо функціонал

play03:21

щоб ці тести працювали завдяки цьому під

play03:24

час написання тестів ми по суті описуємо

play03:27

детальне технічне завдання що має робити

play03:29

програма завдяки цьому ще на етапі

play03:32

написання тестів ми можемо побачити

play03:34

якісь проблеми в початковому завданні

play03:36

які нам дав замовник і повернутись до

play03:38

цього раніше ніж вже набудуємо

play03:40

архітектуру і велику програму поки ти

play03:43

освоюєш цю ідею здається що Це доволі

play03:46

муторне складно і забирає багато

play03:47

додаткових ресурсів але після того як ти

play03:50

вже навчишся з цим працювати ти побачиш

play03:52

що по суті це економить суттєву

play03:55

кількість часу власне в мене після

play03:57

освоєння розробки через тестування

play03:59

повністю перевернувся вигляд того як

play04:01

виглядає програмування і в цьому плані

play04:04

ця книжка мене найбіль зобразила тому що

play04:06

всі інші Я бачив що я просто Росту як

play04:09

Професіонал десь швидше десь повільніше

play04:11

але тут прийшло іменно переосмислення

play04:15

програміст-прагматик ця книжка по суті

play04:18

являється саморозвитком для програміста

play04:20

але це не Тисячу способів бути успішним

play04:22

а дійсно Крута річ яка дозволить тобі

play04:25

запланувати свою кар'єру і розуміти на

play04:28

що розраховувати завдяки ній ти зможеш

play04:30

розуміти які мови програмування треба

play04:33

вибрати на що опиратись при виборі мов

play04:35

програмування як побудувати свій

play04:37

фундамент і успішно розвивати свою

play04:40

кар'єру на базі нього на жаль я її

play04:42

зустрів доволі пізно В мене вже була

play04:44

певна позиція і я доволі успішно

play04:46

розвивалася в ній проте досить довгий

play04:50

час я його ходив в хаотично від одної

play04:52

мови програмування до іншої брав все

play04:54

підрядне фріланці від Carp до пайтона і

play04:57

PHP і не розумів на що потрібно

play04:59

витрачати час а на що ні попри те що

play05:02

мені було весело програмувати досить

play05:04

велику кількість часу можна сказати що я

play05:06

просто просрав на непотрібні технології

play05:08

щоб цього не сталося потрібно прочитати

play05:11

книжку запланувати свою кар'єру

play05:13

програміста і далі просирати свій час за

play05:16

чітко заданим планом

play05:20

Окрім цих чотирьох які я вважаю

play05:22

фундаментальними і надзвичайно важливими

play05:24

є ще уйму книг програмування які дійсно

play05:27

корисні і хороші про гід шикарна книжка

play05:30

про шикарний інструмент тому що

play05:32

користуватися системою контролю версій

play05:34

потрібно всім програміст фанатик він

play05:36

також розповідає про кар'єрний ріст і

play05:38

саморозвиток можливо з-під іншого кута і

play05:41

це дозволить більш краще розібратися в

play05:43

собі кодори за роботою це шикарна штука

play05:46

яка розказує про реальних програмістів

play05:49

які добились топу успіху і ти можеш

play05:52

більше побачити їх як людей і

play05:54

співставити з собою Це додає гарний плюс

play05:56

до мотивації

play05:58

мистецтво програмування під юнікс власне

play06:01

юнікс подібні системи дуже важливі до

play06:04

освоєння і якщо їх гарно зрозуміти тоді

play06:06

ти виростеш як спеціаліст проте далеко

play06:09

не всім вони потрібні і Далеко не всі

play06:11

вони можуть бути цікавою Але книжка

play06:13

топова

play06:15

структура і інтерпретація комп'ютерних

play06:17

програм це також така фундаментальна

play06:19

література Після якої в тебе вже зникне

play06:22

відчуття магії в роботі комп'ютера а

play06:24

коли немає відчуття магії вся йде

play06:26

набагато простіше але вона також доволі

play06:28

складна для освоєння о ледь не забув

play06:31

добре що я склав список клієнт кодор

play06:34

топова книжка по тому як не вигорити

play06:36

справитися менеджерами які дають якісь

play06:38

не зовсім адекватні завдання і в

play06:41

принципі справлятися з собою як

play06:43

програмістом по суті навіть в додаткових

play06:45

книгах я не назвав і 10% від дійсно

play06:49

хорошої літератури але не варто

play06:51

зациклюватися надто довго на книгах

play06:53

кожна книжка потребує багато часу на те

play06:57

щоб її освоїти і переварити А вас часу є

play07:01

не настільки багато тому Вибирайте

play07:03

літературу не надто активну можеш взяти

play07:05

собі за звичку читати по одній книжці за

play07:08

квартал Але ні в якому разі Після

play07:11

перегляду відео не роби список з 10 книг

play07:14

які прямо зараз хочеш прочитати тому що

play07:17

це тільки ускладнить тобі життя якщо ж

play07:20

ти взагалі не знав що читати і вперше

play07:22

побачив всі ці книжки бери досконалий

play07:24

код і поки не прочитаєш його не переходь

play07:27

на інший джерела він дозволить

play07:30

побудувати тобі хороший фундамент на

play07:32

базі яких ти вже зможеш набудовувати

play07:34

наступні знання тому Спочатку він а

play07:37

потім все інше

Rate This

5.0 / 5 (0 votes)

Related Tags
Programming BooksCareer GrowthSoftware DevelopmentCode MasteryProfessional InsightsTech LiteratureDeveloper's JourneyCoding PatternsSoftware DesignCareer Planning