Я первый год специальности компьютерных наук. Я пошел на ярмарку вакансий, раздал резюме, к моему большому удивлению, я получил интервью и в конечном итоге стажировку в качестве разработчика.
Я объяснил интервьюеру (который будет моим начальником), что я только первый год и не имею большого опыта программирования. Он просто сказал мне, что, поскольку у меня хороший опыт в математике (я почти закончил бакалавриат по математике, а также у меня есть несколько курсов повышения квалификации под моим поясом), он уверен, что у меня все будет хорошо.
Я хорошо учусь на всех курсах программирования, но я все еще чувствую, что я в невыгодном положении. Прямо сейчас, я действительно хочу делать добро на этой работе, когда она начинается. Работа будет в основном использовать C #, но помимо того, что вы, безусловно, изучаете C #, какой навык вы хотели бы получить, прежде чем стать настоящим программистом?
Любой совет с благодарностью, но если у вас есть какие-либо книги, пожалуйста, сообщите. Благодарность!
Ответы:
В школе вы узнаете о написании кода. То, о чем вы не узнаете, так это остальная часть разработки программного обеспечения. Главные вещи, о которых я ничего не узнал в школе:
Это очень важные навыки для любого разработчика, и вы, к сожалению, вряд ли получите их в классе.
источник
Хотелось бы, чтобы я знал в начале своей карьеры, что как разработчик я играю очень важную роль в бизнесе . Я не просто обезьяна кода.
Как разработчик, вы имеете основную руку в части бизнеса, связанной с программным обеспечением, над которым вы работаете.
Если ваша компания не пишет тесты для своего кода, начните писать тесты сейчас.
Если они не отслеживают ошибки, найдите подходящий трекер ошибок сейчас.
Если ваш начальник хочет, чтобы вы сразу же начали работать над причудливой анимацией для заставки вашего приложения для работы с электронными таблицами - но у вас все еще есть десятки ошибок, которые нужно исправить, и несколько критических незавершенных функций до следующего срока выпуска клиента - поговорите о правильном определении приоритетов работы. ,
Даже если вы просто «нормальный сотрудник», ведение себя в качестве консультанта - отличный способ отделить себя от других разработчиков, которые просто пишут код и не ведут себя так, будто заинтересованы в бизнесе.
источник
Моя школа никогда не учила меня решать проблемы. Они научили меня механике кодирования, но уметь изучать проблему, понимать ее и находить решение - это то, чему они не учили. Это требует терпения, строгости и интуиции в дополнение к пониманию языка программирования.
Они также не учили о командной работе, о контроле версий и о важности написания кода, который легко поддерживать. Они также не учили многому о том, как тестировать программное обеспечение. Возможно, они коснулись модульного тестирования, но не слишком углубились в концепции приемочного тестирования, регрессионного тестирования и т. Д.
Отказ от ответственности: я пошел в колледж в 80-х. Тем не менее, я вижу доказательства этого с людьми, которых я нанимаю сегодня - новичками, которые очень мало знают о реальном мире программирования: контроле версий, тестировании, чистом кодировании, навыках отладки и т. Д.
источник
По моему мнению, некоторые из самых важных вещей, которые не изучены (или правильно изучены) в школе:
VCS, системы отслеживания ошибок, инструменты сборки и т. Д. - это инструменты, которые вы обязаны изучить, чтобы иметь возможность работать с командой; они не требуют много времени для изучения на базовом уровне и довольно просты после этого (по крайней мере, в начале); Приведенный выше список содержит тонкости, которые, если известны, увеличат вашу производительность.
источник
Самая большая вещь, которую я вижу в новых выпускниках - это хорошее понимание контроля версий.
Если у вас есть опыт разработки программного обеспечения с открытым исходным кодом с использованием репозиториев исходного кода (например, GitHub ), вы на шаг впереди
most
своих одноклассников.Второе - это понимание сложности (
big O
). Большинство людей, не посещающих колледж, слышали об этом, но им еще предстоит разработать настоящее программное обеспечение там, где оно вступает в игру, и, следовательно, не понимает его реальной важности.Когда ваши наборы данных настолько велики, что грубая сила никогда не собирается их сокращать, а понимание других методов полезно, а возможность угадать, когда грубая сила будет подходить для ситуации, - это то, что вы разрабатываете с опытом и делаете ошибки.
источник
Как правильно отлаживать, особенно с помощью отладчика и правильно подходить к устранению ошибки, то есть выяснить, что является причиной, выяснить, почему она возникает, и понять, почему ваше решение исправляет ее, а не просто пытается что-то делать и надеяться.
Большинство выпускников информатики поразительно слабы в отладке, и, как следствие, занимают гораздо больше времени, чтобы исправить вещи, чем необходимо, и создают больше ошибок при этом.
Стоит упомянуть и другие вещи, такие как контроль версий, отслеживание ошибок и т. Д., Но, на мой взгляд, отсутствие разумных подходов к отладке является гораздо более серьезной проблемой, требующей изучения.
источник
По моему опыту, программирование - это решение проблем. В моей школе они только проверяли, можете ли вы написать программу без синтаксической ошибки. То, что на самом деле требуется, не указывается в качестве входных данных. Синтаксис - это просто то, что вы можете найти в любых книгах, если это необходимо. Но способность решить проблему не может быть достигнута нигде, кроме того, что вы хорошо тренируетесь и готовитесь к ней.
Пусть это будет любой тип, попробуйте ответить на максимально возможное количество вопросов, чтобы у вас появилась уверенность в себе. Попробуйте сделать это с какой-то страстью в уме, и вы наверняка справитесь.
источник
Потратьте некоторое время на изучение некоторых общих шаблонов проектирования: фабрика, синглтон, адаптер, команда и наблюдатель (мой колледж их не учил).
Если компания использует гибкую методологию для разработки программного обеспечения, было бы полезно иметь некоторое представление об этом.
источник
Многие из навыков, которые вам понадобятся в качестве профессионального программиста, практически невозможны для каждого в университете / академической среде.
Они могут прийти только из опыта работы непосредственно на местах.
Научиться сотрудничать и общаться с людьми вне вашей «профессии», такими как графические дизайнеры, дизайнеры, менеджеры и т. Д.
Понимание того, что ваша задача - не писать код, а воплощать продукт в жизнь. Легче сказать, чем сделать.
Умение сочетать хорошие практики кодирования с практическими соображениями. Получение способности судить, когда код «достаточно хорош», «перегружен» или «нуждается в рефакторинге».
Учимся преодолевать собственные слабости и неуверенность. Приобретение способности противостоять критике. Отпусти свое эго. Узнав, что значит взять на себя личную ответственность, а затем принять ее.
Легко читать обо всем этом. Это совсем другое дело - применять это на практике. Единственный способ это сделать. Вы будете много раз кусаться, и это, вероятно, будет больно, но вы выйдете из этого сильнее и лучше.
Соответствующее чтение: шаблоны ученичества
источник
Все зависит от школы. В моем колледже у нас много практических проектов. Довольно часто в командах и с использованием различных источников контроля. Поэтому я думаю, что некоторые школы сосредоточены на них.
Но школа не учит одно: детали. Довольно часто, когда школа преподает какую-то технологию или практику (например, веб-разработку, разработку пользовательского интерфейса JAVA, продвинутые базы данных), они лишь поверхностно рассматривают и никогда не углубляются в детали, которые были бы необходимы для использования этой технологии или практики в реальном бизнесе. Вы получите общий обзор возможных способов решения ваших проблем, но вам нужно будет самостоятельно изучить необходимые детали.
Только время, когда школа учит чему-то в деталях, - это когда за чем-то стоят сильные математические или теоретические знания. Такие вещи, как формальные языки или базы данных SQL, нередко являются основной частью школьной программы, потому что они построены на математической основе и широко используются в компьютерных науках или технике.
источник
источник
Хотелось бы, чтобы я раньше решил в игре, хочу ли я быть общим программистом, изучать много разных вещей, языков, баз данных и платформ и в конечном итоге стать веб-разработчиком, или я должен просто специализироваться на одной CMS, или даже просто специализируясь на Photoshop, будучи специалистом, ваши навыки были бы столь же ценными и прибыльными, чем знание того, что должен знать настоящий программист. Другими словами, если вам просто нужно хорошо заработать, просто специализируйтесь на ОДНОЙ ВЕЩИ. Если вы любите компьютер и любите решать проблемы, будьте программистом.
[размышляя над и после изучения, как 4 или 5 различных javascript-фреймворков, до того, как JQuery действительно стал сильным, получение сертификата в JAVA и никогда не получение позиции java, а также после работы на нескольких платформах; AS400- rpg,> .NET - c # и PHP, прежде чем пожелать, я просто освоил Photoshop и заработал равные деньги без необходимости исправления ошибок или написания программного обеспечения. ]
Я имею в виду, что знание широкого спектра тем приносит определенное удовлетворение, но удовлетворение оказывается затрудненным, когда вы видите кого-то, кто только что знает фотошоп, получает ту же зарплату.
источник