День добрый.
Поясню вопрос:
Кодер (для меня) - человек, который способен писать хороший код
Программист - специалист, которые разбирается во многих аспектах языка на котором работает, а также в смежных областях, вроде математики.
На данный момент я могу себя позиционировать как C++ кодер - знание и использование всех стандартов до 17 включительно, умение работать с многопоточными примитивами, умение оптимизировать код, разбираться с чужим и т. д.
Но меня не оставляет сомнение, что по сути, я ничего конкретного не умею: на написание простейшего КМП может уйти вечность, потому что углубляюсь в код и ищу оптимальные методы на протяжении нескольких часов, в то время как можно было бы реализовать более громоздко, но за два часа, а то и меньше. Нет представления об асимптотической сложности алгоритмов, и структур данных.
В общем в голове сидит мысль, что единственное, что я могу - писать красивый и эффективный код. Куда копать чтобы от этого избавиться? Пока что штудирую книги по алгоритмам, но мне этого кажется мало
...может уйти вечность, потому что углубляюсь в код и ищу оптимальные методы на протяжении нескольких часов, в то время как можно было бы реализовать более громоздко, но за два часа, а то и меньше.
Сила воли не помогает?)
Пока что штудирую книги по алгоритмам, но мне этого кажется мало
Штудируете книги по алгоритмам и вылизываете алгоритмы, это же логично. Попробуйте поискать что-нибудь по архитектуре, TDD и вот этому всему.
Думаю хорошие программисты все идеалисты. Именно поэтому им все время не нравиться то, что они делают. Сегодня тебе кажется, что ты пишешь красивый код. А через месяц смотришь на свой тот же код, и думаешь: - "блин что за урод это писал, ну как так можно".))
Кодер и программист это одно и то же, как мне кажется.
С лингвистической точки зрения это тот человек который владеет языком машины.
Тот кто умеет писать код - то есть умеет заставить машину работать.
На самом деле в природе такое разделение:
1) слесари монтажники (работают в рамках готовой архитектуры) 90% популяции 2) инженеры (разрабатывают архитектуры) 10% популяции
Если хочешь стать инженером - надо просто больше учиться - читай все вузовские учебники для инженеров-программистов и практикуйся.
Под оптимизацией я имею ввиду "на глазок" - нередко удаётся уменьшить количество циклов/итераций в нём, избавиться от ненужных временных значений и переменных
The Clean Coder: A Code of Conduct for Professional Programmers / Идеальный программист. Как стать профессионалом разработки ПО
Год издания: 2012
Robert C. Martin / Роберт Мартин
Издательство: Питер
ISBN: 978-5-459-01044-2
Clean Code: A handbook of software craftsmanship / Чистый код: Создание, анализ и рефакторинг
Год издания: 2013
Автор: Robert Martin / Роберт Мартин
Издательство: Питер
ISBN: 978-5-496-00487-9
Clean Architecture / Чистая архитектура
Год издания: 2018
Автор: Robert C. Martin / Роберт Мартин
Издательство: Питер
ISBN: 978-5-4461-0772-8
Я думаю, что всё у тебя нормально. Депрессивыне мысли в нашей профессии встречаются. Если хочешь перемен, то найди(смени) работу, где у вас будет четкий дедлайн до которого у тебя не будет времени над обдумыванием а как вот тут красиво, а как вот здесь подправить. Просто берешь и делаешь, и всё.
Ну и книги книги читать
дедлайн проблему не решит полностью, тут скорее надо попасть в сильную команду с адекватным код ревью и ментором, если повезет. Вариант 2 - читать книги, статьи и много кодить, спустя некоторое время с новыми знаниями возвращаться, проводить ревью своего же кода и делать выводы
Типа Опа, мы с вами на брудершафт не пили. Зачем мне давать ответ к этому вопросу, если я согласен с одним из существующих? Ответ ради ответа? Разве не для этого предназначена кнопка "Нравится"?
Что касается ответов, у меня их достаточно, в том числе конверсия в решения. Если уж на то пошло, то у вас 19 ответов с конверсией 5%, а у меня 480+ с конверсией в 27%. Так что прекратите хамить, и имейте уважение к собеседникам.
Mover 420, все просто, дедлайн обычно увеличивает количество быдлокода (технический долг, по-научному), а не уменьшает его.
Проблемы автора стоит решать написанием своей библиотеки контейнеров для глубокого понимания, и изучением теории вычислительной сложности. Обычно, все это дают в университете, но если уж не повезло, нужно не заметать проблемы под ковер, а решать их.
Ваша проблема в том, что вы не планируете разработку программы.
Задайте себе вопрос: что я смогу написать за сегодня?
И постарайтесь это написать.
Так вы научитесь измерять код в трудоднях. И начнёте искать решения проблемы не "как написать красивый код", а "как написать столько много кода и не свихнуться".
Потому что реальные программы измеряются в человекогодах.
Если вы найдёте способ программу объёмом, допустим, в 10 человеколет написать за 5 человеколет, то это уже будет сделать экономически выгодно. Вы начнёте искать варианты финансирования своего проекта.
Так и создадите успешную компанию по разработке ПО.
Бывает код дешёвый и код дорогой. Вы сейчас начинающий разработчик, поэтому ваш код ничего стоит, и вы можете потратить хоть месяц на решение какой-нибудь задачки, которую какой-нибудь школьник на олимпиаде решит за два часа.
Но чем больше вы знаете, тем дороже стоит ваше время, и года через три у вас уже не будет этого месяца. Поэтому вам надо научиться программировать быстро, то есть экономически эффективно.
В противном случае через три года вы станете заниматься чем-то другим, с программированием может быть даже и не связанным непосредственно. Просто это будет приносить вам больше денег, чем программирование.
>>Программист - специалист, которые разбирается во многих аспектах языка на котором работает, а также в смежных областях, вроде математики.
Математика уже "Смежная область"? Дональд Кнут плачет кровавыми слезами.
>>На данный момент я могу себя позиционировать как C++ кодер - знание и использование всех стандартов до 17 включительно,
Со всеми версиями компиляторов и фрэймворков? Хотел бы я посмотреть на человека, который знает весь Boost/Qt/SDL/Gtk.
Это как сказать, что я знаю Таэквондо, вин-чун, тайский бокс, джиу-джитсу и много других страшных слов.
Прошу, не будьте таким токсичным. Под стандартами я подразумевал 11, 14, 17 и им предшествующие. Про фреймворки не было и слова, читайте, пожалуйста, внимательнее. И под смежными областями я подразумевал те, что могут пригодиться при разработке случайного кода.
1 2, Не будь таким самоуверенным. Знать стандарты языка - просто. Все чудеса шаблонов и дженериков не знает никто. Это не "токсичность" это просто профессиональная деформация.