Чи можливо любителю стати хорошим програмістом? [зачинено]


46

Професійний штатний програміст може зробити чудову роботу, постійно навчаючись на своїй роботі. Як може програміст-любитель тренуватися, щоб стати хорошим програмістом?

** Якщо ви любите грати музику або співати, ви можете це зробити, тому що це ваше хобі і вам цікаво, і ви можете стати хорошим співаком або музичним плеєром. Але не потрібно ставати професійним співаком або займатися співом на життя. Це справедливо і для програмістів? Будь-який аматорський програміст, який відомий?


3
Правильно. Тож Возняк не був хорошим програмістом, поки перший Apple не був проданий (і він, таким чином, став "професіоналом").
KeithS

Визначте "добре" ..

2
Кожен «хороший» програміст колись був любителем.
spudwaffle

Відповіді:


84

Ключ до того, щоб стати справді хорошим - це робота в хорошій команді. Багато любителів працюють поодинці, тож вони дістаються лише так далеко. У команді ви навчаєтесь від інших, і стаєте дисциплінованими, тому що ваші однолітки будуть ударяти вас тим, що стане в нагоді інакше.

З цієї причини я пропоную вам приєднатися до команди, наприклад, з відкритим кодом, або зробити хобі-проект із деякими друзями.


9
+1 За роботу в хорошій команді. Наявність у вашій команді людей з рівними чи вищими кваліфікаціями надзвичайно мотивує.
БенР

Забув участь команди в моєму списку "Підводні камені", +1
keppla

2
+1 Я думаю, що це головне: вчитися у добрих людей, які мають більший досвід, ніж ви. Приєднатися до хорошої команди набагато простіше, ніж зробити.

1
+1 за гарну команду. Якщо команда не така гарна чи краща за вас, ви не навчитесь.
Спенсер Ратбун

4
Вам не потрібно бути в команді, щоб вчитися у інших людей.
Емануїл Русєв

53

Шлях до того, щоб стати хорошим у програмуванні, такий самий, як і для співу чи відтворення музики: тренуйтеся, практикуйте, практикуйте. Якщо ви витрачаєте достатньо часу на регулярне розробку програмного забезпечення протягом декількох років, швидше за все, ви станете добре в ньому - будь то всередині або поза робочим часом.

Тепер, крім того, щоб витрачати більше часу на практику, є ще одна причина, чому професіонали зазвичай стають кращими, ніж аматори в певному сенсі (в музиці, а також в програмуванні). Якщо ви є професіоналом, ви повинні виконувати завдання, які вам не обов'язково подобаються, але належать до ширшої роботи з розробки програмного забезпечення (наприклад, тестування, обговорення з клієнтами, написання документації, налаштування середовища розробки / складання, написання сценаріїв побудови тощо). ). І раз у раз на вас також натискають заходити в незнайомі райони, вивчати нові мови чи платформи. Як любитель, ви не змушені робити все, чого не хочете, через що, швидше за все, ви залишаєтесь у зоні комфорту протягом більшої частини свого життя. Іншими словами, ви можете легко обмежитися однією або кількома конкретними сферами, які вам найбільше подобаються,

ОТОХ багато професійних розробників також потрапляють у це, залишаючись в одній компанії, виконуючи ту саму рутинну роботу, ледве не навчаючись чомусь новому протягом десятиліть ... Тож ключовим фактором для покращення є ваше ставлення. Якщо ви будете продовжувати вчитися і свідомо шукати можливості переїхати зі своєї зони комфорту на нову, незнайому територію, з часом ви перевершите ці рої, що повільно скам’яніють «професіоналів». Хорошим способом цього може бути сприяння деяким проектам з відкритим кодом.

Рекомендоване читання - Прагматичний програміст: від мандрівника до майстра - з великою кількістю чудових і дуже практичних порад про те, як продовжувати ставати кращими.


3
+1 10-годинне правило Малкольма Гладвелла від en.wikipedia.org/wiki/Outliers_(book)
StuperUser

Хоча професіоналу доводиться робити неприємні роботи, є й інша сторона - ці неприємні роботи часто є нудними, виснажливими роботами, які мало вчать. IOW аматор часто може дізнатися більше за той самий час, вибравши розробку цікавих проектів. АЛЕ одне важливе заняття - це, звичайно, те, що ви повинні бути готові виконувати тугу і виснажливу роботу. Мені особливо подобається ваш "внесок у проекти з відкритим кодом", тому що це означає працювати з ким-небудь іншим кодом - навчання на прикладі, як читати незнайомий код тощо
Steve314

