Как понять, что умеешь программировать?

Добрый день. Изучаю программирование(java). Вопрос общий — как понять что умеешь программировать, а более конкретный: приведите пожалуйста примеры задач, решив которые я смогу быть более менее уверенным что умею программировать(речь идет об уровне trainee/low junior, разумеется не експерт) То есть задачи сложнее игр с массивами/переворота строки но легче использования того же Spring в J2EE.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

ну если на полторы устроишься — значит, таки умеешь
такая вот задачка

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

ориентироваться на «решу эту задачу и все, значит, программист» не стоит, потому что, как на мой взгляд, это странный признак.
ну, вот, написал систему поиска лиц на изображении. крутотень.
а какие у неё ограничения? как много писал сам, а как много — взял стороннего? а есть ли понимание — почему именно так? а как работает система — понятно или нет? и прочие вопросы.
так что одной "медалькой"(ну, конкретной задачей и её решением) не обойтись

По ссылке — довольно обширная таблица критериев, позволяющая определить степень владения ремеслом.

sijinjoseph.com/...petency-matrix

как понять что умеешь программировать
Никак, и главное — тут не впадать в уныние :-)
ru.wikipedia.org/..._ничего_не_знаю
примеры задач, решив которые я смогу быть более менее уверенным что умею программировать
Пожалуйста:
1. Тестовые задания на собеседованиях в ТОП-компаниях (только тут нужно фильтровать, и не считать таковыми задания а-ля «почему канализационные люки круглые»).
2. Успешно решенные технические задания заказчика/работодателя. Критерии успешности — вопрос спорный, конечно. В первом приближении — заказчик удовлетворен характеристиками Время-Деньги-Качество.
3. Высший пилотаж — это помочь заказчику понять, что же ему на самом деле нужно. А для этого нужно понимать предметную сферу.
trainee/low junior
Мое ИМХО — лучше сразу ориентироваться не на «игры с массивами», а на потребности заказчика, которому эти «игры» глубоко фиолетовы. Если поймете, что ценит заказчик и какие его потребности — очень быстро покинете ряды trainee/junior.

Отцы говорят что программирование is a craft, и его нужно не изучать а практиковать.

Понять — никак. Надо программировать. И тогда понять получилось у тебя что-то или нет.
Изучать и НЕ программировать можно хоть вечность — память готова забывать с той же скоростью.

Расскажу такую быль.
Просится к нам на работу (через моего сотрудника) программист, вроде бы все нормально есть опыт работы, но что то мешаем мне принять решение.
А т.к. мы фирмой собирались в поход по Карпатам, мой сотрудник говорит — «Давайте предложим ему пойти с нами», я говорю «Отлично, там и разберемся».
С погодой не очень повезло первые пару дней, зато дальше — Мантана.
Мы каждый вечер играли в карты вначале в дурака (на пары), затем в короля (есть такая детская игра), затем в верю не верю. И вот после очередной партии, мне мой сотрудник говорит «Да... не подходит кандидат».
Вывод, может он и программист хороший, но как разработчик слабоват — не умеет играть в ВЕРЮ Не ВЕРЮ.
Ремеслом заниматься могут большенство — поэтому если ты уже задаешь этот вопрос — можнос казать готовый программист.

тільки я один нічого не зрозумів?

Ну що тут розуміти? Чувак ще не співробітник, а його вже тягнуть на тімфістинг кудись в Карпати, щоб вже там, на місці, в неформальній атмосфері продемонструвати йому Синдром Пошугу Глибинного Сенсу розповсюджений серед потенційних майбутніх колег.

Вывод, может он и программист хороший, но как разработчик слабоват — не умеет играть в ВЕРЮ Не ВЕРЮ.
То вы что-то непонятное делаете. Лучше сразу смотрите на совместимость по гороскопу и экономьте время себе и соискателям.

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

У каждого свой метод поиска, и лучше искать там, где ты специалист.
Например я мастер спорта международного класса в спортивной игре «Верю не Верю».
А кто то пожарник — многоборец.

Ваши бы слова, да многим в голову ...

далеко не все кто получают деньги будучи на должности программиста, умеют программировать

