Блин, ну чего же я такой тупой?

Вчера, играл с друзьями в пинг-понг (как именуют его тут, в стране заходящего солнца). И вот слово за слово, завязался разговор о текущих багах и потихоньку все погрузилось в глючность реализации JNI (java native interfaces) для какого-то Linux и ошибки в C++ коде, которые вызывается через C прослойку через JNI и т.п.

Где-то после минут десяти у меня начал активно проявляться комплекс неполноценности. Хотя это абсолютно не моя техническая область, но тем не менее, она была и не слишком ихняя. При этом люди меня повергли в ужас, количество разнообразной технической информации о java, c++, по ходу был зацеплен unicode (и его виды utf-8 и utf-16), а так реализация виртуальных машин, их оптимизация, задеты темы языков ruby on rails и чего-то еще.

В общем, после игры в теннис, я чеща голову ушел думать… Что ж блин я такое пропустил в своем интеллектуальном развитии?  Почему же, я какой-то прям таки недоразвитый?

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

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

— знание платформы — 30%

— умение создавать нормальную архитектуру — 20%

— умение решать проблемы 20%

— понимание логики программы — 20%

— знания языка программирования — 10%

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

Я как-то фактически не побывал снаружи от мобильных разработок. Как оно вообще во вне?  Такие же приоритеты или что-то по другому?