@StuperUser ваше посилання порушено (друга дужка не включена до гіперпосилання).
Paperjam

Найкраща порада, яку я коли-небудь читав: "Якщо ти хочеш стати порядним художником, малюй. Кожного ранку робіть ескіз, ви не можете допомогти, але покращитись". Знайдіть проект .. прибуток там, якому потрібна допомога. Попросіть поради ("Я будую систему виставлення рахунків, з чого я починаю?", "Як мені обробляти контекстну безпеку?" тощо) .. вартість відмови низька, і ви можете просто отримати платіжний концерт з нього ..
Боббі D

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

18

Але як для програміста-любителя, як можна тренуватися, щоб стати хорошим програмістом?

Ви стаєте кращими завдяки навчанню, що є частиною роботи, частиною роздуму над зробленим.

Так що, по суті, немає різниці між любителем та професійним, але "підводні камені" влаштовані дещо інакше.

Аматорські підводні камені є, імхо

  • потреба закінчити свій проект, незважаючи ні на що, не настільки сильна, коли ти не професіонал . Це може бути хорошою справою, адже ви не отримаєте того, що звикли різати кути, коли мова йде про якість, але оздоблення (взагалі! Вчасно навіть краще) - дуже важливий навик, який важче тренувати як любителя, адже легко просто дозволити проект померти і почати інший.

  • необхідність добре спілкуватися не настільки сильна. У професійному проекті є сильний стимул по-справжньому зрозуміти клієнтів, навіть якщо вони абсолютно не в змозі скласти лише одне цілісне речення, яку проблему вони хочуть, щоб ви вирішили. Якщо ви неправильно їх розумієте, або (звичайний випадок) не помічаєте, що вони не говорять про щось, що вам потрібно зрозуміти, це рано чи пізно стане вашою проблемою. Аматорський проект може легко втратити всіх потенційних користувачів через те, що вони не вирішують їхніх проблем, і бути «готовим» технічно.

Професійні підводні камені є

  • Часто мало мотивації оздоровитись . Ви там 40 год / тиждень, незалежно від того, знайдете ви ліки від раку чи просто п'єте каву таким чином, що виглядає продуктивним. Навчання - це те, що ви робите в основному для себе, і часто, якщо намагаєтесь застосувати вивчене, виникають сили, які проти цього працюють (консервативна думка про групу, ієрархії, навіть стилі керівництва можуть використовуватися як зброя проти вдосконалень). Професії потрібно багато любові, щоб не просто відмовитися від неї, зламати свої години та шукати альтернативні цілі в житті.

  • там часто мало чому навчитися . Так, один МОЖЕТ спробувати сприймати все як виклик, але ми маємо бути чесними: після 1 року коду спагетті вам не дозволяють переробляти рефактор ("ви це ускладнюєте!") Мовою, у якої є більше років досвіду, ніж це, мабуть, триватиме, єдине, що засвоюється - це побудувати толерантність до фрустрації та корпоративної політики.

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

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

