• IT-блог как трудовая книжка программиста?

    lukoie
    @lukoie
    И все же, есть ли смысл? (может я занимаюсь самообманом?)

    если Вы хотите куда-то на работу устроиться, то это будет плюсом для эйчара/хедхантера
    Стоит ли распространять мои статьи через habra, medium, etc (с точки зрения поиска будущей работы) (или это только для чсв?)

    см.п.1
    если Вы о том, чтобы лидогенерячить - то это возможно, но далеко не обязательно сработает.
    Стоит ли быть активным на Stackoverflow (с точки зрения поиска будущей работы)

    смотря какой, опять же. хх может Вас так найти, например. но если Вы нашли клиента, и пытаетесь его убедить что надо именно Вас нанять, СО Вам не даст такого преимущества.
    Как показать что я не ctrl+c ctrl+v? (личные скриншоты, мб что то еще?)

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

    an-tar
    @an-tar
    Full stack web developer
    И все же, есть ли смысл? (может я занимаюсь самообманом?)


    Смотря как интенсивно вы будете в него вкладываться. Имхо такие блоги могут быть интересными, если ты опытный и "матёрый". Я бы все-таки больше ориентировался на существующие ресурсы - хабр, стековерфлоу, яндекс.зен, да и медиум и т.д. Все-таки там больше жизни, больше ЦА.
    Стоит ли распространять мои статьи через habra, medium, etc (с точки зрения поиска будущей работы) (или это только для чсв?)

    Как источник для поиска работы это вряд ли можно полноценно рассматривать первые несколько лет,при условии, если будете активным писателем. Скорее на удачу можно что-то поймать, ну и не без ЧСВ здесь))
    Стоит ли быть активным на Stackoverflow (с точки зрения поиска будущее работы)

    Стоит быть активным на всех профильных ресурсах по возможности, но опять же - как источник поиска работы на начальном этапе можно рассматривать как очень пассивный.

    Ищите явно, отправляйте резюме, имейте активный github аккаунт, в наше время часто это есть портфолио программиста)

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

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    1. Конечно есть, это же PR
    2. Конечно стоит, это же PR
    3. Конечно, но я бы рекомендовал Тостер, на Stackoverflow конченные админы.
    4. А что у кого-то есть подозрения? Если человек ведет свой блог, пишет на Хабр и имеет хороший рейтинг на Тостер - вопрос закрыт.

    Есть 2 типа людей. Те что стремятся созидать и остальные. Первые зарабатывают больше.
    Ответ написан
  • IT-блог как трудовая книжка программиста?

    DDenisov_adv
    @DDenisov_adv
    Маркетинг и продвижение
    1. Личный блог, если вы его правильно оптимизируете, сможет давать вам лиды с поиска. Например, вы можете написать несколько статей на тему "Найти программиста и не прогадать", "Хороший программист - на все золота". Т.е. с вхождением в метатеги в тексте запросы, по которым могут искать такого специалиста. Да, это чисто коммерческая история но и вы ведь работаете за деньги, не так ли, и это всё не из-за любви к искусству, а чтобы найти клиентов.

    2. Человек который пишет, всегда "выше на голову" того, кто не пишет. Конечно при условии, что они на примерно одном уровне и человек не пишет ерунды.

    3. Чтобы не прослыть копипастом, напишите в блоге, что это ваши личные статьи, уникальный контент, и что если кто-то хочет его использовать, то ссылка обязательна. Гит и т.п. профильные сообщества никто не отменяет.

    Успехов, направление верное. Лучше это делать, чем не делать. Я кстати себе нашел разработчика на один проект на битриксе именно через его блог, в поисковой выдаче.
    Ответ написан
    8 комментариев
  • Windows 10 кавычки вводятся только парами?

    phactor
    @phactor
    Это раскладка клавиатуры. Наверняка стоит США - Международная. Нужна просто США.
    Ответ написан
    5 комментариев
  • Где пройти обучение Android разработке?

    @YuryBorodkin
    Android dev
    Тут недалеко, в принципе, как переплывешь Тихий океан - сразу направо.
    Если серьезно, пристойных курсов не видал - пока сам учился список тем онлайн курсов вызывал удивление, типа "1 урок - ставим android studio", "2 урок - качаем sdk".... "25 урок - делаем git clone, gradlew assembleDebug - вы разработчик!!!11111". Регулярно вижу вакансии - преподаватель курсов android - 15 к. Смешно.
    Сам читал "busy developers guide" by Mark Myrphy && писал приложения. Норм все, успешно работаю по направлению.
    Ответ написан
    2 комментария
  • Что делать веб разработчику, если уже всё придумано?

    Stalker_RED
    @Stalker_RED
    Идеи приложений: https://www.reddit.com/r/AppIdeas/
    Идеи вообще: https://www.reddit.com/r/Lightbulb/
    Подобных списков десятки. Бесплатно, без СМС.
    Ответ написан
    9 комментариев
  • Теперь это норма для фриланса?

    syschel
    @syschel
    freelance/python/django/backend
    Начнём с того, что Вы видать сами не поняли. MVP это считайте прототип, а дословно "minimum viable product — минимально жизнеспособный продукт — простейший работающий прототип продукта". То есть тут не требуется высококлассный законченный продукт. Уже есть почти на любом языке фреймворки/программы, которые позволяют создать на своём языке приложение, а потом нажать "сгенерировать под андроит, иос и т.д.". Да, работать они будут хуже чем писалось бы на нативных языках, особенно с логикой. Но ведь тут просят MVP.

    Клиентов которые НЕ программисты, тоже полно. Они могут шапочно знать какие-то "страшные слова", но сами не являясь специалистами в НАШЕЙ сфере, не понимают что пишут. Так же наверно и на медицинском форуме, народ обсуждает "клиентов", которые "пьют слабительное вместе со снотворным, перепутав рецепты". Часто видел клиентов, которые просто по незнанию написали "бред". Либо задачу ставил HR, вообще далёкий от темы и тупо скопировавший "похожие" объявления.

    Ну а клиентов которые хотят всё и сразу, при том за копейки (второй фейсбук за 100 долларов! сам бы сделал, да времени нет, делов на пару вечером), полно. При том за мои ~15 лет фриланса/офиса, это было постоянно. Уже даже не обращаю внимания на них, как на рекламные баннеры взгляд перестал цепляться. По этому ваше "удивление" мне не понятно. Такое было всегда, везде и будет так же всегда и везде. Просто отсеивайте.
    Ответ написан
    2 комментария
  • Почему у моего приложения в google play нет кнопки обновить?

    GavriKos
    @GavriKos
    Самый простой вариант - новое обновление несовместимо с вашими девайсами.
    Ответ написан
    Комментировать
  • Как организовать хранение объектов в БД?

    @Miron11
    Пишу sql 20 лет. Срок :)
    А почему не выделить число, начинающееся от 1, увеличивающееся на единицу с каждым шагом. И идентифицировать все события произошедшие от начала отрезка времени и до начала следующего отрезка времени, не включая само начало следующего отрезка, этим идентификатором.

    Таким образом в дне 96 таких отрезков, в году 36500 - 4 * 365 = 36500 - 1460 = 35040 шагов в год ( +96 в високосный ). Получается что с одним глобальным объектом - секвенцией - который постоянно прирастает на единицу с помощью метронома выставленного на 15 минут, можно обслуживать всю базу авторитетным единым источником идентификатора текущего промежутка времени, не тратя время на вычисления внутри отдельно взятой процедуры или запроса.

    По - моему в Постгрес для этого даже есть какие - то очень удобные рычаги, позволяющие задать развертку, глобальную или более узкого обзора, которая обеспечит доступ к такому объекту, как к глобальной переменной, с минимальными затратами ресурсов.
    Ответ написан
    Комментировать
  • Можно ли работать на Западе в сфере IT без профильного диплома?

    IonDen
    @IonDen Куратор тега IT-образование
    JavaScript developer. IonDen.com
    Все зависит от страны, например в Нидерландах, нет требований к наличию профильного высшего образования. Главное чтобы вы получили оффер у работодателя, который уже обоснует что вы нужны.

    В Германии, профильный диплом требуют. Я слышал кому-то удавалось обходить, но в целом это препятствие.

    В США, профильный диплом - важная, но не обязательная опция. Там очень сложно найти компанию, которая впишется делать для вас H1B. Но даже если вы найдете, не факт что получите. Лотерея. + что там еще Трамп придумает ))

    В Азии ничего не требуют, по крайней мере в странах вроде Вьетнама, Тайланда. Если нацелитесь на Сингапур, то там все сложно и вроде бы требуют.
    Ответ написан
    5 комментариев
  • Android-Apple разрабы - не выдумка?

    @malbaron
    Во первых, есть универсальные инструменты
    https://habrahabr.ru/post/319348/

    Во вторых, заказчику пофиг, что это будете делать вы вдвоем с братом/другом/недругом. А еще есть фирмы/студии с десятком-другим спецов различной специализации.

    В третьих, многостаночники вполне бывают. Я прекрасно ориентируюсь в 2 принципиально разных областях программирования. Не считая тех 10, где я ориентируюсь более-менее.

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

    UPD:

    Сложилось мнение, что путь во фриланс заказан без знаний обоих платформ.


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

    Очень часто жадность исполнителей тоже берет свое - и человек берется за 2 разных ОС, хотя знает только одну.
    ;)
    Ответ написан
    6 комментариев
  • Android-Apple разрабы - не выдумка?

    zooks
    @zooks
    Frontend
    Фриланс - это нередко пакетное предложение. Естественно многостаночников в природе мало. Вероятнее всего, что версию под другую систему будет делать другой человек. И нужно иметь в виду, что всегда можно предложить только исполнение для конкретной ОС.
    Ответ написан
    Комментировать
  • Записная книжка программиста?

    lxsmkv
    @lxsmkv
    Test automation engineer
    A еще Google Кееp. Я там все свои находочки-находки храню, да. Списки видео, книг, заметки, regex-ики и все-все-все. Весьма удобно сделано. Быстрый поиск есть, напоминалка. Что еще нужно для счастья :)
    Ответ написан
  • Что умеет настоящий senior/lead developer кроме знания какого-то языка и его фреймворков?

    Что умеет настоящий senior/lead developer кроме знания какого-то языка и его фреймворков?
    Что бы вы ни изучали, вы выйдете из вуза джуниором. Сеньорами становятся не выучив синтаксис 10 языков программирования, а сделав 10 крупных проектов. Как и на чём они сделаны не так важно, главное - это те уроки, которые разработчик с них вынес.

    Чему стоит научиться за первые курсы для того чтобы повысить свою "цену" как разработчика в будущем?
    Исходя из написанного выше: изучите "какой-то язык и его фреймворки" на высоком уровне, чтобы сразу при устройстве на работу начать приносить пользу и получать опыт реализации проектов, а не борьбы с компилятором java. Изучите свою IDE, используйте её эффективно. Ну и посматривайте в смежные области, чтобы расширять кругозор: графический дизайн, UX, другие парадигмы программирования.
    Ответ написан
    Комментировать
  • Где можно найти best practices по программированию?

    10182766_0_Patterni_proektirovaniya.jpg
    Ответ написан
    Комментировать
  • Код ревью или что не так с моим тестовым заданием?

    mitaichik
    @mitaichik
    Сам в андройде не профессионал, скорее любитель, но свои 5 копеек вставлю:

    private static Context mContext;
    
        @Override
        public void onCreate() {
            super.onCreate();
            mContext = this;
        }


    Хз почему так, но это считается не камильфо. Сам так юзаю, и не одного краш-дампа не словил, но в android-сообществе это не приветствуется (надеюсь в комментах кто-то опишет почему). Принято передавать контекст.

    В MainActivity методы для работ с меню можно было удалить, ибо, судя по всему они нигде не юзаются (и видимо остались от типового шаблона).

    В RestClient идет присвоение в статическю переменную.

    private static RestClient instance;

    Я так понимаю ты делал синглтон. Хз приемлемо ли это в андройде, но я б сделал его как компонент приложения. В идеале вся эта фигня должна создаваться через DI (по карйней мере в бэкенд-разработке DI везде используется). Для андройда это библиотека Dagger 2 (сам еще не юзал, но выглядит многообещающе).

    Плюс там же:

    public static RestAPI get() {
            if(instance == null) instance = new RestClient();
            return instance.restAPI;
        }


    Этот метод по хорошему должен быть помечен как synchronized: если туда зайдут одновременно 2 потока, то может получиться что создадутся 2 RestClient'a. Тут конечно побоку - это вряд-ли что то сломает, но в крупных приложениях это ого-го какие проблемы создаст (я опять таки про бэкенд, ибо я больше по нему).

    Хранить во так параметры аутентификации - тоже не есть хорошо, но это тестовое задание, так что побоку.

    Теперь по фрагментам:

    list = (RecyclerView) v.findViewById(R.id.list);

    Ты присваиваешь свойствам фрагмента вьюхи, в onDestroyView не плохо бы их обнулить. А еще лучше, юзать butterknife.

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

    В обработке ответов ты проверяешь if (getActivity() == null) return;. Но этим ты проверяешь наличие активити, но не фрагмента, фрагмент может быть уничтожен, или его вьюха может быть уничтожена, или у активити может быть вообще другой фрагмент или еще что. Короче, это все приведет к крэшу.

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

    Реально смутил DetailsTaskFragment: для представления информации о одной задаче ты юзаешь RecyclerView. Имхо, это в корне не правильно. Я понимаю твою мотивацию, почему ты так сделал (экономия память на вьюхах и прочее). Но ты жестко задал структуру и тип отображения. Малейшее изменение требования отображения задачи, и весь этот код под удаление. Ну и инструмент неправильный: RecyclerView - это для списков, для больших списков, а задача - это не список, это сущьность. Если бы ты отказался от этой идеи, и заюзал обычный layout + DataBinding все было бы более удобно, изменяемо, и кода было бы раз в 10 меньше.

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

    ItemViewHolder - там у тебя обработчик. Хз правильно это или нет, но в примерх гугла обработчик вешается в onBindViewHolder.

    Так же не совсем понимаю (возможно просто задание не читал) метод addAll: почему бы просто не обновить список? Плюс опять это по большой части бизнес-логика. И что странно - не вижу notifyDataSetChanged().

    В общем как-то так.
    Ответ написан
    2 комментария
  • Зачем нужен Dependency Injection в Android разработке?

    artemgapchenko
    @artemgapchenko
    Начать неплохо бы с понимания того, что такое DI. Обратимся к википедии:

    Внедрение зависимости (англ. Dependency injection, DI) — процесс предоставления внешней зависимости программному компоненту.

    Если выражаться не канцеляритом, а обычным русским языком, то DI - это когда вы своему компоненту (например, классу) предоставляете нужные для него зависимости извне, а не создаете их сами в конструкторе, или через инициализацию в месте объявления поля. То есть не так:

    public class Api {
    	....
    	private final HttpClient client = new OkClient();
    }

    А, например, так:

    public class Api {
    	....
    	private final HttpClient client;
    
    	public Api(@NonNull HttpClient client) {
    		this.client = client;
    	}
    }


    И что нам это даёт?

    Ну, очевидно, нам теперь проще менять зависимости. Нужна вам другая реализация абстрактного класса HttpClient - взяли, и передали её через конструктор, или через метод-setter. В случае с первым куском кода, вам пришлось бы ещё и класс Api переписывать, что в случаях, отличных от тривиальных, может привести к ошибкам. Получается, что ваш класс теперь закрыт от изменений (смотрим Open/Closed Principle).

    Окей, а на практике-то какие бенефиты?

    Во-первых, вы теперь можете написать инициализацию вашей программы через конфигурационные файлы. Скажем, на старте будет читаться простенький текстовый файл, который определяет, какой httpclient использовать, какие настройки доступа к бд применять и так далее, и, исходя из этого, будут определяться зависимости.
    Во-вторых, вам теперь существенно проще писать тесты. Написали вы, скажем, какой-нибудь парсер, который принимает InputStream, содержащий в себе данные json-объекта, как-то хитро его парсит, и выдаёт вам объект вашей бизнес-модели. В приложении этот парсер будет принимать на вход реализацию InputStream'а, которая берёт данные из сети, а в тестах - реализацию, которая просто читает файл с диска (потому что тесты должны выполняться часто и быстро, и ваша задача в тесте - протестировать ваш парсер, а не скорость сетевого соединения).

    Вот, в общем-то, и всё. А Dagger - это просто библиотека, которая автоматизирует ручное внедрение зависимостей, равно как и другие DI-библиотеки.

    P.S. В некоторых случаях чрезмерное увлечение DI может привести к нежелательным эффектам, вроде чрезмерного усложнения кода, поэтому внедряйте аккуратно. Понимание приходит с опытом.
    Ответ написан
    Комментировать