Фундаментальное образование: обязательные курсы?

Добрый день,

так вышло, что мое высшее образование с IT практически не было связано, но когда меня занесло в индустрию, я поняла, что дальнейшее развитие без фундаментального образования невозможно. Последние пару лет я прохожу разнообразные курсы, в целом неплохие, но у меня по-прежнему нет целостной картинки, я чувствую пробелы в знаниях, но мне сложно понять, что именно стоит еще почитать/подучить или как должен называться предмет, которого мне не хватает.
Опишу что уже пройдено:
Data Communication and Networking (основной упор, был на типы сетей, протоколы, совсем немного про роутеры. но ничего не было про cloud, например).
Database Administration
PHP & MySQL + basic html and javascript (базовый курс, с простыми алгоритмами и функциями)
С/С++ (базовый курс, дошли до принципов ООП и немного практиковались в использовании)
Advance Business Systems Analysis (как из требований создается большая система, от анализа требований, моделирование данных, к дизайну интерфейса)
Quality Assurance (основные методологии, ничего про автоматизацию)
Software Project Management (тут тоже все понятно, про процессы разработки)

Где я чувствую пробелы:
1. В понимании архитектуры приложений. Точнее, я понимаю, когда мне объясняют, почему сделано именно так и за что отвечают компоненты, но как люди приходят к пониманию как эту архитектуру оптимальнее всего построить? Это исключительно опыт или все же какие-то фундаментальные принципы?

2. Несмотря на курс №1, понятие ACL мне было незнакомо (http://en.wikipedia.org/wiki/Access_control_list). Пытаюсь понять, что еще я могу упускать? Или это должно быть в рамках курса по безопасности компьютерных систем?

3. Читаю про static assets и не понимаю, кто их использует и почему. Точнее, почему кто-то использует, а кто-то нет (и чем обходится тогда?) Наверное какого-то общего понимания ка кработают фреймворки не хватает.

Что порекомендуете? И без чего никаки нельзя? Подойдут либо названия курсов, либо книги.

Цель минимум: понимать что говорят соответствующие специалисты, а не глупо хлопать глазами.
Цель максимум: уметь писать грамотные технические задания разработчикам, понимая как оно работает и зная чего хотят бизнес-заказчики

Заранее спасибо!
  • Вопрос задан
  • 6725 просмотров
Пригласить эксперта
Ответы на вопрос 5
Anastasia_K
@Anastasia_K
Вы бы определились, в какой области вы хотите получить необходимые знания. Глядя на набор курсов, которые Вы изучили, мне решительно непонятно в какой области Вы работаете. В кучу смешано администрирование сетей, администрирование приложений, веб-разработка, разработка на нативном коде…
Если Вам нужно администрирование систем и сетей, то рекомендую посмотреть хотя бы CCNA, там будут все необходимые базовые знания по сетям и маршрутизации. По приложениям сложнее, надо смотреть курсы по конкретному софту. Аналогично по фреймворкам, в их зоопарке надо разбираться с каждой конкретной системой.
Ответ написан
ixSci
@ixSci
1. Опыт. Но книги почитать тоже не помешает, чтобы было откуда брать зачатки идей.
Code Complete
Design patterns
Writing Secure code
2. Windows Internals,
Windows via C++
Ответ написан
@JDima
Data Communication and Networking (основной упор, был на типы сетей, протоколы, совсем немного про роутеры. но ничего не было про cloud, например).

Я не вижу смысла разработчику углубляться в сети. Однако, по опыту общения с разработчиками скажу: вы ОБЯЗАНЫ прекрасно понимать работу стека TCP/IP и в первую очередь самого протокола TCP, который на самом деле имеет массу нюансов. Но при этом то, каким образом роутеры осуществляют доставку пакета, вам едва ли потребуется, этим займутся другие люди.
Я давно сбился со счета, сколько раз мне доводилось анализировать дампы пакетов тормозящего сетевого приложения и к примеру объяснять разработчику, почему в Москве оно летает, а во Владивостоке страшно тормозит при слабо нагруженных каналах связи.
Упомянутый выше CCNA — это здорово в качестве базы. Но стоит попутно углубиться в работу TCP на конкретных конечных системах.
Ответ написан
Wott
@Wott
Насколько ваше образование было далеко от IT?
Математика, дискретная в частности? Это некий базис для архитектора. Потом пошли best practice, шаблоны и отдельные, хорошо изученные случаи типа клиент-сервер. Понимание приходит с опытом — пока что нет объединяющей теории, которая перечислила и оценила варианты дизайна. Если вы поняли Project Managment то должны быть знакомы с WBS и то как строиться план работ. В архитектуре примерно также — берем большую задачу и начинаем ее разделять на «красивые» куски. используя какие-то шаблоны. И так до тех пор пока минимальными кирпичиками будут понятные, читай шаблонные, задачи.
Базы данных базируются на RDBMS

Судя по списку вы работает, хотя скорее пытаетесь, работать ПМ-ом или бизнес-аналистом в студии веб-дизайна?
Если так что архитектура приложений для вас MVC, сетевая — клиент-сервер, базы данных для вас вторичны. ибо закрыты ORM фреймворка
Ответ написан
danielnewman
@danielnewman
Front-end
Образование — это прекрасно, но модель непрерывного образования — необходимость. В ИТ знания устаревают раньше, чем вы закончите даже бакалавра. Продолжайте делать то, что делаете, фокусируетесь на ключевых компетенциях в вашей области. Идея в том, что когда веб только начинался, не было разделений между дизайнерами, верстальщиками, администраторами, но по мере развития в одном клауд-компьютенге появится с десяток-другой профессий с достойными соц.пакетами. Такова жизнь. Никто не в состоянии понимать код на уровне архитектора, формулировать задания исходя из особенностей фреймворка и отвечать за сроки сдачи проектов. Больше похоже на то, что у вас проблемы с менеджментом подчиненных специалистов, среди которых есть и понимание архитектурных особенностей и политик безопасности и архитектуры БД. Я правильно вас понял?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы