Espleth: Ну дак и вперед! Что останавливает написать какой-нибудь велосипед? Мощный удар по самолюбию, но в то же время шикарный опыт. Вас интересует геймдев? Вот и напишите что-нибудь типа Plants vs Zombie :) Почитайте gameprogrammingpatterns.com и "Приемы объектно-ориентированного проектирования. Паттерны проектирования".
Espleth: Как насчет изучить Python+Django или Ruby+RoR + что нибудь по JavaScript?
Это спокойно совмещается с учебой, и можно будет брать всякую мелочь на подработку. Вряд ли вы сейчас найдете что-то хорошее в плане работы. С другой стороны после года самостоятельного копания уже можно себя продать не как недоджуна, а как нормального джуниора.
Flie: Ну к сожалению ничего не могу конкретного посоветовать :-) С мобильной разработкой не знаком.
Поэтому общие советы - аутсорс хороший, если использует best practice, покрывает код тестами (100% что-то есть под Obj-C), использует системы контроля версий, соблюдает единый кодстайл. Москва + Obj-C (требования AppStore) все же наводит меня на мысль, что аутсорсеры профессионалы :-). Возможно ваше начальство хочет чтобы вы стали своего рода посредником (или переводчиком) между аутсорсерами и требованиями бизнеса, раз вы идинственный программист (уточните ожидания начальства).
Flie: Первый критерий - умение общаться. Профессионалы обычно умеют общаться с людьми (Исключения бывают и достаточно часто, но все же чем профессиональнее человек, тем больше вероятность что он корректен в разговоре). Начните с вопроса про исходники, как я писал выше. Если вас "красиво пошлют", то скорее всего у них есть опыт работы, но они не доверяют вашей компании. Но в этой ситуации вы оказываетесь в немного странном положении. Я бы в таком случае уволился.
Когда получите исходники - оцените их качество с позиции своего опыта. Но учтите, что при небольшом опыте вам некоторые вещи могут казаться "неправильными", а на самом деле они учитывают тонкости (чем ближе язык к железу (я имею ввиду C++), тем больше таких вещей бывает).
И я бы хотел узнать город в котором вы работаете и язык проекта. Тогда могу повысить/понизить рекомендацию уволиться прямо сейчас и подсказать по инфраструктуре что модно сделать
Flie: По идее должны предоставить. Но русский бизнес суров, поэтому они могут не показывать вам код из за страха что им не заплатят, или из за желания привязать вас к себе и доить на постоянной основе. Если откажут, то можете в разговоре прямо спросить: "Вы не даете код потому что боитесь, что вам не заплатят?". И если ответят да, то лучше подумать, стоит ли работать в компании, аутсорсеры которой боятся что она их кинет.
Вообще "большое корпоративное приложение" и один программист без опыта наводят на мысль, что вы все таки зря устроились. Хотя бывает и так что просто работала толпа идиотов и небольшая утилита стала "корпоративным приложением"
Flie: Есть программа astyle, достаточно просто разобраться. Кушает C++, С# и Java и нормализует код в соответствии с заданными правилами форматирования
Уважаемый tuccar. Я лично вам рекомендую прекратить спрашивать и выбрать абсолютно любой язык, хоть Basic, и наконец начать писать свой первый hello world. А то я начинаю подозревать что вы тролль.
Я не пробовал программировать на Rust, только читал статьи. Но после моих извращений с shared_ptr, работа с памятью в Rust кажется очень крутой. Можете прочитать статьи на хабре, если раньше не видели: habrahabr.ru/post/239067habrahabr.ru/post/225003 . На данный момент главная проблема Rust как и любого молодого языка - отсутствие библиотек. При этом C++ активно развивается и может вполне составить конкуренцию Rust. Про Go ничего сказать не могу, не интересовался
С другой стороны, если вам интересна работа с низкоуровневыми системами, микроконтрорллерами, и нет страха перед постоянной отладкой и выстрелами в ногу, то Си для вас будет лучщим выбором.
В C есть все :) Даже ООП (stackoverflow.com/questions/351733/can-you-write-o... Но это слишком сложно. То есть, если в том же питоне или паскале при реализации списка надо думать о том как устроен список, то в С надо думать о том как устроен список и о том как это ложится в память.
Я пытался учить С++ на первом курсе, и, честно, просто не вкурил в указатели и работу с памятью после "халявы" паскаля. Курсе на 5 (после ассемблера) до меня наконец то дошло как оно все работает и проблем не возникло. Поэтому, я считаю, что С (или С++) может быть слишком сложным как первый язык, но программист все-таки должен его знать.
Паскаль хорош, но его время прошло. Сейчас принято подтянуть библиотеку через менеджер пакетов, написать модуль, который подойдет для консоли, GUI и сайта и сделать простенькое Web приложение. На паскале это все тоже можно сделать, но времени это займет гораздо больше. Python более быстрый в плане разработки и более современный. Кроме того он во многом способствует выработке определенного стиля.
delphi-вакансии: как правило какие-то примитивные программы для работы с БД магазина или склада. Зачастую низкие требовани и низкие зарплаты. Я не вижу особых перспектив для Pascal/Delphi программиста. В то же время C# покрывает область вакансий с низким опытом, и достаточно серьезные вакансии типа Контура (да, я из Екатеринбурга :). Вот правда до уровня Google и Amazon уже не дотягивает, там рулит Java.
Я изучал Pascal на первом курсе и с помощью него освоил основы программирования. Но теперь у меня есть мертвый инструмент. Python я изучал для себя и теперь постоянно пишу на нем какую то мелочь, типа stub-веб сервера, который отдает нужный статус на любой запрос. На паскале такого за 5 минут не напишешь. Если бы я начал с питона, у меня были бы те же знания, но не было бы мертвого инструмента.
Из алгоритмов в первую очередь надо вынести понятие вычислительной сложности :) Все остальное в основном сделано за нас сотни раз в сотнях свободных и не очень библиотек. В продакшне умение разобраться в чужом коде оказывается ценнее, чем умение писать крутые алгоритмы (если ты не работаешь в гугле, конечно) :) Впрочем это исключительно мое мнение.
Я бы не стал так категорично определяться относительно C++ и андроид :) жизнь штука сложная. Я в институте учил C++, но потом оказалось, что в моем городе вакансии C++ либо совсем термоядерные, либо C++ для микроконтроллеров. В итоге я стал подтягивать C# и Java. Определенный опыт C++ (и немного ассемблера) позволил быстрее понять как все устроено. Потом узнал про TDD, паттерны, наконец то научился пользоваться гитом, попробовал питон.
Я бы порекомендовал в C++ двигаться в сторону работы с памятью (умные указатели) и попробовать стандартные библиотеки stl, boost или Qt, если вам оно больше нравится. Более глубокое изучение C++ стоит времени и, наверное, не оправдано в данный момент.
На Java можно изучить паттерны проектирования и оттачивать стиль ("Банда четырех" или обзор паттернов на каком нибудь блоге, для стиля можно попробовать Макконела "Совершенный Код"). Поначалу будет желание использовать паттерны по поводу и без повода :) Это пройдет с опытом. Java легко заменяется на C# (для мобилки с прицелом на Xamarin, который, увы, безумно дорого стоит)
Также попробуйте TDD (пожалуй самое полезное из всего) и любую систему контроля версий (mercurial проще для понимания, git мощнее и более распространен). Плюс изучить основы SQL (хватит нескольких недель копания в принципах и простых запросах). Если останется время, можно покопаться в Python или в другом скриптовом языке (это для всякой утильной работы и на черный день, если придется делать недорогие сайты). Тут пожалуй больше чем на полгода, но это все то, что лично мне пригодилось в работе
Судя по новостям вполне возможно, что в некоторых автомобилях будет крутиться какая-то модификация андроида. Так что мобильная разработка может быть очень кстати )