как пример знаю одного сеньора C#, который мне заливали что общение с моей платой должно выглядеть так - он делает коннект, отправляет мне пакет и делает дисконнект и каждый пакет так, что такое listen он знать не знает, ему надо было после каждого пакета рвать соединение, на сколько это сильный программист на ваш взгляд? Я пытался разобраться почему ему так надо, выяснил что у него там деструкторы зовутся при всякой маршелизации, я даже не стал ворошить это осиное гнездо, закончилось что я просто написал ему dll и so, которые адекватно работают
Вы определяете "силу" программиста по его способности решать системные задачи. Но тот пример, который Вы привели, это не проблема отсутствия академических, как Вы сказали, знаний, а проблема неверного подхода того C# синиора к решению задачи. Ему надо было бы разобраться в причинах происходящего, вспомнить/разобраться, как работают TCP сокеты, как C# управляет памятью и неуправляемыми ресурсами. А что сделал он? Остался на своем уровне абстракции и придумал неэффективное "решение", которое просто работает в его искаженной картине мира. Сильный прикладной программист не тот, который знает больше и из-за этого не допускает ошибок, а тот, который может загуглить "c# tcp socket keeps closing" и найти информацию про IDisposable, using и правильное управление жизненным циклом соединения. Сегодня с AI это так вообще делается за мгновения. Большинство прикладных разработчиков не используют те же алгоритмы в сыром виде. Значит ли это, что они не нужны? Они должны понимать сложность алгоритмов не для того, чтобы применять ежедневно, а чтобы не написать случайно в коде цикл в цикле там, где это приведет к коллапсу системы при 1000 пользователях. Поверьте, заказчику, если это не продуктовая компания, глубоко фиолетово, знаете вы упомянутые вами BWT-преобразование или нет, пишете код сами, или его вам приносит на блюдечке брат, сват, сосед или AI. Вы программируете, чтобы решить задачу заказчика, а не экзаменатора. Я знаю сотни разработчиков, которые работают в геймдеве или вебе, и понятия о бинарном поиске не имеют. И производят результат, которым клиент доволен. Программист на Python, который создал веб-сервис с миллионной аудиторией, не обязательно сможет написать драйвер. Это разные "виды силы".
где-то в инете читал тоже такую тему, что надо знать из таких-то языков, и вобщем повторю частично, придётся знать С(и всю зависимость, это если разобраться) по другому сразу тогда (любой другой ЯП) алгоритмы/структуры данных, но по итогу истина по середине причем зная С/С++, что-то изучить проще может быть даже сразу изучайте раст если вам нравится, всё равно по итогу вникать придётся во всё
Здесь скорее вопрос личного интереса и мотивации. Если ты мечтаешь разобраться, как работает процессор, тебе будет интересно. А если ты сайты хочешь делать, тогда такой метод приведет лишь к выгоранию. Алгоритмы никто не отменял. Но вот я например, надо было мне разобраться, как работает экран, пиксели физические и логические, для решения конкретной задачи, я с большим интересом изучал. А с низу вверх...
Используют раздутые неоптимальные фреймворки, когда достаточно мелкой библиотечки или и вовсем мелкой самописной функции с меньшими накладными расходаим и куда лучшей ассимптотикой алгоритма, применяют структуры данных не по назначению и т.д. и т.п.. Не счесть примеров подобных косяков, все из которых растут из банального незнания и нежелания бороться со своим незнанием т.е. учиться. Я не говорил что не нужно учить фреймворки и библиотеки, я говорил что нужно знать их лучше и применять их в нужных местах, а не где и как придётся, как это всё чаще делается сегодня.
Даже если человек погружен в низкий уровень, на то, чтобы разобраться в библиотеках, ему понадобится время. Если перед тобой стоит задача использовать более маленькую и возможно, производительную библиотеку, пожалуйста, сегодня есть AI, который проанализирует тысячи ссылок минут за 10 и даст результат. Более того, если в тз или спецификации нет требования о маленьком размере бинарника, это не твоя забота, как разработчика. Итак, каков смысл в том, чтобы тратить время на изучение каждой библиотеки внутри? Time to market важен. И компания всегда заинтересована оставить не специалиста, который знает глубже, а того, который сделает быстрее и эффективнее. Компании не позволено держать зазнайку, который знает больше, а делает дольше. Таким образом, постепенно специалисты делятся на тех, которые научились применять AI и на тех, которые не приспособились. То же, что и с плюсами. Сайты на ассемблере делать можно. И делали. Пойди на рынок, заработай на этом...
То что программирование эволюционирует и развивается не говорит о том что программисты должны останавливаться в развитии и стагнировать
Развитие не лишь движение во внутренности. Это и движение (изучение новых фреймворков, архитектурных подходов, предметных областей) и "вверх" (от кода к архитектуре системы, к управлению проектом). Если Вы работаете/работали в компании, то быть может знаете, что в IT так бывает, когда в архитектора переходят из аналитики, иногда из QA.
Наобум склеить библиотечки вместе, чтобы на выходе получился "работоспособный" кусок логики сегодня любой очередняр может
Есть градации, такие как джун/мидл/синиор. Синиоры могут погружаться в платформу, но это не значит, что они даже знают информатику на высоком уровне.
Ребенку пять лет понадобится не для изучения языка, а для развития. Или же Вы полагаете, что ребенок рождается с развитой нервной системой? Есть дети, которые вполне сносно говорят в 2-3 года. А по поводу труда, согласен. Когда Вы изучаете языки по классическим методикам, их надо долбить, долбить, и еще раз долбить. В моем случае, на новый язык я трачу от силы полчаса/час, и за несколько месяцев - B1. Правда эти полчаса/час должны быть ежедневными.
Салом! Я уверен, что такое бывает. Например, мне не нравится китайский. Вот абсолютно. Но при этом, мне нравится японский. А потому я уверен, что у кого-то к английскому может быть отношение, как у меня к китайскому. Здесь наверное можно мотивировать себя перспективами. А если их нет, так и смысл... P.S. До сих пор помню, когда узнал слово "дур" на персидском. Вот же я ухохатывался...
Ну я начинал изучать Python глубоко не в школе, а по курсам одного из разработчиков интерпретатора CPython. В Python есть и механизмы для реализации нормальной модели инкапсуляции, и возможность сделать геттеры сеттеры через декораторы. Вопрос в используемости.
Не знаю, как работает у иных, я если дело начинаю краткосрочное, заканчиваю его. Проблема в том, чтобы попан поднять с кровати вообще! А там уж, маленькое дело, или большое...
Вы определяете "силу" программиста по его способности решать системные задачи.
Но тот пример, который Вы привели, это не проблема отсутствия академических, как Вы сказали, знаний, а проблема неверного подхода того C# синиора к решению задачи. Ему надо было бы разобраться в причинах происходящего, вспомнить/разобраться, как работают TCP сокеты, как C# управляет памятью и неуправляемыми ресурсами. А что сделал он? Остался на своем уровне абстракции и придумал неэффективное "решение", которое просто работает в его искаженной картине мира.
Сильный прикладной программист не тот, который знает больше и из-за этого не допускает ошибок, а тот, который может загуглить "c# tcp socket keeps closing" и найти информацию про IDisposable, using и правильное управление жизненным циклом соединения. Сегодня с AI это так вообще делается за мгновения.
Большинство прикладных разработчиков не используют те же алгоритмы в сыром виде. Значит ли это, что они не нужны? Они должны понимать сложность алгоритмов не для того, чтобы применять ежедневно, а чтобы не написать случайно в коде цикл в цикле там, где это приведет к коллапсу системы при 1000 пользователях.
Поверьте, заказчику, если это не продуктовая компания, глубоко фиолетово, знаете вы упомянутые вами BWT-преобразование или нет, пишете код сами, или его вам приносит на блюдечке брат, сват, сосед или AI. Вы программируете, чтобы решить задачу заказчика, а не экзаменатора.
Я знаю сотни разработчиков, которые работают в геймдеве или вебе, и понятия о бинарном поиске не имеют. И производят результат, которым клиент доволен.
Программист на Python, который создал веб-сервис с миллионной аудиторией, не обязательно сможет написать драйвер. Это разные "виды силы".
Определите термины. Действительно сильный программист - это?
Здесь скорее вопрос личного интереса и мотивации. Если ты мечтаешь разобраться, как работает процессор, тебе будет интересно. А если ты сайты хочешь делать, тогда такой метод приведет лишь к выгоранию.
Алгоритмы никто не отменял. Но вот я например, надо было мне разобраться, как работает экран, пиксели физические и логические, для решения конкретной задачи, я с большим интересом изучал. А с низу вверх...
Даже если человек погружен в низкий уровень, на то, чтобы разобраться в библиотеках, ему понадобится время. Если перед тобой стоит задача использовать более маленькую и возможно, производительную библиотеку, пожалуйста, сегодня есть AI, который проанализирует тысячи ссылок минут за 10 и даст результат.
Более того, если в тз или спецификации нет требования о маленьком размере бинарника, это не твоя забота, как разработчика.
Итак, каков смысл в том, чтобы тратить время на изучение каждой библиотеки внутри?
Time to market важен. И компания всегда заинтересована оставить не специалиста, который знает глубже, а того, который сделает быстрее и эффективнее. Компании не позволено держать зазнайку, который знает больше, а делает дольше.
Таким образом, постепенно специалисты делятся на тех, которые научились применять AI и на тех, которые не приспособились.
То же, что и с плюсами. Сайты на ассемблере делать можно. И делали. Пойди на рынок, заработай на этом...
Развитие не лишь движение во внутренности. Это и движение (изучение новых фреймворков, архитектурных подходов, предметных областей) и "вверх" (от кода к архитектуре системы, к управлению проектом). Если Вы работаете/работали в компании, то быть может знаете, что в IT так бывает, когда в архитектора переходят из аналитики, иногда из QA.
Есть градации, такие как джун/мидл/синиор. Синиоры могут погружаться в платформу, но это не значит, что они даже знают информатику на высоком уровне.
Вы можете привести практические примеры, пожалуйста?
Ребенку пять лет понадобится не для изучения языка, а для развития. Или же Вы полагаете, что ребенок рождается с развитой нервной системой?
Есть дети, которые вполне сносно говорят в 2-3 года.
А по поводу труда, согласен. Когда Вы изучаете языки по классическим методикам, их надо долбить, долбить, и еще раз долбить. В моем случае, на новый язык я трачу от силы полчаса/час, и за несколько месяцев - B1. Правда эти полчаса/час должны быть ежедневными.
Салом!
Я уверен, что такое бывает. Например, мне не нравится китайский. Вот абсолютно. Но при этом, мне нравится японский. А потому я уверен, что у кого-то к английскому может быть отношение, как у меня к китайскому.
Здесь наверное можно мотивировать себя перспективами. А если их нет, так и смысл...
P.S.
До сих пор помню, когда узнал слово "дур" на персидском. Вот же я ухохатывался...
Так карточки нужно делать самому:
https://apps.ankiweb.net/
Ну я начинал изучать Python глубоко не в школе, а по курсам одного из разработчиков интерпретатора CPython.
В Python есть и механизмы для реализации нормальной модели инкапсуляции, и возможность сделать геттеры сеттеры через декораторы. Вопрос в используемости.
Так я же не говорю, что они сложные. Я говорю, что в Python их нет, а соответственно, код проще, время разработки сокращается))
Положа руку на сердце, я без ума от C#.
Но знаешь, как иногда хочется забыть, о свойствах, геттерах/сеттерах, делегатах, событиях и всем вот этом...
Эээх, хотел бы я знать, насколько в тех банках сложная логика...
А про использование, ну знакомый Sinior Java говорит, что новое пилят на C#. Хотя до сих пор есть те, что искренни верят, что .NET это о Windows))
Не знаю, как работает у иных, я если дело начинаю краткосрочное, заканчиваю его. Проблема в том, чтобы попан поднять с кровати вообще! А там уж, маленькое дело, или большое...