Саморазвитие — очень важная часть жизненного пути любого человека. Руководствуясь данным принципом, я решил запустить новый проект, в рамках которого буду активно расширять собственные навыки, рассказывая вам о том, какие трудности я встречу на своем пути и о том, чего смог достичь на каждом из этапов. Заинтригованы? Тогда добро пожаловать в подкат!
Для начала, естественно, стоит обозначить цель, которую я хочу преследовать. На первом этапе, который я для себя запланировал, она будет звучать следующим образом: научиться писать приложения под Android. Для простоты будем считать, что делаю я это с нуля.
Данная тема меня довольно давно интересует, да и навык написания приложений точно не будет лишним в моей дальнейшей карьере.
Большим майлстоуном, после которого я смогу считать первую стадию проекта успешно завершенной, будет написание приложения, которое лично мне будет нравится. Для начала я вряд ли буду браться за что-то уникальное, а скорее постараюсь воспроизвести функциональность уже существующего софта, оставив наполеоновские планы по захвату Google Play собственной гениальностью на то время, когда достаточно отточу мастерство.
Как я уже говорил, для удобства множно считать, что учиться программировать я начинаю с нуля, хотя на самом деле это не совсем так. В связи с этим, наверное, стоит немного рассказать о том, что я ужу знаю в начале своего пути.
С программированием я познакомился еще во время получения среднего образования. Тогда это был Turbo Pascal и Delphi. Школьная программа была не сильно углубленной, справлялся я с ней хорошо, даже весьма успешно участвовал в олимпиадах по информатике. Самое сложное, что я написал — это игра бильярд-американка с простенькой самописной физикой и интерфейсом. К сожалению, исходники не сохранились.
Следующая графа была уже в университете, где я учил Python. В основном я писал какие-то не особо требовательные к коду физические симуляции. Сложность была не в коде, а в том, для чего он использовался.
В общем, какое-то понимание алгоритмов и даже базовое представление об ООП у меня есть, но так как класифицировать его каким-то понятным образом крайне тяжело, для простоты можно считать, что учу я все с нуля.
Ближайший промежуточный пункт обозначен, а это значит что теперь нужно продумать как я буду к нему идти. Для начала, само собой, надо будет собрать список литературы и прочих обучающих материалов, которые я буду использовать. По ходу своего прогресса я буду рассказывать о том, что выучил, из каких источников почерпнул знания, что я посчитал полезным, а что не очень, etc.
Таким образом, помимо достижения собственных целей (научиться кодить) я буду делиться опытом с вами. Каждую неделю я буду выпускать статью здесь, на кеддре, где буду рассказывать об итогах отчетного периода. Этим я хочу показать на своем примере тот путь, который нужно пройти, чтобы стать программистом под Android. Надеюсь, что он станет полезным для тех, кто, как и я, задумывался о получении навыков коддинга, но все не решался и не знал с чего начать.
Сразу хочу отметить, что данное занятие у меня будет проходить не очень быстро. Загруженность моя довольно велика, и уделять много времени собственному обучению у меня нет возможности. Тем не менее, я приложу максимум усилий, чтобы каждую неделю мне было о чем рассказать.
Помимо того, что в статьях я буду делиться собственным опытом и рассказывать о пройденном пути, я приветствую любые полезные советы, которые вы можете писать в комментариях. Задавать вопросы можно там же, буду очень стараться отвечать на все.
Следить за проектом вы можете здесь, на кеддре, где еженедельно будут выходить отчеты. Но если вы хотите больше подробностей о ежедневном продвижении, то подписывайтесь на мой твиттер, где я буду рассказывать о проекте с хэштегом #codder.
Я искренне надеюсь, что с помощью данного проекта смогу не только сам чем-то научиться, но и помочь собственным примером тем, кто будет проходить этот же путь и после меня.
ИЗБАВЛЯЕТСЯ от НИКОТИНОВОЙ и АЛКОГОЛЬНОЙ ЗАВИСИМОСТИ теперь проще простого и всего за 2 дня! Вот почитайте о моих успехах, и у вас получится!– http://neozblog.gu.ma
Автор обращайся, думаю смогу помочь!
Дуже хороший задум. Читаете мої думки та мабуть думки багатьох фоловерів. Повністю підтримую та буду слідкувати за всіма новинами пов’язаними з цим проектом !..
Абсолютно одобряю подобные инициативы! Очень круто, когда люди развиваются.
В качестве результирующего приложения могу поддержать идею НОРМАЛЬНОГО приложения komandda (для всех сайтов) для android — и полезно и достаточно интересно в реализации.
От себя добавлю, что особо не вникайте в советы всяких умников советчиков, для каждого человека подход к обучения индивидуален. Кому-то нравится читать 1000 страниц технической литературы, а кто-то не способен и 10 страниц вытерпеть но зато легко обучается на практике, ничего в этом ужасного нету. Стоит попробовать все.
С удовольствием могу отвечать на вопросы касающиеся основ разработки (алгоритмы, структуры данных, шаблоны проектирования, системы контроля версий), так же имею огромный опыт разработки на Java SE. Могу помочь, в случае чего.
Идея супер!
Сам недавно начал “програмировать” по Андроид, но не хватает времени, пошло не очень. Но надеюсь дальше буде лучше.
Антон, если нет проблем с английским, то на сайте developer.android.com есть ответ на твои 90%. Удачи!
Крутой проект, буду следить, может, все-таки тоже начну учиться этому полезному делу, а то все только собираюсь и никак не соберусь)
Вот несколько скриншотов мобильной версии, которой не все довольны: андроид, хром, все дела.
Писать комментарии чуть-чуть удобно, ящетаю.
Happiness, Ну это уже к веб разрабам поддерживающих этот сайт
Хаппинесс, только как же до них достучаться :)
А почему бы не выбрать какой-нибудь транслируемый язык и не писать сразу под все платформы? Если вы не пишите какую-нибудь игру, в которой крайне важна производительность, то не обязательно писать на чём-то нативном. Сейчас, конечно, можно сконцентрироваться на Андроид, но всегда приятно знать, что ваш код можно с минимальными усилиями скомпилировать и на иОС и на Винду.
на правах прошедшего описанный в статье путь (с некоторыми оговорками относительно стартового бекграунда) дам несколько советов:
1. никаких “Java за ** дней”, “программирования на **** для чайников” и т.д. в качестве базовой литературы. Ни в коем случае.
2. начинать нужно не с синтаксиса конкретного языка, но с глубинного изучения алгоритмизации. Крайне рекомендую прочесть для начала многотомник Дональда Эрвина Кнута “Искусство программирования”. Это не даст вам в будущем приравнивать умение программировать к знанию синтаксиса. И считать любого ***нокодера программистом. Это принципиально разные вещи. Вы упомянули в статье о том, что к алгоритмам и качеству кода у вас в ВУЗе были довольно посредственные требования. Потому советую для начала освоить фундамент, а уже потом строить на нем стены синтаксиса.
3. Необходим ментор. Человек, являющийся как минимум middle developer-ом, который бы смог направлять и контроллировать самообучение. Курсы и прочие качалки денег а-ля “компьютерные академии” не дают своим слушателм главного – понимания оптимальных алгоритмов. В результате выходят армии тех самых быдлокодеров. Только конкретный человек из друзей или знакомых, прошедший правильный(!) путь становления, может в этом помочь.
4. Изучение паттернов проектирования и программирования. Без знания данных моментов вы обрекаете себя на то, что в программистской среде называется быдлокодингом. И на изобретение монструозных велосипедов.
5. Читайте чужие исходники. В частности исходники open-source проектов. Но читайте аккуратно и вдумчиво. Помимо красивых и эффективных решений вы наткнетесь там и на дебри того самого быдлокода.
Вот в целом и всё, что могу на данный момент посоветовать.
Андрей Москалец,
Happiness, для начала давайте уясним, что мобильная версия сайта – не мобильное приложение. И для того, чтобы исправить косяки этой самой мобильной версии, не нужно с нуля писать мобильное приложение.
Кроме описанных вами проблем мобильной версии сайта, есть ли какие-либо пожелания по функциональности(!), а не багам для гипотетического приложения?
Андрей Москалец, упс промазал – немного не в тот комментарий (:
Кроме улучшения юзабельности интерфейса ничего особо и не надо прикручивать
Еще хотелось бы, чтоб подкаст был с RSS, но для этого приложение тоже не нужно
Кстати, или я не нашел, или на сайте и правда нет формы для обратной связи
Happiness, ну в таком случае это все по части web-разработчика keddr-а. Но никак не по части мобильного приложения :). Последнее имеет смысл разрабатывать ради каких-либо принципиально недостижимых или в разы более удобных в рамках нативного приложения фич.
Андрей МоскалецHappiness, просмотр картинок – это просто ад
Андрей МоскалецHappinessHappinessАндрей МоскалецHappinessАндрей Москалец,
мой знакомый, программист проходящий практику в Microsoft, победитель множества олимпиад и хакатонов сказал, что осилить Кнута крайне сложно. А сам он этого так и не сделал, и тем не менее, является одним из лучших разработчиков которых я знаю.
Начинать же читать подобную литературу до того как писать код – это обрекать себя на очень скорое завершение путешествия в мир программирования. ИМХО
Alexander Stepanov, “лячканье г**нокода” без теоретических основ алгоритмизации, пусть и не столь фундаментальных, как у Кнута, обрекает любого на превращение в быдлокодера. И это не ИМХО. Их нужно изучать до(!) кодинга. В крайнем случае параллельно. Чтобы закреплять теорию практикой. Но клеить обои перед тем, как закладывать фундамент – это несусветная глупость.
Андрей Москалец, я с вами в корне не согласен. Возможно это применимо к вам. Но мой опыт обучения программирования показывает, что достаточно базовых простейших знаний о существовании алгоритмов для начала кодинга.
Вы так заладили с этими быдлокодерами… Научится проектировать приложения и рефакторить код намного легче чем писать эти самые приложения (пусть и очень ужасно). А как научится проектировать приложения не написав ни одной строчки я вообще не представляю. Я долго изучал шаблоны проектирования, но пока сам не реализовал каждый с помощью кода, так и не понял что это такое и для чего…
Не каждый знает как закладывать фундамент или размешивать клей для обоев. Но наклеив пару раз неудачно обои думающий человек сам будет заинтересован в том, чтобы найти информацию о том, как закладывать фундамент, но зато он будет лучше понимать для чего ему это надо и что конкретно это улучшит на его стене.
Alexander Stepanov, в ваших словах взаимное противоречие. То ваш товарищ олимпист-рекордист и хакатонщик говорит, что Кнут дико сложен, то вы утверждаете, что алгоритмизация проще кодинга… В большей степени я согласен с вашим товарищем. С вами – в корне нет. Это у нас взаимно. На лицо два разных подхода. Людей с вашим подходом мне, к сожалению приходилось не единожды увольнять. По результатам работы. Я исповедую принцип “нормально делай – нормально будет”. Вы же – ” давайте посмотрим, что получится”. Традиционный русский такой принцип. Народный. Но с высоко классными результатами, увы, не имеющий ничего общего.
Как показывает практика, 99% адептов вашего принципа, единожды научившись писать на уровне “а че? Оно же работает!”, не заинтересованы в том, чтобы научиться писать лучше.
Андрей Москалец,
я никогда, НИКОГДА не утверждал что алгоритмизация проще кодинга.
Но кое в чем я ошибся, а точнее не дописал:
когда умеешь хотя бы криво проектировать приложения и писать этот код.
– Возможно вы тут нашли противоречие?
Alexander Stepanov,
Это так “никто и никогда такого не утверждал”? Если собеседник отказывается от буквальной трактовки его собственных слов, то дальнейший разговор мне не интересен. По понятным причинам. Всего хорошего.
Андрей Москалец, в моем предложение речь шла про проектирование и рефакторинг, я же отказался от вашего предложения с алгоримизацией.
Alexander Stepanov, проектирование и рефакторинг – прямые производные знания алгоритмизации. Хватит заниматься словоблудием.
Андрей Москалец, не согласен. Желания спорить нет.
Неплохо было бы написать приложение для KEDDRa. Давно возникали вопросы типа: «а будет?», «не собираетесь?» и т.д., а тут как раз такой матерьяльчик.
kukakostya, просто в порядке любопытства задам вопрос – зачем? Какую функциональность вы, как читатель, хотели бы видеть в данном приложении? Чего вам недостает в функциональности новостных клиентов и сторонних сервисов?
Андрей Москалец, давайте я отвечу сразу обеим сторонам. для серьезно больных кеддром людей специальное приложение несет в себе одну но очень важную функцию – уведомления. приложение можно было бы настроить на получение уведомлений о выходе: новых влогов, новых комментов, новых ответов, новых блогов, новых записей в конкретной рубрике, или новых записей в принципе. ну и бонус-функция в том, что форматирование в любом случае было бы лучше оптимизировано для маленьких дисплеев. а как развитие этой идеи – можно было бы реализовать сохранение статей для чтения в оффлайне, например.
почему этого невозможно пока что сделать – потому что это невозможно сделать в принципе с помощью мобильного приложения. для реализации такой функциональности нужно сначала не приложение писать, а движок сайта. нужно внедрить API, который бы выдавал в удобном формате (json, например) ответы на конкретные и очень специфические запросы. а пока этого не будет будут только простенькие просмотрщики, которые будут тупо парсить либо весь сайт, либо rss-канал и толку от этого очень и очень немного.
Виктор Цырфа, во-первых все, что вы написали можно сделать. И сделать без каких либо проблем при помощи wp rest api, который умеет отдавать контент в json. С минимальными допилками. Во-вторых – оффлацновое сохранение статьи или де любого другого контента множит на ноль одну из статей монетизации сайта. Нотификации о выходе новых материалов может обеспечить любой вменяемый rss-ридер. Сервис для отложенного чтения есть. И далеко не в единственном экземпляре. Тот же pocket. В итоге лично для меня необходимость запила нативных приложений с указанной вами мотивацией выглядит мягко говоря неубедительной. Есть ли какие-нибудь принципиально новые киллер-фичи, которые бы оправдывали оное начинание?
Андрей Москалец, у вас контраргументация из разряда “зачем людям айфон? у меня есть Nokia 1100, ноутбук и фотоаппарат, вместе они справляются со всем тем же, даже еще лучше”. но люди почему-то покупают айфоны.
проблема в том, что одно приложение должно заменить все эти костыли. а как прикрутить в wp rest api вот эти вот комментарии я вообще не представляю. а по поводу монетизации – приложение явно направлено на завсегдатаев сайта. они по-любому сюда и так зайдут. а кроме того, на такой публике можно и не экономить, это “золотой фонд” любого сайта. ну и в конце-концов, реклама на сайте, на сколько я погляжу, для кеддра занимает весьма незначительную долю от других видов рекламы.
сам бы я себе такое приложения едва ли поставил бы, но постоянные запросы такого в комментариях (и наличие стороннего клиента) говорят сами за себя
Виктор Цырфа, как раз наоборот. Я выступают за унификацию и централизацию. Как адепт смартфонов и “швейцарских ножей” там, где они уместным, я ратую за единое новостное приложение, коим у меня является Flipboard и за единое приложение для отложенного чтения. Для меня это pocket. Но в ваших словах есть зерна истины. Потому благодарю за ваши идеи. :)
kukakostya, А зачем? Овчинка не стоит выделки. Слишком затратно. Сайт и так адаптирован под разные экраны. Создайте через браузер ярлык для сайта, иконка будет выглядеть как приложение
kukakostyaКостякукаАндрей Москалец, а оно есть!) Не наше фирменное, какой-то добрый человек сделал. “Keddr новости” называется, если любопытно. Но там не отоброжаются комменты
Юля Рябухина, Keddr новости, это просто парсер вордпресса ) Отдельное приложение можно сделать которое не просто парсит и показывает в приложении(по сути от чтения в браузере ничем не отличается), а в котором можно подписаться на конкретные рубрики, обновления которых демонстрировались бы в виде циферки прям на иконке(или виджете) приложения, сохраняло бы автоматически избранные категории для послечтения и т.д.)
Недуев Тарас, согласен. То, что есть сейчас, проигрывает по функциональности мобильной версии сайта. Ваши идеи я лично для себя отметил как наиболее разумные и интересные. Спасибо
kukakostyaЮля РябухинаНедуев ТарасКостякукаАндрей МоскалецВиктор Цырфа, я предположил, что как раз это приложение было бы интересным максимальному количеству читателей. Многие захотели бы принимать участие в этом(советами, идеями, рекомендациями). А уже исходя из результата(то сколько людей скачают, сколько действительно будут пользоваться) можно будет уяснить действительно необходимо оно или нет.
kukakostya, то есть сначала сделать что-то, а потом попытаться понять зачем? Wtf? Где же логика?
Андрей Москалец, Наверно, не так высказался. Суть была в том, что интересным было бы само написание данной программы и привлекло внимание к этой рубрике, а уже пользование этим приложением дало информацию о том, стоит ли развивать конкретный продукт.
kukakostya, правильно ли я понял – вы предлагаете сделать приложение для keddr тестовым проектом для данной рубрики, а потом, по результатам посмотреть, нужно ли его развивать? Правильно?
Андрей Москалец, совершенно верно.
Круто, закончу долбаную школу, тоже буду учиться
Школа не помеха для учёбы ))
EMOPLAYA, моя школа не совсем обычная, тем более выпускной класс, надо сначала экзамены сдать
id101626767, учебное заведение “закрытого типа”? ))
EMOPLAYA, именно так