В ІТ ці можливості є трохи більш імовірними, ніж у "Музиці", тому, я думаю, це не так, що неможливо стати відомим аматором, але часто аматори роблять свою пристрасть своєю роботою (з подібними проблемами, які мають музиканти, коли їм доводиться з'ясувати їх межу між комерцією та мистецтвом)


Це болить моїй душі її так правдиво для мене атм, хаха. 1 рік коду спагетті, який вам не дозволяють переробити ("ви це ускладнюєте!")
Терранс,

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

@Chris Marisic: тоді я був би радий працювати з вами. на жаль, ви були б винятком у лінійці моїх роботодавців
keppla

8

Боюся, що для любителів є більше можливостей для навчання, ніж для штатних корпоративних дронів. Як любитель, ви не обмежені будь-якою технологією, середовищем, методологією дизайну та розробки. Ви можете робити все, що вам здається корисним для особистого розвитку. Як розробник штатного робочого часу, ви, ймовірно, працюєте над тим самим продуктом протягом багатьох років, дотримуючись того самого розпорядку, обмеженого тими ж корпоративними рекомендаціями. Для більшості з нас це не що інше, як застій. Трохи можна дізнатися з корпоративного середовища, коли ви ознайомитесь із загальними основами.

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


6

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

  • Читайте книги, наприклад дистильовані UML , Прагматичний програміст , Вступ до алгоритмів .
  • Читайте веб-сайти на зразок https://softwareengineering.stackexchange.com/ . Я робив це останні кілька місяців, сидячи в метро / поїзді. Це, безумовно, допомагає читати питання та думки інших людей.
  • Відвідайте безкоштовні лекції, курси чи семінари. Наприклад, ви можете відвідувати групи користувачів Java. Інколи проводяться і безкоштовні семінари для студентів.
  • Підписуйтесь на програмний журнал.
  • Підпишіться на цікаві RSS-канали, такі як Joel on Software , Google-Code-Blog , Martin Fowler .
  • Слухайте подкасти під час їзди на роботу або до школи, наприклад, SE-Radio .
  • Перевірте OpenCourseWare та виконайте деякі практичні завдання університету!

Звичайно, ви також повинні застосувати свої знання. Зробіть це через стажування, проект з друзями або навчальний курс. Є багато способів самовдосконалитись, ви просто готові вкласти свій вільний час. Також весело вивчайте щось нове !


4

Чи можливо любителю стати хорошим програмістом?

Так, це можливо , проте це потребує тривалого часу:

потрібно десять років, щоб розвивати досвід у будь-якій із найрізноманітніших областей, включаючи гру в шахи, музичну композицію, операцію з телеграфом, живопис, гру на фортепіано, плавання, теніс та дослідження в галузі нейропсихології та топології. Ключовим моментом є дорадча практика: не просто робити це знову і знову, але ставити перед собою завдання, яке виходить за рамки ваших теперішніх можливостей, намагаючись його, аналізувати свою ефективність під час і після цього, і виправляти будь-які помилки. Потім повторіть. І повторіть ще раз.


Як може програміст-любитель тренуватися, щоб стати хорошим програмістом?

Знову з того ж джерела :

  • Зацікавтесь програмуванням
  • Програма
  • Поговоріть з іншими програмістами
  • Якщо хочете, покладіть через чотири роки в коледж
  • Робота над проектами з іншими програмістами
  • Робота над проектами за іншими програмістами
  • Вивчіть принаймні півдесятка мов програмування

Я не часто +1 відповідей , які складаються лише із заслання, але ця стаття є варто читати. Дякую.
sarnold

Ви не проти пояснити це детальніше - як і чому він відповідає на поставлене запитання? "Відповіді лише на посилання" не дуже вітаються на біржі стеків
gnat

1
@gnat Посилання говорить про все - сподіваємось, це краще після редагування.
BЈоviћ

3

Як любитель, у вас є більше варіантів шукати кращих практик, ніж у багатьох професіоналів. Професіонали часто перебувають під тиском, щоб "просто зробити це".

Я не бачив жодного курсу, як я вивчив програмування, але я вчився на деяких коротких (1-3 години) безкоштовних курсах, представлених університетом, який я відвідував. Вони мали на меті допомогти діловим людям зрозуміти, як написаний для них код. На курсах було представлено дуже добре написаний код (коментарі включені), який вирішив загальну проблему з реального життя. Потім код було переглянуто з поясненням мовних особливостей і чому вони використовувались так, як вони. Жоден із повних мовних курсів, які я не бачив, не давав результатів коду в будь-якій точці якості, що я дізнався з цього курсу. Минуло пару років, перш ніж я перейшов на вивчення інформатики.

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

Деякі основні практики, які ви повинні вивчити та застосувати:

  • СУХИЙ (не повторюй себе).
  • DRO (не повторюйте інших); Використовуйте стандартні мовні бібліотеки, використовуйте інші бібліотеки.
  • Зберігайте код простим. Елегантний код, як правило, важче підтримувати. Ще гірше, що оптимізатори часто виробляють повільніше машинний код, ніж для більш простого коду.
  • Модулі повинні мати лише одне призначення. (Краще, якщо цією метою є або робота, або прийняття рішень.)
  • Використовуйте хороші імена. Не використовуйте короткі імена, щоб уникнути набору тексту, використовуйте IDE з автоматичним заповненням замість цього. Розумійте правила іменування вашої мови.
  • Не оптимізуйте свій код. Зачекайте, поки ви зможете виміряти його ефективність і знати, що оптимізація його матиме помітний ефект.
  • Продовжуйте вчитися. Навчіться визначати ресурси, які дадуть корисну інформацію, яку ви можете використовувати зараз.

2

Якщо ви любите грати музику або співати, ви можете це робити, тому що це ваше хобі і вам цікаво, і ви можете стати хорошим співаком або музичним плеєром. Але не потрібно ставати професійним співаком або займатися співом на життя. Це справедливо і для програмістів? Будь-який аматорський програміст, який відомий?

Зовсім ні. Це інженерія програмного забезпечення . Це не базується на "природному таланті". Бути чудовим програмістом заснований на роках освіти та багаторічному досвіді . Це ви отримуєте лише працюючи над реальними проектами .


2
Насправді це значною мірою природний талант. Ви не можете навчити поганого інженера-програмного забезпечення бути чудовим, але, як правило, ви можете навчити когось бути хорошим. Це дуже схоже на музичний або мистецький талант, ви можете навчити майже будь-кого бути дуже хорошим, але ви не можете навчити когось бути чудовим, вони тренують себе і, ймовірно, кращі, ніж будь-які їх тренери. Також, як і спортсмени світового класу, мало хто колись стикався з талантами програмування світового класу, що може пояснити, чому більшість програмістів не знають, що вони існують :)
Білл К