Можете попробовать сделать тестовое задание в какую-то из контор. Например, Samsung предлагал сделать симуляцию физики висящей рыбацкой сети. (по ссылке не решение, а видео того, как может работать готовая программа).
www.youtube.com/...h?v=HbCL5olpsZs

Причем тут Самсунг, человек хочет оценить насколько он умеет программировать, возможно, в соответствии с требованиями работодателя. На месте моей ссылки могла быть любая другая на любое другое ТЗ. А это, кстати, вполне адекватное.

Не то, чтобы я нанимался к ним адвокатом, но относится. Распознавание жестов, например, разрабатывалось здесь jobs.dou.ua/...panies/samsung
В качестве типичного программирования проверяется способность, например, разобраться в незнакомой библиотеке — GLUT, ну и вообще общий стиль программирования.

И в его случае на его резюме приличная контора вышлет ему ТЗ, которое он сделает (или не сделает) и пройдет (не пройдет) собеседование и будет работать программистом (в контексте его поста это и будет значить — умеет программировать)
Тут полностью согласен.
Речь идет об типичном программировании, а не матфизике.
ИМХО программирование давно разделилось на множество специализаций и «типичное» программирование — нечто вроде средней температуры по больнице.

Напиши тетрис, покер, календарь дел, архиватор, приложение к фейсбуку, систему умного дома, распознавание речи, поисковик, переводчик, контроль ядерного реактора, CRM CMS CAD CAE CAM ERP, порви техкранч, переиздай книгу, создай стартап, выйди на IPO, уговори гугл купить тебя за миллиард. И даже тогда, сидя в шезлонге под пальмам, со своим любимым и потёртым ноутом на коленях, на своём собственном острове ты всё равно не будешь знать — умеешь ты программировать или нет.

забавно, но вы вопрос дочитали?)

На первую работу, как раз такую должность, делал тестовое задание, очень простое, если за два дня справишься то думаю можешь начинать искать работу
Реализовать CRUD записную книжку
— мускуль субд, поля и количество таблиц как прикажет фантазия
— для доступа к базе использовать jdbc
— для MVC сервлет и jsp(никаких скриплетов, только jstl)
— минимальное число экранов
— должна быть валидация полей, как на стороне сервера так и на стороне клиента(я использовал тогда prototype для стороны клиента)
— должен быть поиск(искать не точные совпадения, а по частям, то есть чтоб найти дмитрия можно ввести дмитр или мит)
— проект собирается ant+ivy, сервлет контейнер бери любой

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

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

Само использование «Spring в J2EE» или любой другой технологии — это не программирование. Это конфигурирование.

Программирование — это умение решать алгоритмические задачи и воплощать их в виде программного кода. Ещё есть кодирование — это когда за вас задачу уже решили, а вам осталось только записать (у трейни/джуна так обычно и есть).

P.S. У многих программистов за всю карьеру не бывает задач, сложнее переворота строк/игр с массивами

Уметь программировать — полдела. Это на уровне «я вам дал задачу — вы мне ее решили». ЧТо мы ищем в кандидатах, это «я вам дал задачу — вы ее решили, и я не поседе от вида вашего решения». Если

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

то тогда вы точно умеете программировать.

Пример задачи вам: у вас есть HTTP-сервер, который умеет:
— принять JSON одним числом или массивом чисел и сохранить его в базу.
— по другому запросу вернуть среднее арифметическое по всем числам в базе.
Все это с тестами. Доступ к базе по JDBC. одной таблицы «numbers» хватит.

После этого следующий этап — веб-блог с постами и комментариями. Тут уже можно попробовать какой-нибудь ORM вроде Hibernate. Будет полезным.

Если бы мне попался этот комент в начале моей деятельности, я бы программером точно не стал .

Для ТС: myledi.net/...-enshteina.html

попроси тестовое у конторы, которая ищет джуниора джаву — если решишь то значит кое-что умеешь!)

как понять что умеешь программировать,

Устроиться на работу программистом и начать программировать

открою секрет: есть сеньоры, которые нифига не умеют программировать, только фиксить, болтать и 0внокодить.

Ну, дык, 23 года один раз проживаем, программирование подождет ))

Понять не могу этого... Неужели в нашей стране действительно можно просто быть самовлюбленным и красиво пудрить мозги, чтобы занять высокооплачиваемую позицию в хорошей компании? Ну, понятно, если в фаберликах так, или в компаниях по «мерчендайзингу лизинга». Но в IT!?

Это в любой стране так )

Программирование — приобретаемый навык, базирующийся на знаниях, а не черта характера, либо наследственность. Человек с детства учится ходить, говорить, читать и писать. Это умеют все, потому что прикладывают достаточно усилий для развития этих навыков.

Эксперта от trainee отличает наличие знаний: «Как и почему?» для каждой ситуации, а не просто выполнение каких-то действий по памяти.

Согласен с вами. Замечу, что мне очень симпатичен ваш ход мыслей и ваша откровенность(слежу за вами на форуме).
Но все же хочется конкретных примеров по задачам. Это знаете ли как в спорте, например есть нормативы, выполняя которые получаешь допустим 1 разряд или ксм

так есть проффесиональные сертификации по яве у оракла, причем вроде не дорого. второе есть кодилити (гдето тут свежая тема была) и там можна решать челленджы.

Які сертифікації? Який Codility?

речь идет об уровне trainee/low junior, разумеется не експерт) То есть задачи сложнее игр с массивами/переворота строки но легче использования того же Spring в J2EE.

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

ТС хоче завдання на рівні простого «шльопання формочок» для веб-сегменту.

Я бы сравнил IT с тюнингом автомобилей/мотоциклов. Сегодня вам надо поменять колесо в мопеде, а завтра надо гнать 5 «белазов» во Владивосток. Послезавтра просто перекрасить бампер 5 раз, потому что заказчик такой олень, через неделю вам подгоняют побитый шаттл и просят его подлатать, пытаясь вам впаривать, шо это таки транспортное средство. Если есть знакомые слесари/сантехники/механики — пообщайтесь с ними.

0) Программирование — не авантюризм и романтика дальних странствий, это лишь реализация очередных свистелок и перделок от заказчика.
1) Дело в том, что в IT-сфере все меняется достаточно быстро (если вы не сидите на legacy-support-е) по сравнению со спортом, где мировые рекорды бьются раз в несколько лет.
2) Нужно понимать и ощущать (далеко не все и не всегда описывается) требования в конкретной команде и на проекте.
3) Катастрофически необходимо быстро учиться и приспосабливаться (в хорошем смысле), если на проекте царит идиотизм — лучше уйти.
4) Табеля о рангах (1-й разряд, КСМ) не существует, что ИМХО плохо. Балаболы-мастера человеческого общения, основательно подлизавшись, могут стать senior-ами за 2-3 года или TL даже раньше. С другой стороны если человек 5 лет фиксит баги на JSP-ках и больше ничего, его тоже могут поставить senior-ом.
5) Большой дефицит кадров на рынке труда, активность IT-шников в сети, а также переманивание HR-ами разогревает и усугубляет ситуацию из п.4

P.S. Будьте готовы встретить массу глупых и подлых людей, приспособленцев на всех должностях. Будьте готовы что вас будут троллить и высмеивать.

Но все же хочется конкретных примеров по задачам. Это знаете ли как в спорте, например есть нормативы, выполняя которые получаешь допустим 1 разряд или ксм

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

Проблема института, в котором ты учишься такая же как у и большинства институтов сегодня (судя по образу твоего мышления, выраженного в топике). Она заключается в том, что вас там учат зачёты сдавать, а не использовать эти знания в реальной жизни, получая результаты. Типа, освоил минимального материала объем — всё, сдал. Стал «специалистом». Гордись и повесь диплом себе на стенку — гостям показывать и зарплату за его наличие получать. :)

В программировании всё не так. ВСЕГДА будет что-то чего ты не знаешь и что нужно будет узнавать. «Умею программировать» — это не milestone и не успешно сданный экзамен. Это — Путь.

Так что просто бери свой меч и займи его делом. :)

P.S. Можешь посмотреть тестовые задачи на желаемую позицию в реальных компаниях — будут тебе конкретные примеры по задачам.

Подписаться на комментарии