Я не умею решать алгоритмические задачки
Работаю программистом уже достаточно долгое время (6+ лет). За это время набрался неплохого опыта в разработке веб приложений на Java с использованием Spring, Hibernate и прочих технологий. Успешно работаю на проекте, перформлю хорошо . но . когда на каком-то из собеседований меня попросят решить простую алгоритмическую задачку например смерджить два отсортированных массива в один — я впадаю в полный ступор, особенно в местах, где требуется итераци по эллементам массива и инкрементация всяхих j-тых. Причем самое интересное, что когда прихожу домой и пытаюсь решить эту задачку дома, то на бумаге решение нахожу относительно быстро, но имплементировать могу день, два, три — не меньше.
Хочу спросить у коллег : 1. Сталкивались ли кто-то с подобным — что определенная область знаний в программировании дается с очень большим трудом?2. Стоит ли мне париться насчет этого и все таки вкладываться в эту область или забить прокачивать то, что получается?
До обраного В обраному 0
Найкращі коментарі пропуститиСильно удивлю, но в реальной жизни ты просто берёшь готовую реализацию и вызываешь библиотечную функцию. В действительности это напоминает школьную алгебру и геометрию. Если тебя сейчас попросить воспроизвести теорему косинусов или формулу Герона, ты этого не сделаешь. Но это не значит что тебя надо отправить в 9 класс. Но почему-то для собеседований берут не реальные задачи, а из специального справочника «Параноидальная шизофрения, звёздные болезни, задачи для собеседований.»
была та же фигня, ужасно бесило. Прошла курс Сэджвика на курсере, теперь таких проблем нет. Все качается, нужно только начинать с основ и тренироваться. Никто с этим не рождается. Если чувак может такую штуку сходу запилить — это означает только то, что он потратил N часов отбивания на клавиатуре подобных задач. И все. Никакого скрытого таланта и математического мышления. Проверено на домохозяйках без технического ВО, кстати.
Забей. ИТ это как медицина.Тут пасутся от психологов до ветеринаров.И сколько бы тут хирурги не сокрушались, в медицине есть место даже для гомеопатии.
417 коментарівУ меня, в бытность мою уеб-девелопером, редко когда возникали алгоритмические задачки.Когда стал писать библиотеки финансовой математики на голых плюсах (причем нельзя даже было использовать stl, чтоб код компайлился и на мэйнфреймах), таких задач возникало много*.Когда основным занятием стал анализ временнЫх рядов в R, алгоритмических задачек опять стало меньше, ибо в R уже имлементированы ну буквально все алгоритмы.Хотя нет, все-таки не все, но сегодня стало на один больше :)letyourmoneygrow.com/. rt-and-resistance-levels
На мой взгляд программист должен владеть основами алгоритмов и структур данных. Но зацикливаться на этом не стоит, особенно если работаешь в сфере уеба или гуи-писания.
*была своя недоверсия stl, написанная с нуля. Ее я тоже дорабатывал, заменил quicksort на heapsort, т.к. первый давал stackoverflow на больших массивах
В Україні для проходження стандартної співбесіди копатися глибоко в алгоритмах не треба, це зрозуміло. Але ж, блін, це ж цікаво, це ж вчить думати, ви ж перестаните вирішувати проблеми «в лоб». Радує, що зараз купа студентів цим цікавиться. Займаються алгоритмами як хобі) Я з Kyiv Algorithms Club, і судячи з акривності (не тільки студентів) тема в Україні буде розвиватись. Рекламана пауза))) Осьо наш клуб www.facebook.com/. 5610171/?active_tab=about
такі задачки — це як грати гами для піаніста — їх треба робити на автоматі. для цього щодня рішайте хочаб одну задачу на codeeval , codeabbey і т.п. і через рік питання зникне, а свій код будете пистаи швидше і якісніше.
Теория интересная штука. Изначально кажется, что большая часть ее не нужна, а потом приходит время и ты понимаешь, что не зря читал, зубрил и изучал.
имхо, типы мышления программистов (позволю себе немного адаптировать Колмогорова)— алгебраический— топологический (геометрический)— порядковый (я бы назвал его алгоритмическим)— ну, и еще «вайти в айти» в наших палестниках
------люди первых двух типов тяготеют к ФП. для них естественным примитивом будет функция (и вот оно лямбда-исчисление).
по моему опыту работы с подобным людьми, первые (обычно сильные в общей алгебре, линейке) тяготеют к слишком абстрактному коду, их бог — радикальная композиционность и отказоустойчивость, часто ценой производительности. код многословен, но очень читабелен, при условии, что вы в теме. главный скилл — четкое разделение абстракций, гармоничность мышления, отсутствие эзотерики в коде.
программисты второй категории (обычно сильные в анализе и геометрии) грешат противоположенным — код изящный и неплохо оптимизированный, очень часто с глубоким видением архитектуры. читабельность кода так себе, но порой от чтения возможно достигнуть просветления. главный скилл — математическая интуиция помноженная на хорошую культуру и видение закономерностей и подобий.
люди первого и второго типа — это программисты-математики. их место — неистовые R’n’D, инновации, симпозиумы и scientific papers. эти люди не будут выслать на галере, если им не очень интересно. они также могут быть хорошими архитекторами, если станут чуть ближе к народу. рядовые алгоритмические задачи воспринимают как унылую рутину, от цикла for нос воротят (иногда это правильная реакция).------
люди третьего типа — это именно программисты. они лучше шарят в деталях языка и часто быстрее (но не лучше) решают алгоритмические задачи. математический часто бэкграунд ограничен базовым матаном из универа и простой дискреткой. зато с точки зрения бизнеса и коллег эти люди ЛУЧШЕ программируют, они любят ООП, используют элементы ФП, их код понятен, они редко что-то изобретают. главный скилл — огромный объем знаний в области компьютеров вообще и предметной области в частности, сильная инженерная интуиция и отсутствие нездорового перфекционизма.
именно на таких рассчитаны гуглоподобные собеседования — только матчасть и алгоритмы + пару вопросов по дискретке (в нашей реальности обычно дальше школьной комбинаторики/графов дело не идет, ибо теорвером часто не владеют даже god senior executive architects, а зашквариться на собственном интервью стремно), мат логике и теории вычислимости. часто из них получаются девопсы уровня БОГ.-------
вайти в айти не всегда хуже — по началу, они даже кажутся лучше. пока не произойдет ЭТО — тот случай, который отличает человека с головой от человека с пиццей. обычно это нестандартная задача и жесткий факап колллеги, который надо элегантно исправить. главный скилл вайти в айти — количество фреймворков и конференций. that’s it.-------
мораль. дорогой ТС, надеюсь, мой скромный субъективный alignment поможет вам определить свое место среди сыроедов элиты нации и прокачать те скиллы, которые хорошо соответствуют вашей интеллектуальной конституции.