21 комментарий to “Блин, ну чего же я такой тупой?”

  1. Dyatel:

    Я сам из большого j2ee enterprise, я бы сказал так:

    — умение создавать нормальную архитектуру — 50%

    — знание платформы — 25%

    — знания языка программирования — 25%

    В большой системе фундамент важен как ничто иное, к сожалению мало людей реально могут и умеют строить системы. Отсюда и заваленые проекты и сожранные бюджеты 🙂

    • поддерживаю, коллега. с одной поправкой — не только создавать, но и понимать архитектуру. legacy системы в «большом» j2ee enterprice не редкость, а я бы сказал почти правило. и поддерживать, и обновлять, и рефакторить приходится много. а без понимания архитектуры, и главное без желания понимать, работа с legacy решительно невозможна.

      • Victor Ronin:

        Ага. Интересно. Как я и подозревал, больше сдвиг на архитектуру, так как системы больше.

  2. Виктор,
    IMHO в своих 5-ти характеристиках вы мешаете котлеты с мухами — язык прграммирования, архитектура+платформа и умение БЫСТРО решать проблемы — это все из 3х разных областей.
    А вообще с вами согласен по поводу того, что мобильные разработки замкнуты в себе — те кто в них глубоко погружается, в результате часто «отстает» по технологиям уровня enterprise и взрослого web-а.
    В замен же приобретает довольно специфичные (и дорогостоящие!) навыки и знания.

    P.S. Не могли бы вы связаться со мной по е-майл — есть вопросик по поводу вашей деятельности.

    • Victor Ronin:

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

      Фактически все, что я описал перпендикулярные друг другу знания.

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

      Да, проблем мобильного мира, что он действительно находится в стороне и от desktop development’а и от web’а.

      На почту сейчас напишу.

  3. что же касается Ваших коллег, Виктор, то как показывает практика, тематика профессональных разговоров касается последнего и максимум предпоследнего проекта. если в их проекте много JNI на Linux платформе, то это отнюдь не показатель того, что Вы тупой — это просто ребятам «повезло». по большому счету JNI есть зло в 90% случаев, но уж если приходиться с ним работать, то по неволи выучишь особенности реализации JVM, и прочие описанные фишки.
    времена героев, знавших все три языка программирования, прошли. хорошо это или плохо, каждому судить для себя, такова жизнь. и даже времена экспертов, как мы обсуждали в параллельном треде прошли. проходит эпоха гиков, программирование становиться все более «поточным» и люди все больше приходят за деньгами. мне иногда бывает с ними сложно — они не совсем понятны для меня, но такова жизнь.

    • Victor Ronin:

      Та, в общем, я это понимаю. Поэтому и вылилось в обсуждение типа, кто на что делает упор, вместо того, чтобы пытаться кого-то догнать и перегнать.

      Просто забавно, что знания в мобильных платформах очень специфичные.

  4. Согласен с Вадимом — впихнули невпихуемое 🙂
    Согласен с Антоном — все фломастеры области d IT разные

    Добавлю. Невозможно оценить систему, являясь ее частью. Поэтому нельзя распределить факторы, влияющие на результат проекта, указав «ощущения».

    Лучше разделите все компетенции на 3 составляющие — знания, умения, навыки (3 столбца). В каждой компетенции определите, является она крайне необходимой, полезной или желательной для данной области (проекта) — это мера влияния компетенции. И укажите, что из 3 составляющих в какой мере влияет. В некоторых компетенциях навыки могут не влиять (ставим прочерк), а в некоторых — бывают опят и навыки без солидных знаний (в основном гуманитарные компетенции).

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

    И только после этого можно создать подобие распределения, и наметить те компетенции, которые именно вам именно в этой области нужно подтянуть.

    Вы думаете, оно того стоит? 😉

    • Victor Ronin:

      А в чем отличие умений от навыков?

      Скажем так, продолжать подтягивать я собираюсь на самом деле бизнес составляющую.

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

      • Вы будете заниматься бизнесом (получая опыт и навыки), или только накапливать знания в этом направлении?
        Если будете продолжать 90% времени заниматься разработкой, то первый вариант мне представляется мало реальным :(.

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

        Если проще, то МОГУ (умение) = знаю КАК (знание), делал раньше (опыт) и ПОВТОРЮ многократно (навык). Иногда можно к повторению добавить условие «без ошибок».
        Если нет одной из составляющих, умение становится неполным, и желательно подтянуть недостающую составляющую. Иначе кому-то другому прийдется выполнять часть работ.

  5. jaguar:

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

    • Victor Ronin:

      В общем-то да, действительно зависит от задач. Я имел в основном ввиду либо team lead, либо senior developer.

      • jaguar:

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

        • jaguar:

          хотя… html-верстка в веб все же стоит несколько отдельно. Так или иначе верстать хорошо умеют не многие. Часто для этого берут специальных верстальщиков, который отлично знают все тонкости браузеров и умеют реализовывать верстку наиболее оптимально. К сожалению не все верстальщики на столько хороши, а вот джаваскриптеры, актив-скриптеры и т.д. и те кто совмещает это с серверной разработкой и подавно не обладают достаточным набором знаний. Даже я не могу похвастаться отличными знаниями в этой области, хотя мой запас знаний и достаточно обьемный, но я уверен, что найдется еще не один десяток приемов, или триксов, которых я не знаю. А найти классного верстальщика все таки задача не из простых. По крайней мере у нас. Хотя бы потому что у них специфичная задача, как и у дизайнеров, они нужны далеко не на всех этапах разработки и их сложно нагрузить фулл-тайм. Потому для маленького бизнеса держать на ставке дизайнера еще могут, как необходимость, а вот чтобы верстать пытаются брать или девелоперов с таки набором знаний, либо (что было бы еще лучше, но встречается вообще очень редко) дизайнера-верстальщика.

          • Victor Ronin:

            Да в любой задачи если копнуться — будет тоже самое как и в верстке.

            Ясно, что слепить сайтик на 5 страниц — дело не хитрое.

            Но вот, когда надо сделать архитектуру для нового Amazon, тут уже алгоритмами «на коленке» не обойдешься и тогда берут спецов, которые планомерно и аккуратно все проектируют. И запас знаний у них должен быть гораздо больше, чем у студента делающего свою первую страницу.

  6. Alexander Pavlyutin:

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

    > — знание платформы — 30%
    Я так понял что имелось в виду знание особенностей платформы.
    > — умение создавать нормальную архитектуру — 20%
    50%. Часто забывают что нормальная архитектура должна имеет встроенные механизмы тестирования(дебаг, профилирование, тестовые сценарии).
    > — умение решать проблемы 20%
    Важнее умение не создавать проблемы.
    > — понимание логики программы — 20%
    Логика работы программы должна быть прозрачной и понятной изначально. Для этого есть полный комплекс решений.
    > — знания языка программирования — 10%
    Я так понял что имелось в виду знание особенностей языка программирования.

  7. Erlinn:

    Виктор, а можно узнать — где лежат деньги в мобильных приложениях? В смысле, за что готов платить покупатель владельцу бизнеса, за что готов платить владелец бизнеса разработчику? Какие приложения, какой круг задач?
    Меня не интересуют коммерческие тайны, а только совет по профессиональной переподготовке. Надо менять курс, осваивать новые области, вот и собираю информацию. Опять же, IPhone какой-то появился — может быть, будет новая ниша 🙂
    Если удобнее в личку — я готов.

    • Victor Ronin:

      Говоря честно — я не знаю, точнее я не уверен. Знал бы точно, уже был в этой области.

      Как мне кажется, деньги в мобильных приложениях есть в корпоративном рынке. Но туда сложно выйти.

      Так же деньги лежат в контенте (но это не имеет отношения к мобильным разработкам). Это скорее к созданию чего-то что пользуют мобильные программы.

      >Опять же, IPhone

      Если вас это интересует с технической стороны.
      Я бы делал ставку на WinMobile и iPhone. Остальное понемножку, как мне кажется, будет сдуваться.

  8. Sapiens:

    Все предыдущие комменты больше говорят о преверженности товарищей к водопаду. Сам работаю в ajile поэтому выставлю такое ИМХО:
    — знание платформы — 10%
    — умение создавать нормальную архитектуру — 20%
    — умение решать проблемы 40%
    — понимание логики программы — 20%
    — знания языка программирования — 10%
    Все это естественно исходит из того, что человек со светлой головой и нормальной коммуникацией. Ставить себя под рамки 1-й платформы, 1-го языка не есть хорошо. А по сути давать проценты уже чушь, все должно быть в комплексе и гармонии. Понимаю, что немного противоречю, но вот как то все так получается.
    Кстати по поводу
    >> — умение решать проблемы 20%
    > Важнее умение не создавать проблемы.
    Мне кажется имелось в виду умение решать проблемы заказчика.

    • Victor Ronin:

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

      >Ставить себя под рамки 1-й платформы, 1-го языка не есть хорошо.

      Ну, это достаточно сложная тема.

      Вероятнее всего в web или desktop это легко исполнить.

      А например, если у вас проект под Nokia телефон. То, вас уже ставят в рамки одной платформы (Symbian) и одного языка (C++).