2

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


2

Це можливо? Так. Однак, чим більше часу ви витрачаєте на програмування, тим більше часу вам доведеться вдосконалюватись. Як було сказано, для розробки досвіду технічної майстерності потрібно 10 років / 10 000 годин доцільної практики . Це не 10 000 годин того самого кодування у вашій зоні комфорту (наприклад, написання простого jQuery-коду для різних веб-сайтів), а 10 000 годин навчання / читання програмування / читання вихідного коду / написання вихідного коду / вивчення інших мов / робота з іншими тощо.

Якщо ви збираєтесь присвятити цьому рівень часу; ви також можете отримати роботу програміста і кинути статус аматора. (Якщо ви не самостійно заможні).


1

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


1

з огляду на справжнє оригінальне значення цього слова (французький аматор «коханець», від давньофранцузької та зрештою від латинської amatorem nom. amator , «коханець» - Вікіпедія), хочеться вірити, що велика кількість професіоналів також є любителями. Якщо ви не любите своє ремесло, чи практикували б ви його?

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


Справжнє значення аматора - це значення, яке ви знайдете в OED або NOAD. Етимологія слова не диктує його значення. "Той, хто займається заняттями, навчанням, наукою чи спортом як проведення часу, а не як професія".
Джанго Райнхардт

правда. можливо, я мав би писати "первісне значення", а не "реальне значення". Прикро, що в нашій сучасній мові немає загального слова для "людей, які щось роблять, тому що вони справді люблять це робити". Я думаю, що це допомогло б відповісти на питання ОП: "Чи можливо аматор стати хорошим програмістом?" Звичайно, це можливо - якщо ти любиш програмування, ти будеш його практикувати, і з часом ти станеш хорошим у цьому. (Можливо, ніколи не чудовий, враховуючи особисті таланти чи відсутність їх), але принаймні добре.
StevenV

0

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

Але здобувати знання - це лише питання пристрасті. Є люди, які проводили ночі, щоб самі вивчити речі та нарешті принести щось нове у світ, як Білл Г Марк Цук тощо. Неможливо легко порівняти. але якщо ви хочете бути кращим інженером програмного забезпечення (я не закликаю програміста), приєднуйтесь до компанії або працюйте на якісь хороші продукти, якими користуються інші.

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


І Білл Гейтс, і Марк Цукерберг вивчали інформатику в Гарварді, поки вони не почали власну справу і відмовилися. Не гарний приклад любителів .
vartec

Я сумніваюся, чи грав Гарвард важливу роль у розвитку своїх навичок програмування, окрім примхливого середовища!
сарат

0

На питання "чи стали відомими аматорські програмісти?" Відповідь - «Так, але більшість не залишилася такою». Найвідоміший приклад, про який я можу придумати, - це Рой Філдінг, який зробив якусь найважливішу свою роботу, поки (я вважаю) неоплаченою в університеті (аматорський засіб означає неоплату за визначенням).

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

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


0

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

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

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