Який набір навичок повинен мати кожен програміст, який закінчив коледж? [зачинено]


9

У нас у школі був гостьовий викладач, він пішов по дотичній щодо тих, хто закінчив навчання і не досягає рівня кваліфікації, якого він очікує, тобто. знання однієї мови, складеної великим часом, як Java, C ++ або C #, однієї мови сценаріїв, таких як Python або Ruby, однієї веб-рамки. Які ще навички, на вашу думку, мають бути абсолютно важливими для випускника?


Я припускаю, що ви маєте на увазі закінчення університету?
Майкл Шоу

1
@Ptolemy: У Штатах термін коледж правильний.
Macneil

1
Бажання вдарити себе в дупу і навчитись текстовим повідомленням говорити, молоді панки! socializedpr.com/…
Робота

Відповіді:


27

Напевно, я б сказав, прагнення вчитися. Коледж насправді не призначений для того, щоб дати вам навички, необхідні, щоб стати програмістом. Він покликаний навчити вас навичкам, необхідним для засвоєння цих навичок.


Не міг би сказати це краще.
Кріс

4

Новим випускникам потрібно більше, ніж просто бажання вчитися, їм потрібна нав’язливість у навчанні, розуміння того, як вчитися, і міцне обгрунтування реалій програмного забезпечення. Мені взагалі все одно, які мови ви знаєте, але кожен молодший повинен:

  1. Розуміти історію . Інформатика - це добре вивчена галузь, що має багато вирішених проблем. Знання цього факту відкриває двері до навчання з того, що перед вами. Навіть знаючи, що є багата історія, на яку мої знання, більш ніж багато випускників grok. Сюди входять такі речі, як велика нотація O, історія алгоритмів, принципи пророків (Knuth, K&R, Hofstdater тощо) та загальноприйняті практики та зразки.

  2. Знай, що це можна вирішити . Я завжди здивований, коли розробник наткнувся на проблему. Частина навчання, щоб навчитися, - це простий принцип, що проблеми легко вирішуються завжди. Коли ви це знаєте, це обрамляє ваше мислення для пошуку розумної відповіді.

  3. Зрозумійте розкладання . Проблеми не тільки можна вирішити, але шлях до цього простий, як розділити та перемогти. Зведіть проблему до більш простих компонентів, і ваша відповідь завжди буде представляти себе.

  4. Знати, як виміряти . Окрім того, що можуть розкласти проблеми, нові розробники повинні знати, як збирати факти про ці проблеми. Як довго? Як великі? Як швидко? Як багато? Прості факти - це крок до розуміння та об'єктивного мислення. Створення припущень без фактів - простий спосіб загубитися в проблемному просторі.

  5. Будьте об’єктивними . Усі проблеми можна розкласти, виміряти і зрозуміти просто. Проблеми, які неможливо зрозуміти, просто вимагають додаткового розкладання, вимірювання та розуміння. Немає жодної користі в гніві чи розчаруванні, і не продуктивне сперечатися щодо теорій чи винуватити це. Будь-яка ірраціональна поведінка чи переконання, пов'язані з процесом вирішення проблем, є отрутою, тому рішення дуже важко знайти.

  6. Віддавайте перевагу зразкам і принципам . Ви зіткнетеся з десятками правильних способів робити речі, мови, моделі програмування, архітектури комп’ютера та навіть методи інженерії. Не існує єдиного правильного способу, але є міцні основні концепції, які можна застосовувати знову і знову. Навчіться бачити ці зразки, оскільки вони будуть спрямовувати ваше навчання та мислення на кожному кроці.



0

Як роботодавець я буду наймати лише людей як програмістів, які:

  1. Майте досвід одиночного переходу коду.
  2. Можна вибрати відповідний дизайн, щоб вирішити просту конкретну проблему.
  3. Може реалізувати код, який відображає обраний імідж дизайну.

