JavaRush /Java блог /Random UA /Як із звичайного кодера стати крутим розробником? Вивчаєм...

Як із звичайного кодера стати крутим розробником? Вивчаємо Computer Science

Стаття з групи Random UA
Сучасний світ ІТ і розробки ПЗ досить суворий — високі вимоги до кваліфікації кодерів, постійні зміни і конкуренція, що зростає, змушують фахівців, що працюють у цій сфері, постійно займатися самонавчанням і розвиватися. Безперервне навчання потрібно навіть для того, щоб просто залишатися затребуваним фахівцем, адже "відстати від життя" простіше. Як із звичайного кодера стати крутим розробником?  Вивчаємо Computer Science - 1У публікаціях на JavaRush ми намагаємося допомагати читачам повноцінно розвиватися і самонавчати, щоб стати максимально конкурентними в привабливому світі ІТ-розробки. У сьогоднішній статті мова йтиме про самоосвіту в широкій дисципліні - Computer Science. Що саме входить у поняття computer science (CS) розберемо трохи пізніше, а поки що спробуємо відповісти на запитання: навіщо, власне, програмісту вчити предмети CS і прагнути вдосконалення в цій галузі.

Computer Science – навіщо вчити?

“Програмування – це не щось, що ви знаєте. Це щось, у чому ви можете розібратися. Кріс Пайн, експерт у програмуванні, автор книг та підручників. “У певному сенсі програмування схоже на малювання. Спочатку у вас є тільки чисте полотно та матеріали. Потрібно використати поєднання науки, мистецтва та ремесла, щоб визначити, що з усім цим робити.” Ендрю Хант (Andrew Hunt), автор бестселера The Pragmatic Programmer та один з авторів Маніфесту Agile. Зрозуміти, до чого ми ведемо, нескладно. Щоб стати дійсно хорошим програмістом, або просто піднятися хоча б на щабель вище рядового кодера, потрібно мати максимально широкі і при цьому досить глибокі знання у різних сферах, крім самих мов програмування. І володіння дисциплінами, що входять у поняття CS, йде тут на одному з перших місць.

Дисципліни Сomputer Science

Давайте розберемо, які предмети входять у область комп'ютерних наук. До коротких описів дисциплін з причинами для їх вивчення додамо рекомендації кращої книги та кращої серії безкоштовних відеолекцій з предмета, мабуть, кращого англомовного гайду по computer science, написаного Озом Новою (Oz Nova) та Майлзом Бірном (Myles Byrne), Бредфілд в Сан-Франциско.
  • Програмування

    Програмування є основою та базовою дисципліною комп'ютерних наук, більшість студентів починають вивчення курсу CS саме з нього. Найкращі курси програмування в рамках CS будуть корисні далеко не лише новачкам, а й досвідченим кодерам, які могли пропустити ті чи інші концепції та моделі програмування, коли навчалися цього вперше.

    Краща книга: "Структура та інтерпретація комп'ютерних програм" (Structure and Interpretation of Computer Programs). Автори: Джеральд Сассман (Gerald Sussman) та Хел Абельсон (Hal Abelson).

    А на JavaRush, до речі, всім бажаючим доступний для вивчення легендарний гарвардський курс “CS50. Основи програмування” , повністю перекладений російською.

    Найкраща відеолекція: Brian Harvey's Berkeley CS 61A

  • Алгоритми та структури даних

    Знання найбільш поширених алгоритмів і структур даних допомагає вирішувати різного роду завдання, а це дуже важливо в будь-якій області комп'ютерних наук, включаючи, звичайно, і розробку програмного забезпечення.

    Найкраща книга: The Algorithm Design Manual. Автор: Стівен Ск'єна (Steven Skiena).

    Найкраща відеолекція: лекції Стівена Скьєни

  • Комп'ютерна архітектура

    Знання комп'ютерної архітектури, тобто розуміння того, як працює комп'ютер, є ще однією важливою частинкою пазла, без якої спроби побудови програмних конструкцій і моделей часто виявляються невдалими.

    Найкраща книга: "Архітектура комп'ютера та проектування комп'ютерних систем" (Computer Organization and Design). Автори: Девід Паттерсон (David Patterson) та Джон Хеннесі (John Hennessy).

    Найкраща відеолекція: Berkeley CS 61C

  • Операційні системи

    Практично весь код, написаний програмістом, виконуватиметься операційною системою, тому знання принципів роботи ОС також є важливим елементом.

    Найкраща книга: "Введення в операційні системи" (Operating Systems: Three Easy Pieces). Автори: Андреа Арпачі-Дюссо (Andrea Arpaci-Dusseau) та Ремзі Арпачі-Дюссо (Remzi Arpaci-Dusseau).

    Найкраща відеолекція: Berkeley CS 162

  • Комп'ютерні мережі

    Мало що в сучасному ІТ може обійтися без використання Інтернету, тому ІТ-фахівцям важливо розуміти, як Всесвітня мережа працює, щоб використати її потенціал на повну.

    Найкраща книга: Computer Networking: A Top-Down Approach. Автори: Джеймс Куросе (James Kurose), Кіт Росс (Keith Ross).

    Найкраща відеолекція: Stanford CS 144

  • Математика для computer science

    Оскільки комп'ютерні науки, по суті, є відгалуженням прикладної математики, знання цього предмета теж буде дуже корисним практично у будь-якій професії, пов'язаній із програмуванням. А також дасть вам конкурентну перевагу перед тими, хто не володіє цією дисципліною.

    Краща книга: Mathematics for Computer Science. Автори: Альберт Р. Мейєр (Albert R. Meyer), Ерік Леман (Eric Lehman) та Френк Томсон Лейтон (Frank Thomson Leighton).

    Найкраща відеолекція: Tom Leighton's MIT 6.042J

  • Бази даних

    Бази даних — відносно нова галузь комп'ютерних наук, і експертів у ній, як і раніше, не так багато. Дані є ще одним ключовим елементом CS, тому що вони лежать в основі більшості значущих програм, але мало хто розуміє, як насправді працюють системи баз даних.

    Найкраща книга: Readings in Database Systems. Автори: Джозеф М. Хеллерштейн (Joseph M. Hellerstein) та Майкл Стоунбрейкер (Michael Stonebraker).

    Найкраща відеолекція: Joe Hellerstein's Berkeley CS 186 Як із звичайного кодера стати крутим розробником?  Вивчаємо Computer Science - 2

  • Мови та компілятори

    Розуміння того, як технічно працюють мови програмування та компілятори, дозволяє вдосконалювати свій код та навички програмування. А також полегшує вивчення нових ЯП, що також критично важливо для будь-якого розробника в довгостроковій перспективі.

    Краща книга: "Компілятори: принципи, технології та інструменти" (Compilers: Principles, Techniques and Tools). Автори: Альфред Ахо (Alfred Aho), Моніка С. Лам (Monica S. Lam), Раві Мережі (Ravi Sethi), Джеффрі Ульман (Jeffrey Ullman).

    Найкраща відеолекція: Alex Aiken's course on Lagunita

  • розподілені системи

    У наш час більшість систем є розподіленими. Комп'ютери та програми стають все більш комплексними, і знання розподілених систем виявиться корисним для забезпечення правильної та безперебійної роботи вашого софту.

    Найкраща книга: Distributed Systems, 3rd Edition. Автори: Мартен ван Стін (Maarten van Steen) та Ендрю С. Таненбаум (Andrew S. Tanenbaum).

    Найкраща відеолекція: CS 436: Distributed Computer Systems

