Ответы пользователя по тегу Карьера в IT
  • Куда лучше пойти на работу?

    mitaichik
    @mitaichik
    Если опыта нет - идти надо в команду - опыта наберешься гораздо быстрее, для новичка это важно. Потом уйдешь на лучшие условия. Или не уйдешь - у меня один знакомый так ушел на стажировку в евройпейский банк, сейчас там чуть ли не тех-лид всего банка, перебрался в европу.

    Если будешь без опыта. без опытных коллег, вариться в своем соку - напишешь, скорее всего, какую-то херню и мало чему научишься.

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

    mitaichik
    @mitaichik
    Найдите инвестора и наймите нормальных опытных программистов.
    Ответ написан
    Комментировать
  • Что нужно знать и уметь, чтобы стать андроид-разработчиком?

    mitaichik
    @mitaichik
    Яйца! яйца надо иметь в любом случае! А по теме - у андройда свой мир, свои решения, свои инструменты. Главный - Android SDK - вот его надо знать. Дата биндинг для работы со вьюхами. Retrofit для работы с сетью RxJava для всего - как начал юзать - кайфую. Gradle - тоже ништяк, спринг супер, под андройд есть, но сам не юзал (сервер на нем) - для DI у андройда нсть dagger 2 - ништяк, удобно! Firebase тема крутая! Что еще: Ссори за бухой комментарий!!
    Ответ написан
    7 комментариев
  • Тупиковое и медленное развитие, лекарство?

    mitaichik
    @mitaichik
    А чего ты хотел?! Что норм освоить более менее сложный язык нужно несколько лет. Чтоб освоить более менее сложный фремворк - нужно несколько лет. Более менее врубиться как писать сложную бизнес логику (DDD там всякие) - нужно несколько лет.

    Чего разнылся -все хорошие проггеры через это проходят. Только опыт, только сложные проекты, тяжелый труд, чтение огромного кол-ва книг, постоянное повышение квалификации (а если нет - риск в 35 лет остаться нахер никому не нужным). А ты думаешь что овер 100К за просто так платят?

    А про молодых - история всем знакомая - приходят на понтах, пишут херню на своих новомодных ангулярах, потом его увольняют или сам сбегает, а ты потом несколько месяцев за ним баги подтираешь (потому что пишут они дерьмово, я б сказал, вообще не понимая что делают) или переписываешь все. Только тимлид-мудазвон ведется на такой молодняк.

    P/S Сам по себе ангуляр я очень люблю )))
    Ответ написан
    Комментировать
  • Код ревью или что не так с моим тестовым заданием?

    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 комментария
  • Возможно ли устроиться на работу девелоперу-иностранцу в России?

    mitaichik
    @mitaichik
    Жил раньше в Питере, работал в разных крупных конторах. У нас работали ребята из Казахстана, Узбекистана, Украины (все были не граждане РФ). Их брали нормально. Что касается документов - хз как они были офромленны (знаю тлоько что у некоторых были эти самые РВП). В любом случае, если вы реально хороший специалист - крупная компания посуетится ради вас.

    Другое дело что их не интересует 3 месяца. Ради сотрудника на 3 месяца суетиться никто не будет, будь он гражданин РФ или нет, неважно. Компании ищут человека как минимум на несколько лет, ибо первые несколько месяцев новый сотрудник только вникает в проект, отвлекает разрабов вопросами, делает из-за незнания проекта баги, и в целом, замедляет процесс разработки.
    Ответ написан
    4 комментария
  • Тестовое задание перед собеседованием на php-программиста, развод?

    mitaichik
    @mitaichik
    Все двояко. Как то раз дали мне задание, сложное и интересное. Я его делал 2 недели! А потом работал в этой конторе много лет с отличной зарплатой.

    А был раз когда попросили задание, я согласилсчя, прислали его - как буд то из методички вырезали. Я сделал - и молчание. Похоже, кому то курсовую помог сдать.

    Но я бы при приеме не стал требовать заданий. Имхо, достаточно просить код + хорошее собеседование. И пулл-реквесты с коде-ревью в первый месяц.
    Ответ написан
    Комментировать