Ответы пользователя по тегу Программирование
  • В чём разница указателей и ссылок?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    В том и разница. В синтаксисе.
    С указателями еще можно всякой адресной арифметикой заниматься.

    Мне как программирующем на C# с ссылками работать удобнее, чем разбирать зубодробительный синтаксис с указателями: лучше маленькие такие точечки, а не вот это вот все (*->&)
    Ответ написан
  • Как жить дальше?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    По моему мнению, ситуация вполне себе типичная. Это жизнь. Никто не будет водить вас за ручку по премудростям тех или иных технологий. Школы/институты закончились.

    Конечно, есть чисто софтверные компании, в которых много программистов, между которыми задачи параллелятся, налажен конвейер опыта: приходит джуниор, его прикрепляют к опытному старшему товарищу, а сверху за ними всеми приглядывает евангелист-архитектор со одухотворенным взглядом, который знает: как надо делать и как делать не надо.

    Но ведь у компании нет такой цели - обучить 15 программистов в год. Компания должна зарабатывать деньги.

    Если контора не чисто софтверная или просто небольшая, то смысл держать двух и более специалистов на одном направлении? Человека нанимают, чтобы он обустроил и поддерживал одну из сторон проекта. При этом он может почти не пересекаться по стеку технологий с другими участниками проекта. Обычно требуются работники работу работать. Программы сами по себе никому не нужны. Нужно решение каких-то проблем за адекватные деньги. Это может быть программа, сторонний сервис, нанятый специалист или что-то еще....

    Мне кажется, что первое, что нужно решить для себя в данной ситуации - это есть ли перспективы у вас в этой компании? Представьте: вот вы стали крутым спецом, теперь вы глубже понимаете то, что вы делаете и до кучи освоили соседние области знаний. Есть для вас место в этой компании за достойное вознаграждении? А то бывают разные случаи. Например бывает, что в фирме есть костяк из 6..10 специалистов не менявшийся последние 15 лет и текучка студентов. Или бывает что фирма насквозь пронизана блатом: вы поработаете 5 лет, а вам поставят начальником сына кого-то там сверху, только что закончившего институт. Или просто нет в фирме больших зарплат и доходов и не будет.

    А если вам не нравится инструментарий - выбирайте сами. Понятное дело, что есть бесплатные инструменты, есть платные, а есть сильно платные. Нужно найти свой инструмент. А еще есть кривые инструменты, но некоторые можно выпрямить....ну или загнуть под себя....
    Автоматизируйте рутину: тестирование, деплой, работу с версиями. Возможно ваши конфигурирования тоже можно автоматизировать.
    А "гуглить, изучать, набивать шишки" - это очень хорошо! А еще читать умные книжки. А еще изучать чужой код: хороший и плохой.

    По поводу зарплаты. Есть мнение, что чем чаще меняешь работу, тем быстрее растет зарплата. Достаточно спорное, по моему мнению, утверждение. Но, возможно, оно иногда и в зависимости от человека работает. Опять же мы говорим, что профессиональный рост, про интерес к работе, про комфорт в работе и если денег хватает...пока, то наверное стоит остаться...пока. Но часто жизнь диктует свои требования: в какой-то момент вопрос зарплаты станет приоритетнее и это будет уже совсем другая история.
    Ответ написан
  • Как называется такая конструкция в C#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Tom Nolane и flafy4 Геттеры и сеттеры нужны не только чтобы "выводить приватную переменную наружу".

    Если приватные переменные прячут в "приватной области видимости" значит это кому-нибудь нужно. Что мешает просто изменить модификатор доступа у поля сделав его доступным снаружи, чем городить какие-то геттеры/сеттеры?

    Есть куча более интересных применений геттеров и сеттеров, например:

    уведомить об изменении состояния объекта:
    string _StateValue;
    public string stateValue
    {
        get {return _StateValue; }
        set 
        {
            _StateValue = value;
            OnStateValueChanged(value); //этот метод генерирует событие на которое подписаны все кому интересно изменения этого поля, например при изменении поля могут по событию перерисовываться форма
        }
    }


    выполнить отложенную инициализацию поля, хотя есть и другие способы это сделать, например через Lazy:
    string _CaсhedValue = null;
    string cachedValue
    {
        get
        {
            if (_CachedValue == null)
            {
                _CachedValue = CreateValue(); //этот метод вычисляет значение
            }
            return _CachedValue; 
        }
    }


    вычисляемые свойства
    PointF _Start;
    PointF _Stop;
    PointF center 
    {
        get
        {
            return new PointF((_Start.X+_Stop.X)/2,(_Start.Y+_Stop.Y)/2);
        }
    }


    это только первое что в голову пришло...
    Ответ написан
  • Что делает техник-программист?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Когда-то тоже заинтересовался этим вопросом. Нашел такое мнение и успокоился на нем:
    В советское время ЭВМ были большие и требовали особого обслуживания. Загрузка перфокарт, текущее обслуживание, небольшой ремонт и т.д.
    Вот этим и занимался техник-программист. Что-то типа обслуживающего персонала у вычислительной машины со средне профессиональным образованием.
    А инженеры-программисты занимались почти наукой. Образование - высшее. И отношение было соответствующее.

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

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Есть яндекс.карты, яндекс-пробки...API-открыт.
    Можно поиграться на этом поле: построение маршрута, прогноз пробок, оптимизация светофоров.

    Еще интересная тема с математикой: колоризация ч/б изображений и видео. С подсказками, без подсказок, с автоматическим поиском подсказок в интернете (поиск изображений сходного сюжета, гугл вроде какой-то такой сервис предлагал).

    Обработка изображений со спутников. Мониторинг лесных, водных ресурсов (пожары/наводнения), динамика/прогноз.
    Ответ написан
  • Как найти все соседние клетки одинакового типа в двумерном массиве?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Представим, что двумерный массив - это граф, где каждая клетка - это узел. Данные узла: его координаты, цвет, массив ссылок на соседей, булево значение посещен/не посещен.

    Отметить все узлы непосещенными.
    На вход алгоритма подается узел графа.
    Процедура P:
    1. Выдать координаты входного узла.
    2. Пометить входной узел посещенным.
    3. Применить процедуру Р ко всем непосещенным соседям такого же цвета.

    Необязательно строить граф явно. Можно соседей получать непосредственно в процедуре Р. Для "посещен/не посещен" нужна какая то быстрая и компактная структура данных, в которую можно быстро записать координаты клетки и быстро проверить: записывались ли раньше какие-либо координаты.
    В простейшем случае - это булев двумерный массив того же размера, что и исходный. Но в зависимости от исходных данных и ограничений, другие способы могут быть более подходящими.
    Ответ написан
  • Как просто организовать Combobox в Propertygrid (c#)?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Например, у вас есть объект со свойством типа string и вы хотите чтобы через PropertyGrid можно было бы выбирать из выпадающего списка новое значение для этого свойства. Выглядит это приблизительно так:

    using System;
    using System.ComponentModel;
    
    public class MyClass
    {
        [TypeConverter(typeof(EnumConverter))]
        public string stringProperty {get; set;}
    
        public MyClass()
        {
            stringProperty = EnumConverter.ALT1;
        }
    
        class EnumConverter : TypeConverter
        {
            public const string ALT1 = "Альтернатива1";
            public const string ALT2 = "Альтернатива2";
            public const string ALT3 = "Альтернатива3";
    
            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)  {return true;  }
    
            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)   {return true;  }
    
            public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
            {
                return new StandardValuesCollection(new[] {ALT1, ALT2, ALT3 });
            }
        }
    }


    потом что-то типа:

    propertyGrid.SelectedObject = new MyClass();

    чтобы посмотреть что получилось
    P.S. Код не запускал. Поэтому могут быть мелкие помарочки. Пишите в комментарий, если что не получается или не понятно.
    P.P.S. Так то PropertyGrid мощнейший компонент. Может очень и очень многое. Но не больше =).
    Ответ написан
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    5 лет за компьютером занимаюсь кодингом + до этого 7,5 лет занимался за компьютером схемотехникой.

    Лишний вес появился, когда закончил институт, начал работать, женился, то есть когда стал более менее питаться регулярно и калорийно, бросил курить.

    В какой-то момент, когда вес перевалил через психологическую границу - понял, что пора что-то делать. Стал бегать по утрам и ограничил себя в еде. Минус мучное, минус явные жиры, минус сладкое, минус соки-газировки. После 20.00 не ел. Ел по пять раз в день по немногу.
    Итого за 3 месяца минус 13 кг. В организме легкость. Но заболели колени. Ударная нагрузка на колени при беге из-за избыточного веса, неправильной техники бега и, как потом выяснилось, плоскостопия. Перестал бегать, перешел на спортивный шаг.
    После год физкультурой не занимался и не особо следил за едой. Опять набрал 5...7 кг.
    Пошел в фитнес-клуб, где и занимаюсь до сих пор. Сейчас вес приблизительно такой же, как был до всех похудений, но, по ощущениям, набрал где-то 50 на 50 мышцы/жир. Живот ощутимый есть, но осанка хорошая. Отдышка не мучает. Сердечно-сосудистая система работает. Становая - 100кг, Присед - 100 кг, жим лежа - 80кг. Это не на раз, это рабочие. Последняя тренировка с гирей 16кг по наручному кардиомонитору: 1ч20м, ср.ЧСС 150, махЧСС190, ккал1200.

    Образ жизни кодер формирует себе сам. Он не обязательно сидячий. У меня двое коллег программистов в выходной устраивают себе велопокатушки на 70...80 км.
    А прогрессирующий лишний вес появляется когда количество поступающий с пищей калорий превышает количество используемых. Плюс качество поступающих калорий, конечно, тоже важно. Углеводы надо получать из каш (низки гликемический индекс), а не из булок. Больше белка. Контролируемо - жиры.
    А если питаешься не очень калорийно или от природы с метаболизмом повезло, но с физкультурой не дружишь, то все равно будет грозить фигура беременного кузнечика. Когда мышцы спины не развиты - собственный вес будет скручивать в сутулую закорючку. Но скелетно-мышечная система - это не сумма отдельных мышц. Все мышцы/кости друг с другом связаны. Тут перекачаешь - тебя мышечный дисбаланс в другую сторону свернет. В идеале надо гармонично заниматься. И осознанно.

    В общем и целом, нужна физнагрузка, мы хоть в современном мире много чего достигли: много еды в магазине, медицина, автомобили. Эволюционно мы все еще не готовы к этому. Нам бы надо двигаться: бегать за оленями, валить мамонтов, а мы сидим в своих пещерах и толстеем. Надо этот дисбаланс между научно-техническим прогрессом и своей эволюцией нивелировать. Это жизненная необходимость. Но можно, конечно, и в 50 кони двинуть от сердечного приступа: тут вопрос выбора.
    Ответ написан
  • Как реализовать систему навигации мобильного робота?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Так или иначе роботу нужно выделить особенности его конкретного местоположения и связать их с координатами. Для этого нужна дополнительная информация о поле.
    Дополнительная информация закладывается либо с существующего поля ("забор", "столбы", "маяки", рисунок на поле или заборе),
    либо создается дополнительно специально (особый рисунок на поле или заборе, активные ультразвуковые маяки, некое интерференционное ультразвуковое поле особое к каждой точке).

    Вообще, исторические и бытовые методы геопозиционирования кладезь идей для вашего вопроса. =)
    Ответ написан
  • Что написать на C#?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Когда коту нечего делать, он "занимается гигиеной", когда программисту нечего делать - он занимается рефакторингом.
    Ответ написан
  • Какой язык программирования изучить новичку для написания GUI приложений?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    В свое время когда я начинал программировать с QBasic`а и TurboPascal`a, особых вариантов куда дальше развиваться не было: С++. Реальный язык для решения реальных задач.

    Для работы с GUI в Win логичным продолжением было Delphi и С++Builder. MFC от M$ был настолько корявый (по моему мнению), что даже смотреть в его сторону не хотелось.

    Затем меня надолго унесло в сторону микроконтроллеров и там С/C++ мне помог в работе наиболее полно: быстрые программы, полный контроль над памятью - то, что нужно.

    Потом, мне опять понадобился GUI. Как раз .NET и С# к этому моменту поборол свои детские болезни. С# мне показался очень цельным языком и легким в обучении. С С# я наиболее полно разобрался с ООП (в С++ я с ООП как-то плавал: не складывалась цельная картина). Сейчас C# продолжает развиваться. Это современный язык. Есть много задач, для которых он идеальный инструмент. Впрочем С++ не отстает и современные спецификации тоже включают в себя практически все новинки. Но все равно С++ сложнее: есть куча способов запнуться на ровном (как минимум с точки зрения С#) месте, муторная работа с памятью.

    Сейчас при работе .NET с С# иногда возникает необходимость работать со старыми библиотеками, написанными на С++. В .NET есть такой язык как С++/CLR, который с одной стороны умеет работать с .NET, а с другой стороны спокойно работает с "чистым" С++ и становится спасительным мостиком в таких случаях. Кроме того, пару раз мне приходилось реализовывать в С++/CLR сложные, с вычислительной точки зрения, задачи. Сейчас правда вижу, что можно тоже самое было сделать не выходя за рамки С#, но в С++ это получилось все равно сделать проще.

    В общем, в моем случае мне сильно помогло, что я начинал с С++. Но работаю я все же в основном в C#. Как бы не получилось так, что начав с С#, как с более простого, вашему знакомому будет потом сложновато в редких задачах, где понадобиться навыки работы в С++.

    Совет, наверное, стоит сделать такой: изучайте С# для GUI, попробуйте для развлечения поковыряться с микроконтроллерами: там где реально нужно будет самому на С++ писать. Можно, например, для ардуино на с++ писать: и паять не нужно ничего, и стоит недорого. Не скетчи, а именно разобраться как с С++ работать.

    А еще смотрите другие языки: JavaScript, Python, функциональное что-нибудь. Главное чтоб мозги не костенели в какой-нибудь одной парадигме, а могли смотреть на задачу максимально широко.
    Ответ написан
  • Что за должность такая, архитектор?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Про веб знаю чуть меньше, чем больше, но в целом...:

    Большая сложная система требует вдумчивого подхода при разработке, иначе:
    во-первых, она никогда не будет реализована;
    во-вторых, в ней сложно будет искать и исправлять ошибки;
    в-третьих, ее сложно будет дорабатывать, добавлять новый функционал.

    Все это в итоге удорожает/замедляет процесс разработки.

    Поэтому, подход "Некогда думать - надо код кодить" не работает или работает плохо. Когда проект большой роль "думать" выпадает отдельному человеку, которого называют "архитектор".

    Архитектор анализирует общесистемные требования, разделяет систему на подсистемы и модули, определяет интерфейсы взаимодействия систем и модулей и определяет требования для подсистем и модулей.

    Еще по идее он должен знать про паттерны проектирования, uml, idef.
    А еще он должен иметь опыт программирования, иначе будет продуцировать "ересь" и его никто слушать не будет.
    Ответ написан
  • Как реализовать скелетную модель?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Мне кажется, такого интерфейса для базового элемента достаточно:

    interface IBone 
    {
        float angle; // in radians
        float length;
    
        IEnumerable<IBone> children;
    }


    Из соображений оптимизации и исключения всяких тригонометрий можно хранить не угол и длину, а смещение по Х и смещение по Y, хотя в полярной системе координат по мне так наглядней.

    При необходимости рисования скелета делаем так:

    void DrawBone(Graphics inGraphics, PointF inPosition, IBone inBone)
    {
        var boneEnd = inPosition + new SizeF((float)(inBone.length * Math.Cos(inBone.angle)), 
                                             (float)(inBone.length * Math.Sin(inBone.angle)));
    
        inGraphics.DrawLine(Pens.Black, inPosition, boneEnd);
    
        foreach (var next in inBone.children)
        {
            DrawBone(inGraphics, boneEnd, next);
        }
    }
    Ответ написан
  • Какая разница между параллельным и многопоточным программированием?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    При многопоточном программировании имеется несколько потоков, которые выполняют разные "программы", взаимодействующие друг с другом. Например, поток пользовательского интерфейса, поток вычислений, поток обработки ввода/вывода. Многопоточное программирование позволяет упростить (при адекватном подходе) архитектуру программы, но требует отдельных навыков при проектировании и отладке.

    Параллельное программирование применяется для численных расчетов, или, например, в компьютерной графике. В этом случае "программа" одна, данные разные. Использование конвейеризации и большого количества вычислительных ядер позволяет получить значительный прирост в скорости вычислений.
    Ответ написан
  • Как создавать качественый код в 3-4-5 раз быстрей?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    В общем случае нужно знать и уметь применять правильные структуры и алгоритмы и писать поддерживаемый код.

    Многое зависит от сложности программы. Для простой программы действительно быстрый набор и короткие названия переменных что-то дадут. Но простые программы никому не нужны.

    В сложных программа на скорость разработки влияет ее архитектура.
    Если программа "красивая", модульная, слабо связанная, то добавить в нее очередную фичу из ТЗ дело недолгое.
    Если это тугой клубок спагетти, то время реализации может приблизится к бесконечности.

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

    Итого: алгоритмы и структуры, паттерны проектирования, слабо связанный тестируемый читаемый код, тесты, внедрение зависимостей, git + git-flow, знание надежных библиотек и фреймворков и умение их применять.

    Макконнелл. Совершенный код.

    Симан. Внедрение зависимостей с .NET

    Банда четырех. Паттерны проектирования.

    P.S. Не помню точно, может как раз у Макконнелла сказано, что программист на работу непосредственно с кодом тратит 20% времени. Остальные 80% заняты обдумыванием.
    Так что логичнее тренировать голову, а не руки.
    Ответ написан
  • Переход с C# на C++?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    В с++ больше свободы....в нем вы можете написать наделать кучу ошибок на пустом месте.....если хорошо знать с# и следовать этому пути/стилю в с++, то в сходных задачах особой разницы нет, даже может хорошо что начали с с#....ну, возможно, подисциплинированнее нужно быть.
    Но есть задачи специфичные для с++: низкоуровневое программирование, работа с памятью, указатели. Тут другой мир совсем....
    Ответ написан
  • Программирование для детей - что и как делать?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    О...9 лет. 6 класс. Я в этом возрасте в спектруме какие-то штуки набирал/запускал, а в школе нам про бейсик рассказывали на укнц и кубейсик на 286, а в седьмом классе уже турбопаскаль начали.
    Но это давно все было. Сейчас надо про ооп что-то. Все говорят что питон самый лучший язык для начала обучения программированию. А я скажу, что с# тоже довольно неплох в этой роли. Я начинал изучать ооп через с++, но шло очень туго. Через какое-то время стал смотреть с# и все стало как то киристально ясно. Может правда это мой персональный путь с учетом школьной базы с бейсиками и паскалями, но все же то же самое школьное можно делать с помощью с#.
    В школе проходили базовые понятия программирования: массивы, циклы, ветвления, подпрограммы, рекурсии, структуры, деревья. Базовые алгоритмы: сортировка, поиск. Без этого конечно никак. Сейчас добавляем ооп, ui и лучше сразу тестирование в каком то виде. Отладкой так и так придется позаниматься. В какой то момент когда набьются шишки можно познакомить с git'ом (через год).
    Все это лучше изучать через небольшие проекты.
    Вот как то так я бы себя молодого учил будь у меня такая возможность =)
    Ответ написан
  • Правильный сон при умственных нагрузках - как правильно спать?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Читал где-то, что в зависимости от возраста человеку необходимо разное количество времени на сон. Ребенку от 9 часов, пожилым и 4х часов достаточно.
    Кроме того, важно еще и качество сна. При свете дня и шуме газонокосилки за окном сон не даст то, что он должен дать. Это связано с выработкой мелатонина и глубиной сна. Плотные шторы и, возможно, беруши должны решить эту проблему.
    Это актуально сейчас особенно, когда часовые пояса туда/сюда передвигали и сейчас в 4-5 утра летом уже светло. (По Екатеринбургу сужу).
    Сам стараюсь в будни спать по 6 часов (после фитнес-тренировок больше), в выходные 8 часов. В любом случае не больше 8 часов, а то уже голова начинает болеть, если больше.
    Ответ написан
  • Как всё успевать и не быть роботом?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    Не бывает правильных ответов на такие вопросы.
    Когда мы учимся в школе у нас все получается: и пятерки, и петь в хоре и сольно, и рисовать, и лобзиком, и мячик в корзину попадает.
    А чем дальше в жизнь, тем чаще приходится делать выбор приоритетного и отбрасывать мешающее.

    А по вашим пунктам:
    1. Работа 8 часов....допустим....на начальном этапе.
    2. Спать 8 часов это конечно роскошь. 6 часов качественного сна в темноте и тишине должно хватать. Спортсмены, конечно, должны больше спать. Мышцам нужно восстановление. Но мы тут не спорт обсуждаем =)
    3. Готовка рано или поздно оптимизируется. Кроме того, мультиварка прекрасно справляется с кашами на завтрак. Готовка, ужина в виде творога или овощей тоже не занимает много времени. Электрическая духовка почти сама справляется с мясом. Плюс витаминные комплексы (без них никак, сам явно заметил разницу: без витаминов моих 6 часов сна мало, с витаминами явно бодрее). Ну и кофе раз в день утром не вредно. Кофеварка-автомат готовит сама. Плюс яблоко/банан для перекуса. Закупка продуктов раз неделю экономит время.
    4. Не спорт, а физкультура/фитнес. На спорт надо жизнь класть, иначе это не спорт, а название одно. А физкультура в тренажорном зале по 1,5...2 часа через день вполне доступно. У кроссфитеров вообще не больше часа тренировка получается. 30 минут тренировка+10 минут разминка+10 минут заминка+переодевания. Это все без фанатизма. Если задача накачать банки или жать от груди 150кг, то это уже спорт. Другие задачи. Другое количество тренировок. Тут логичнее тренером работать, чем программистом.
    5. Английский по идее должен в итоге все меньше и меньше времени занимать. А профессиональное самообразование. Мне кажется мало на него час-два в день. По мне так лучше день на него выделить, чтоб не отвлекаясь глубже вникать.
    6. Читал статью. То ли про ученых совершивших открытие, то ли про нобелевских лауреатов, а может просто про успешных людей, не помню. Но смысл такой: успешных люде довольно явно можно разделить на две группы: первые достигли успеха в молодости и скорее всего по удаче, то есть совокупность личных качеств плюс удачное время/место плюс удачная идея, вторые уже в зрелом возрасте, то есть сильные профессионалы вложили все свои навыки знания в нишу, которую они увидели своим профессиональным взглядом. Я думаю может стоит повременить со своим проектом и уделить скажем 5 лет на развитие профессиональных навыков/знаний/способностей, потому как на удачу полагаться гарантии успеха никакой, а силы распыляются.
    Ответ написан