Поради для вивчення Computer Science

Ну і насамкінець кілька порад для тих, хто планує розпочати вивчення дисциплін CS. Як із звичайного кодера стати крутим розробником?  Вивчаємо Computer Science – 3
  1. Розвивайте практичні навички у дисциплінах CS

    Одна з переваг CS, як і інших ІТ курсів, полягає в тому, що отримані щойно теоретичні навички можна відразу ж застосувати на практиці. Не забувайте про це і чергуйте теорію з практикою, щоб досягти найкращих результатів.

  2. Не прокрастинуйте

    Комп'ютерні науки - це досить складний предмет, вивчення якого мало кому дається легко, особливо спочатку. Саме тому, починаючи вивчати дисципліни CS, потрібно не піддаватися прокрастинації — не відкладайте на потім освоєння теорії, розв'язання задач і практику, тому що через це навчання не тільки може сильно затягнутися, а й швидше за все виявиться не таким ефективним.

    Як із звичайного кодера стати крутим розробником?  Вивчаємо Computer Science - 4
  3. Не обмежуйтесь одним курсом

    Не чекайте, що зможете отримати всі необхідні знання з одного курсу, як би гарний він не був. Краще завжди звертатися щонайменше до кількох джерел інформації, щоб досягти ширшого розуміння предмета.

  4. Знайдіть однодумців

    Звучить трохи банально, але ефективно навчатися, як і робити багато інших речей у житті, найкраще у складі групи однодумців. Знайти собі компанію для спільного вивчення CS буде корисним із низки причин. Це допоможе вчитися більш ефективно, разом вирішувати завдання та проблеми, порівнювати з іншими свій прогрес у навчанні та навичках застосування нових знань.

  5. Вчитеся писати слова, а не тільки код

    Ще одна поширена порада від багатьох експертів, для тих програмістів, які вивчають CS для покращення своїх навичок та підвищення професійного рівня: вчитися писати (а не кодити), тобто складати слова у пропозиції та складати із пропозицій тексти. Цей досвід досить важливий для будь-якого розробника, а його відсутність заважатиме прогресувати не тільки у вивченні комп'ютерних наук, але й в інших аспектах програмування як професії.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