За моїм досвідом, менше 5% випускників інформатики, які подають заявки на роботу з програмування, насправді мають ці навички на базовому рівні. Це мінімальні навички, необхідні для комерційної корисності, і що важливо, не всі здатні засвоїти ці навички.

Іншими приємними є:

  • Досвід роботи над командним проектом
  • Використання управління джерелами
  • Досвід тестування підрозділу

Вони полегшують їх інтеграцію з існуючою командою розробників, але це теми, які зазвичай можна викладати на роботі.


0

Колись у мене була команда, яку я «успадкував» з переважно нещодавно закінченим персоналом, і я мав свій досвід, що ті, хто займався реальним програмуванням «поруч» там навчалися (щоб заробити трохи додаткових грошей), були найбільш здібними членами команди. Отже, досвід є ключовим, і мало значення має, на якій мові.

Однак якщо ви подивитеся, що шукають рекрутери (на всіх поширених сайтах рекрутерів, таких як jobserver.com тощо), цікаво зауважити, що про C ++, C #, Java дуже багато запитують, але також є інші, які шукали і також "екзотичні" речі, такі як COBOL, все ще існують.


0
  1. Міжособистісні та комунікативні навички
  2. Прагматичний підхід (не те, що академічна теорія)
  3. Здатність мислити як клієнт, який не є технічно схильним
  4. Можливість оцінити, що важливо / що можна знехтувати, з точки зору витрат / вигод
  5. Здатність працювати в команді
  6. Здатність мислити стратегічно: архітектура, розширення, масштабованість
  7. Відкритість визнати, що навчання в університеті мало спільного з реальним світом (залежить від університету - дещо краще від цього).

Процес навчання з цієї професії ніколи не закінчується. Треба постійно вчитися і вдосконалюватись, інакше він швидко вибивається з гри.


Це всі корисні. Однак майже нульові випускники університетів мають їх, і вони не критичні, оскільки більшість легко здобуваються на робочому місці. Я думаю, ти відповідав на інше запитання.
dbkk

@dbkk - Вибачте, але питання полягало не в тому, "які вміння мають програмісти, які закінчують", а в тому, "що ... повинно мати". Також ні, їх не легко придбати. Зовсім навпаки - частіше за все люди з багаторічним стажем все ще бракують більшості з них.
Грак

1
Це загальні навички, і багато хто не реально підходять для навчання в школі.
Девід Торнлі

-1

Інші відповіді хороші, але я б сказав, що недоглянута майстерність №1 в університеті, здається, справжня інженерія програмного забезпечення .

Основні класи для викладання OOP та такої мови, як Java, чудові, але на третьому та четвертому курсах чому студенти (принаймні в моєму місцевому університеті) пишуть компілятори та операційні системи замість того, щоб навчитися визначати та створювати гарну архітектуру, як розбирати вимоги та створювати з цього списку технічні характеристики, і, можливо, найголовніше, в чому різниця між хорошим кодом, який працює, і поганим кодом, який працює.

Наче наші університети майже хочуть вимкнути кодери замість програмних інженерів . Я ніколи не наймав би когось, хто не проявив би певної майстерності / таланту в техніці.


4
Бо те, що людей навчають, - це інформатика, а не інженерія програмного забезпечення. Ця проблема пішла б, якби університети та студенти зрозуміли, що інформатика! = Інженерія програмного забезпечення, інформатика - це наука, інформатика - це не програмування, а інженерія програмного забезпечення - це більше, ніж програмування.
Томас Оуенс

-1. Вивчення того, як працюють речі під кришкою (компілятори, ОС, мова складання тощо), важливо, навіть якщо ви ніколи не працюєте на цьому рівні, тому що в якийсь момент ви зіткнетеся з проникливими абстракціями.
dimimcha

@dsimcha, якщо ви вірите в це, ви маєте дуже вузьке уявлення про те, які види програмних інженерів зараз використовуються компаніями в реальному світі. Справа не в тому, що ці речі не приносять ніякої цінності - це додаткова вартість того, щоб не навчити чогось більш істотного.
Ніколь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.