Я начинающий разработчик, который хочет создавать большие системы, такие как PayPal. По какому пути мне следует идти?

Я студент 2-го курса компьютерной инженерии в Эфиопии, Африка . Мы взяли C и C ++, и я научил себя HTML, CSS, PHP (также фреймворк cakePHP) и немного javascript, JQUERY и mySQL для разработки небольших систем, таких как блог. Но я хочу создавать большие системы, которые будут безопасными и надежными. Я очень рад видеть здесь, в SO, очень умных и опытных разработчиков. Я сомневаюсь, что делать с самого начала, то есть (ASP.NET или PHP) и какие другие языки или системы мне следует изучить, чтобы это произошло. Заранее спасибо.

PS. Я могу справиться с любым типом математики.

9
задан coderMonkey 31 August 2010 в 08:43
поделиться

4 ответа

В больших системах существует связь между компонентами и тестированием.

Предполагается, что такие курсы, как «архитектура программного обеспечения» и «программная инженерия», научат вас проектировать системы (правильно обеспечивать связь и связь между компонентами). Меня немного разочаровал подход моего университета к этому, но это поможет вам, по крайней мере, думать о правильных вещах.

Затем для тестирования начните рассматривать методологию разработки через тестирование. Тестовое покрытие очень важно, когда речь идет о надежности и безопасности.

Наконец, я мог бы даже порекомендовать взглянуть на Haskell, хотя бы для того, чтобы проникнуться более «формальным» режимом работы. Haskell более или менее заставляет вас быть более формальным в том, как вы выражаете проблемы через свою систему типов. (Кроме того, если вам действительно нравится продвинутая математика, вам, вероятно, понравится Haskell :))

2
ответ дан 4 December 2019 в 12:57
поделиться

Я думаю, дело не в языке или системе. Если вы хороший программист, вы легко адаптируетесь к любому существующему языку программирования или фреймворку.

Для того типа системы, которую вы хотите запрограммировать, необходимо рассмотреть множество фреймворков. все со своими плюсами и минусами.Я бы посоветовал вам попробовать поучиться у людей, которые делали это раньше, посмотреть, что используют крупные компании, и больше учиться.

1
ответ дан 4 December 2019 в 12:57
поделиться

Я чувствую себя стариком, говоря это, но со временем вы поймете, что две самые большие проблемы в разработке программного обеспечения:

  • Повторное использование кода - Возможность писать код, который можно использовать повторно.Неочевидно даже, что код можно использовать повторно с течением времени в том же самом программном обеспечении, для которого он был написан. Весьма вероятно, что при открытии кода, который вы написали некоторое время назад, вы поморщите себе лицо после того, как потратили несколько часов, пытаясь изменить его, и решите не использовать его повторно в следующей версии программного обеспечения, а переписать. Писать код, который можно использовать повторно, — это настоящее искусство, и точно так же повторное использование кода — настоящее искусство. Разработчики программного обеспечения всегда хотят переписывать и изобретать велосипед. Это весело. Но на этом далеко не уедешь.
  • Фактическое использование — не очевидно писать ПО, которое приносит пользу. Потому что у разработчиков программного обеспечения совершенно другие ожидания от программного обеспечения, чем у пользователей их приложений. Мы склонны чрезмерно проектировать, чрезмерно оптимизировать и чрезмерно усложнять вещи, добавлять слишком много функций, , рассматривать слишком много вариантов «что, если». Мы предпочитаем сосредотачиваться на интересных частях, а не пачкать руки хорошими пользовательскими интерфейсами или другими скучными, трудоемкими и неблагодарными проблемами. Мы производим много того, что никто не хочет или не может использовать.

Как это отвечает на ваш вопрос?

  • Повторное использование кода: вам обязательно нужно освоить это. Познакомьтесь со многими библиотеками и фреймворками. Разработайте приложение, а затем попытайтесь соединить его, используя существующие компоненты и архитектуры. Написание связующего кода — самая трудная и самая важная задача. Кроме того, в своем стремлении создать такую ​​большую систему выделите отдельные задачи системы и попробуйте написать свои собственные компоненты, нацеленные на эти отдельные задачи.Постарайтесь сделать каждый из них надежным и многоразовым. Не пытайтесь построить всю систему сразу. Вы потерпите неудачу. Вы, вероятно, чему-то научитесь, может быть, многому, но потерпите неудачу (или вы чертовски гений).
  • Фактическое использование: ну, очень амбициозно хотеть создать что-то столь же большое, как PayPal, но постарайтесь не создавать что-то большое. Попробуйте создать что-то хорошее. Хорошо тем, что это полезно, полезно и используется. Вы увидите со временем, это достаточно сложно. Попробуйте создать что-то, что другие используют и чем довольны.

