Ответы пользователя по тегу Программирование
  • Что делать если project manager идет на поводу в клиента?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Общее правило тут такое: сделать всё, что возможно самому сделать для решения проблемы, и если этого недостаточно, и проблема остаётся критичной, то надо менять место работы. Последнее - крайнее и очень нежелательное занятие, которое следует избегать. Оно всегда вызывает вопросы в профессионализме того, кто меняет место работы. Поэтому нужно сфокусироваться на первом.

    Тут надо сразу понять, что изменения требований, особенно в web-проектах - вещь неизбежная и даже желательная. Желательная, потому что изменения требований могут и должны приносить прибыль для студии. Неизбежная, потому что всё в мире меняется очень стремительно, и www - место, где изменения происходят чаще и масштабнее, чем где-либо. Требовать стабильность требований к web-проектам - очень неправильно, если не сказать наивно.

    Отсюда вопрос номер один: как архитектура Ваших решений учитывает природу требований к тем проектам, которыми занимается студия? Возможно, технические решения слишком жёсткие, что и оборачивается головной болью для разработчиков. Статья, развивающая тему: "Я разработчик, а не юрист". И мои соображения: "Убедитесь, что вы делаете свою работу, прежде чем....
    Ответ написан
  • Правда ли, что в MS SQL Server создавать временные таблицы лучше вне транзакции?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Есть тонкость - распределённые транзакции. В MS SQL Server происходит эскалация транзакции даже в том случае, если в рамках транзакции идёт обращение к двум разным БД на одном сервере. Поскольку временные таблицы создаются в отдельной БД, при некоторых условиях могут возникать проблемы с MSDTC. Эскалация была значительной проблемой в 2005-й версии, но мы не так давно сталкивались с ней на 2008-й.
    Ответ написан
    4 комментария
  • Как развиваться, если команда слабая?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Вот Вы только ВУЗ закончили, и уже жалуетесь, что разработчики вокруг слабые. Что ж Вы говорить будете, когда архитектором станете? :(

    Это я к тому, что (1) любое развитие начинается с личности, а не с команды, и (2) если Вы хотите достичь вершин, то работа с теми, кто слабее Вас, должна стать неотъемлемой частью Вашего бытия. И Вы должны быть этого достойны. Никто не хочет иметь в команде чванливого супергероя, но мудрый и терпеливый наставник, способный вовремя подставить плечо более слабому - это очень важная роль. Так что, если действительно хотите развиваться, в первую очередь займитесь своими личными качествами. Поверьте, они часто более важны, чем умение писать оптимальный код.

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


    Ну и наверняка ещё что-то можно в этот список добавить. Было бы желание. А вот жаловаться - бросьте!
    Ответ написан
    2 комментария
  • С чего начать писать тех.задание?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Смотрите ГОСТ 34.602-89 "ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА СОЗДАНИЕ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ" - www.rugost.com/index.php?option=com_content&view=a...
    Для начала, прочтите статейку "Документирование по ГОСТ 34* — это просто".
    Шаблон ТЗ - www.rugost.com/index.php?option=com_content&view=a...
    Комментарии - it-gost.ru/content/view/101/51
    Ответ написан
    Комментировать
  • Как точно подсчитать время создания программного продукта?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Есть такая вещь, называемая фокус-фактором. Фокус-фактор показывает, какую долю времени в среднем тратит работник на действительно полезную деятельность. В самых лучших случаях значение этого коэффициента достигает 0,7, но можно считать хорошим результатом, если фокус-фактор достигает 0,6. В средних командах он близок к 0,55 (отсюда и "принцип умножения на 2").

    Это очень важно учитывать при планировании работ. Так, если на выполнение некоторой задачи требуется 4 "идеальных" часа, когда исполнителя никто не отвлекает, то при фокус-факторе 0,6 он затратит на эту задачу не 4, а без малого 7 часов. Чувствуете разницу?

    При этом у каждого члена команды фокус-фактор свой. И, если сроки критичны, нужно в планировании учитывать не среднее значение по больнице, а значение конкретных исполнителей конкретных задач. Но этого никто не делает.
    Ответ написан
    1 комментарий
  • Как написать программу на .Net 4.5 для windowx XP?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Вариантов много. По всей видимости, старая версия уже включала компоненты для .NET Framework 4. (1) Не переходите на новые компоненты только ради поддержки .NET 4.5, используйте старые версии. Либо (2) используйте конфигурацию для биндинга нужной версии компонентов. Либо (3) сделайте динамическую компоновку (плагинами, например), зависящую от используемой ОС. Либо (4) сделайте установщик, который будет ставить версии компонентов, зависящие от ОС. (5) Компоненты можно вынести в отдельное программное средство (сервис, консольное приложение), сделать такое средство специально для XP, и использовать редакцию либо для Win7/8/10, либо для XP... Вот уже 5 решений. Не считая принудительного перевода пользователей на Win7 ;)
    Короче, проблема решаемая. Но придётся немного попотеть.
    Ответ написан
    Комментировать
  • Передача параметров в конструктор аргументами функции или массивом?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Массив используется там, где нужна гибкость. Т.е. там, где разработчик не может предугадать, сколько параметров придёт при вызове метода, какие типы данных будут иметь передаваемые значения и т.п. За такую гибкость разработчик должен платить, создавая код обработки массива, что может быть весьма нетривиальной задачей. Кроме трудоёмкости и сложности кода получите ещё и потерю производительности. Излишней гибкости следует избегать.

    В общем случае лучше передавать либо несколько параметров, либо строго типизированный объект с заданными полями. Причём при передаче большого количества параметров тоже могут быть просадки с производительностью.
    Ответ написан
  • Какой самый лучший путь развития до архитектора ПО?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Architecture Skills Framework
    Грубый перевод таблиц был здесь: Что должен знать и уметь архитектор
    Ответ написан
    Комментировать
  • Как вы организуете разработку сложного продукта?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    В целом, похоже, что у вас в команде есть несколько проблем.
    Во-первых, либо есть проблемы с архитектурой, либо неверно составлен план разработки. Это может быть связано с игнорированием ограничений agile. Мне кажется, что присутствует и то, и другое.
    Во-вторых, программисты не сильно мотивированы писать качественный код, либо не имеют возможности этого делать. Возможно, у них не складывается модель предметной области, и, исправляя одну бяку, они тут же вносят новую. Есть смысл подумать о специализации конкретных разработчиков (или небольших групп разработчиков) на конкретных направлениях. Попробуйте разбить крупный проект на несколько отдельных "изолированных" проектов, в каждом из которых следует рассматривать смежные подпроекты как внешние системы. Каждому подпроекту нужна своя команда. Это сделает проект управляемым и понятным всем участникам.
    А дальше, соглашусь с Сергей Протько , "Тесты, TDD, рефакторинг, SOLID".
    Ответ написан
    3 комментария
  • Как организовать обмен данными между приложениями?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    1. Не создавать зоопарк. Ни при каких условиях.
    2. Не пытаться найти универсальное решение для всего на свете. Такое решение всегда избыточно, неповоротливо, несопровождаемо, а, главное, никому не понятно. Исходите из конкретных требований и применяйте архитектурные паттерны.
    3. Существует много общепринятых технологий обмена данными между компьютерами или между процессами на одном компьютере. Можно реализовать сетевое взаимодействие на низком уровне. Можно использовать уже готовые решения (SOAP, например). Можно использовать посредников (иногда это единственный способ избавиться от влияния зоопарка, созданного другими людьми). Причём посредники тоже бывают разные. Опять-таки, смотрите конкретные требования и паттерны.
    Ответ написан
    Комментировать
  • Какое ПО помогает в проектировании приложений?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Всё зависит от Ваших конкретных нужд.

    Судя по тому, что Вас обеспечили только бумагой, руководство и заказчики не особо требовательны. Поэтому можно воспользоваться любым редактором, умеющим рисовать схемы. Например, Visio. Тот же UML там поддерживается, плюс можно доставить наборы фигур, например, под нотацию Archimate.

    Есть более профессиональные инструменты. Sparx EnterpriseArchitect, например.

    В некоторых средах разработки есть расширения, позволяющие делать реверс-инжиниринг кода. Вы можете автоматически построить диаграммы классов существующего кода, например.
    Ответ написан
    Комментировать
  • Какие можно использовать встраиваемые интерпретаторы при разработке .net?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Как вариант, например, для JavaScript, JScript, VBScript:
    "Использование Jint для динамического выполнения кода" (m-i-kuznetsov.livejournal.com/16260.html)
    "Использование MS Script Control для динамического выполнения кода" (m-i-kuznetsov.livejournal.com/14114.html)
    И да, DLR, как сказано AxisPod
    Ответ написан
    Комментировать
  • Изучаю java,загвоздка состоит в том,куда двигаться дальше?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Но чтобы устроится на работу junior developer мне нужно сделать хотя бы два проекта


    В чём проблема? Возьмите и сделайте. Что-то суперсерьёзное делать не нужно. Надо лишь показать, что можете работать со средой разработки и знаете основы языка Java. От стажёра большего не требуется.

    В этом состоит загвоздка,проект без помощи я еще не могу создать,да и не знаю толком какой проект сделать.


    А вот эти навыки Вы должны продемонстрировать. Достаточно бесплатных курсов, чтобы получить первичные навыки. Например, этот. Тщательно воспроизведите примеры.

    Неплохая среда разработки Eclipse (https://eclipse.org/downloads/packages/eclipse-ide...). Есть книги на русском, есть статьи и документация.
    Ответ написан
    1 комментарий
  • Хорошие курсы C# для начинающих?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Если в Москве и платно, то идите на курсы ЦКО "Специалист" при МВТУ им. Баумана. Официальные курсы Microsoft. Например, www.specialist.ru/course/m20483
    Получите официальный диплом гособразца и сертификат Microsoft.

    Если хотите бесплатные и on-line, то идите в ИНТУИТ: www.intuit.ru
    Получите сертификат ИНТУИТ.
    Ответ написан
    7 комментариев
  • Литература которую обязан прочитать каждый программист?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Если .NET, то:

    Стив Макконнелл. Совершенный код. Практическое руководство по разработке программного обеспечения. - Пер. с англ. - СПб.: Питер, 2005.

    Джеффри Рихтер. CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#. 3-е издание. - СПб.: Питер, 2012.

    А.В. Макаров, С.Ю. Скоробогатов, А.М. Чеповский. Common Intermediate Language и системное программирование в Microsoft .NET. 2-е издание. - М.: Интернет-Университет Информационных Технологий, 2007.

    Л. Константайн, Л. Локвуд. Разработка программного обеспечения. - Пер. с англ. - СПб.: Питер, 2004
    Ответ написан
  • Перспективы Delphi?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Я писал о проблеме Delphi ещё в 2009-м году. Сам много разрабатывал на нём, но уже тогда стало понятно, что этот язык умирает. Подробнее можете посмотреть здесь или здесь, перепечатывать не буду. С Embarcadero связан до сих пор, но ниши для него в моих коммерческих проектах нет и не предвидится.
    Ответ написан
    Комментировать
  • Как правильно развиваться в программировании?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Даю пункты:
    1. Понять, кем надо стать лет через 5.
    2. Понять основные компетенции, которые к тому моменту нужно иметь.
    3. Расставить приоритеты освоения компетенций.
    4. Вкладывать время, силы и деньги в получение нужных компетенций.
    5. Не реже раза в год пересматривать цель и список компетенций.

    У Вас есть опыт работы с C++. Отсюда можно пойти в системное программирование, в прикладное программирование, в архитектуру ПО, в аналитику, в управление. Решите для себя, что Вам ближе.

    К сожалению, более подробно план не дам. Его детализация зависит от Вашей цели.
    Ответ написан
    Комментировать
  • Вопрос тем, кто недавно читал книгу Боба Мартина - "методика гибкой разработки на c#".?

    max-kuznetsov
    @max-kuznetsov
    Главный IT-архитектор
    Ищите реализацию метода Change(e); Этот метод производит изменения и сохраняет результат.
    Ответ написан