Browse other articles in Код и программистское, Мысли вслух, Образование categories.

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

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

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

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

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

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

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

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

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

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

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

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

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

RSS feed | Trackback URI

21 Comments »

Comment by Dyatel Subscribed to comments via email
Reply to the post
2008-06-10 01:30:48

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

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

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

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

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

Comment by Anton Naumov
Reply to Dyatel
2008-06-10 03:45:51

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

Comment by Victor Ronin
Reply to Anton Naumov
2008-06-10 10:53:30

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

 
 
 
Comment by Vadim Voituk Subscribed to comments via email
Reply to the post
2008-06-10 03:28:12

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

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

Comment by Victor Ronin
Reply to Vadim Voituk
2008-06-10 10:55:46

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

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

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

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

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

 
 
Comment by Anton Naumov
Reply to the post
2008-06-10 03:51:18

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

Comment by Victor Ronin
Reply to Anton Naumov
2008-06-10 10:58:59

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

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

 
 
Reply to the post
2008-06-10 04:24:47

Согласен с Вадимом - впихнули невпихуемое :)
Согласен с Антоном - все фломастеры области d IT разные

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

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

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

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

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

Comment by Victor Ronin
Reply to Артур Ракицкий
2008-06-10 11:00:55

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

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

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

Reply to Victor Ronin
2008-06-11 07:44:23

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

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

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

 
 
 
Comment by jaguar Subscribed to comments via email
Reply to the post
2008-06-10 20:02:37

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

Comment by Victor Ronin
Reply to jaguar
2008-06-10 20:22:01

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

Comment by jaguar Subscribed to comments via email
Reply to Victor Ronin
2008-06-10 20:34:48

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

Comment by jaguar Subscribed to comments via email
Reply to jaguar
2008-06-10 20:44:00

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

Comment by Victor Ronin
Reply to jaguar
2008-06-10 21:16:04

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

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

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

 
 
 
 
 
Comment by Alexander Pavlyutin Subscribed to comments via email
Reply to the post
2008-06-11 03:49:37

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

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

 
Comment by Erlinn
Reply to the post
2008-06-11 06:15:26

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

Comment by Victor Ronin
Reply to Erlinn
2008-06-11 10:28:12

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

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

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

>Опять же, IPhone

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

 
 
Comment by Sapiens Subscribed to comments via email
Reply to the post
2008-06-12 01:20:21

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

Comment by Victor Ronin
Reply to Sapiens
2008-06-12 08:57:16

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

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

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

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

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

Comment by Sapiens Subscribed to comments via email
Reply to Victor Ronin
2008-06-12 22:03:38

Это уже именно ваша специфика)

 
 
 
Name
E-mail
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong> in your comment.

Trackback responses to this post