Сосредоточьтесь на том, чтобы стать лучше в этих двух. Выбирайте любые библиотеки/фреймворки/платформы/языки, которые вам нравятся и которые вы считаете подходящими для выполнения ваших задач. ИМХО PHP - не лучший язык по ряду причин, но, в конце концов, вы должны использовать то, что вам нравится и с чем вам хорошо. Лично я использую Haxe для своих проектов. Возможно, вы захотите попробовать. В конце концов, я думаю, вам следует попробовать множество языков и фреймворков, чтобы понять разные концепции. Большинство вещей, которые вы будете изучать, выходят за рамки конкретных языков и фреймворков, но вы можете изучить их, только очень хорошо изучив некоторые из них.

Прежде чем закончить, я хотел бы указать вам на мои 5 заповедей ;)

7
ответ дан 4 December 2019 в 12:57
поделиться

Здесь две цели. Решайте их по отдельности:

Построение больших сложных систем:

Большие сложные системы возникают в результате двух вещей:

  • Представления о каком-то продукте или услуге, которые полезный и привлекательный для большого рынка
  • Бизнес-план, который поможет с нуля реализовать свои видение

Достижение этого может означать партнерство с другими людьми. Ясно, ты интересуетесь технической стороной дела - в этом ваша сила. Возможно, вам придется найти других людей, которые разделяют ваше видение, чтобы помочь управлять нетехнической стороной дела. Это будет включать такие вещи, как привлечение капитала, продвижение и маркетинг. Каждый член вашей группы должен привнести другую силу ядра.

Как техническому руководителю, вам нужно хорошо разбираться в применении архитектура. Это не столько проблема с навыками программирования, сколько это понимание того, как можно использовать различные шаблоны и технологии проектирования для достижения Ваши цели. Изучите как можно больше фреймворков и шаблонов проектирования. Вам не нужно станьте экспертом по любому из них, пока не почувствуете сильные стороны и слабость каждого по отношению к приложению, которое вы ищете строить.

Развитие общих навыков CS

Теория никогда не устаревает. Получите сильный опыт в научной части вашей программа компьютерной инженерии. Пройдите курсы по теории языка, дискретной математике, разработка/анализ алгоритмов, компьютерная архитектура, архитектура приложений и т. д. Они сослужат вам хорошую службу до конца вашей карьеры.

Затем следует практическая сторона вопроса: какие языки, технологии и фреймворки следует изучить прямо сейчас. использовать свою карьеру (в надежде сделать что-то действительно большое). В этом смысле вы уже на правильном пути. Будьте любопытны, подвергайте себя как можно больше инструментов. Чем больше вещей вы знаете, тем легче учиться новые. Потратьте время, чтобы понять модель, на которой основан каждый инструмент, и то, как он похож на другие инструменты, которые вы использовали, но отличается от них.

Имейте в виду, что языки программирования - это всего лишь "инструменты торговли", а не сама торговля. Со временем вы будете найти новые инструменты и отказаться от других.

Собираем все воедино

Дайте волю своему воображению, чтобы придумать это «убойное приложение». Подружиться с люди, имеющие наборы навыков, дополняющие ваши собственные. Говорите и мечтайте о больших вещах вместе.

Работайте над развитием своих основных навыков CS.

Познакомьтесь с таким количеством различных инструментов и языков, с которыми вам удобно работать. Получить хорошее практическое знание только тех немногих, которые вы считаете наиболее полезными для того, что вы делаете в момент. На овладение каким-либо одним инструментом могут уйти годы, но пусть ваш текущие потребности будут вашим проводником. Будьте готовы к тому, что ваш набор технических инструментов со временем будет развиваться.

2
ответ дан 4 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

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