Я сам программист, специализируюсь на веб-технологиях, распределённых вычислениях и обработке данных.
Я рассматриваю веб как самую популярную нативно кроссплатформенную технологию представления и визуализации; распределённые вычисления — как наиболее подходящую архитектуру для совместной работы программ и кооперативных программ; а обработку данных — как нечто, что требует одновременно основ, навыков, мышления, кругозора и предметных знаний. Поэтому занятие обработкой данных улучшит ваши основы, навыки, мышление, кругозор и предметные знания.
Всё это пустые слова, к тому же довольно заумные. Но понять пустые слова для меня не так просто.Я считаю, что улучшение способностей приходит из накопления, поэтому следует сохранять долговременный энтузиазм к основам.
Я думаю, основы должны включать, нодалеко не ограничиваться:
структуры данных и алгоритмы、
algorithms、
сетевые технологии (tcp/ip, p2p, http и т. д.)、
компьютерная архитектура и операционные системы (управление памятью, высокоскоростные буферы и кэши, потоки и конкурентность, ресурсы и состязание за них, такты CPU, принципы локальности и т. д.)。
Я считаю, что вышеперечисленные основы невозможно «освоить» до конца, по крайней мере при моём уровне интеллекта. Например, если вы читали «Структуры данных» Янь Вэйминя — это хорошо; если вы также читали «Введение в алгоритмы» — это лучше; если вы можете читать «Алгоритмы» Принстона — вы уже довольно хороши; а если вы ещё и читали некоторые статьи и действительно набирали код в vim, emacs, VS, Eclipse или Sublime, то вы должны с первого взгляда видеть недостатки и уровни в статьях об алгоритмах в блогах по всему миру — тогда у вас действительно есть настоящий навык.Важность структуры знаний и проектный опыт влияют друг на друга. Для одного и того же проекта и похожих ролей из-за разных структур знаний улучшение и выводы также будут различаться, и польза, которую это улучшение приносит следующему проекту или более сложным проектам, тоже будет различаться. На более длительном промежутке времени эта разница становится такой же огромной, как разница между 100K и 1M.
Иметь десять лет опыта работы или повторять одно и то же десять лет — разница может заключаться именно здесь.Я считаю, что утверждения вроде «овладение Java» действительно существуют, но не обсуждать JVM — это уже наглость. Знакомство с библиотеками классов и фреймворками приходит из инженерной работы и проектов. Можно знать простой API или углубляться в понимание AOP; приложение может быть очень простым или очень сложным. Если вам важны сценарии производительности, то следует сознательно обращать внимание на JVM. Но JVM — это огромный инженерный труд, поэтому её понимание — долгосрочный процесс, что делает мастерство довольно труднодостижимым. Однако во многих распространённых сценариях — например, BufferedReader, FileChannel и mmap могут быть вариантами для I/O — что больше подходит, часто зависит от того, что виртуальная машина и операционная система делают под капотом. Только тогда можно выработатьлучшие практики.Кстати, вы также глубже поймёте такие простые конфигурации, как Xss, Xmx и directMemory. В то же время это помогает увидеть ограничения языков, основанных на виртуальных машинах. Например, BlockBuffer в HBase сам по себе является решением, предназначенным для повышения эффективности чтения, но из-за механизмов кучи и GC в JVM это решение может тянуть HBase вниз.
Этот пункт также должен применяться к C# & CLR.Люди, проработавшие много лет, все верят или гордятся тем, что достигли уровня мастерства в какой-то области. Некоторые действительно его достигли, но часто это сопровождается некоторой наигранностью, лицемерием и сильной любовью демонстрировать ум; они не станут с вами искренне обсуждать. Такие люди могут встречаться среди друзей, однокурсников, коллег и начальства. Программист не живёт в изолированном контейнере. Помимо сохранения уверенности и скромности в отношении способностей и приложения больше усилий, нужно также придерживаться собственных принципов и не поддаваться влиянию корпоративной культуры или культуры круга общения, которые недостаточно позитивны. Только оставаясь собой, можно лучше относиться к технологиям и приносить работодателю лучшую атмосферу и реальную ценность.
В мире не перевелись тролли; некоторые тролли сами по себе весьма способны, даже куда способнее вас. Это просто их образ жизни. Эмоциональный контроль — не техника; чем основательнее вы его понимаете, тем яснее видите, что есть тролль, а что — досада от желания сделать железо сталью (разочарование из-за чужого отсутствия прогресса).Что касается технического прагматизма, всегда есть точка зрения: если ты не был в США, тебе не положено знать звёздно-полосатый флаг. Например, не каждая компания и не каждый программист столкнётся сбольшими данными, но в древние времена, когда люди ещё не умели летать, они уже начали исследовать и толковать цивилизацию через тотемы и настенные росписи. Такие вещи на самом деле — сила веры; грубо говоря, это то, что вам интересно; ещё грубее говоря, удача всегда на стороне подготовленного ума. Готовы ли вы готовиться — зависит от отношения и понимания; пригодится ли подготовка в будущем — зависит от случая. Сила и удача одинаково важны, но удача — то, что вы не можете контролировать.
Некоторые преподаватели в отдельных школах уже преподавали, когда Weibo ещё находился на стадии роста:социальные вычисления. Если у вас нет этого канала знаний, вы, вероятно, не узнали бы значения ETL, интеллектуального анализа данных и инвертированных индексов; возможно, вы уже умело изменяете, добавляете и компилируетеlucene.
Но как бы хороши ни были знания, без практики их не поднять на новый уровень. Я считаю, что хороший программист должен сосредоточиться на коде и реализации, но должен отказаться от простого принципа копирования, хотя в большинстве случаев копирования достаточно, чтобы выполнить работу. В личных экспериментах писать ключевой фрагмент кода десяток раз — это действительно глупо и довольно тупо. Но если в каждом способе написания есть мысль и понимание, и вы делаете это выборочно, то когда вы посмотрите на шаблоны проектирования и рефакторинг — о, так вот как это на самом деле. Заниматься ерундой в духе бобов с фенхелем (как Кун Ицзи, зацикливаясь на мелочах) не так уж невыносимо; по крайней мере, вы понимаете, что не так и что имеет значение, а это также создаёт сценарии для совершенствования вне работы.Многие придерживаются такого мнения: китайцы плохо разбираются в технологиях и всё равно не могут написать Hadoop; зарабатывать деньги — важнее всего, но при этом они всё равно считают себя вполне способными.
На самом деле, брать «написание Hadoop» и «зарабатывание денег» в качестве критерия — само по себе слишком ограниченно. В этой жизни деньги, конечно, важны, но пишешь ли ты пригодный к использованию Hadoop, мини-операционную систему или мини-виртуальную машину — ко всему этому не нужно относиться слишком серьёзно. Глубина понимания, возникающая при чтении исходного кода, и при самостоятельной реализации различаются как небо и земля. Такой подход в духе «Юй Гун, передвигающий горы» нужен скорее для того, чтобы заставить вас понимать больше, точнее и глубже. Большинство экспертов по Hadoop, на самом деле, лишь прочитали исходный код и уже способны публиковать книги. В реальности многие компании просто запускают какие-то очень простые, зрелые алгоритмы майнинга; инженеры iQiyi применяют линейную регрессию ровно настолько, чтобы это было практично; большинство компаний до сих пор обрабатывают логи. Иногда придумать блестящий алгоритм не так важно, как перейти на SSD. Так что если у вас нет такой среды или таких условий, вы просто перестаёте исследовать? Не думаю.
Что касается зарабатывания денег, я думаю, что пока вам это интересно и вы умеете хорошо делать своё дело, деньги придут сами собой. Если ваш доход не растёт, часто это потому, что то, чем вы занимаетесь, не относится к высокодоходной категории; написание программ редко делает вас богатым. Честно говоря, один день расходов эскортницы может в несколько раз превышать вашу зарплату, не говоря уже о доходе эскортницы. Если вы хотите оторваться в ночном клубе и не заказываете две бутылки Louis XIII, хостес могут даже назвать вас фальшивым богачом. Если вы не отправите красный, синий или зелёный букет цветов, который вам приглянулся, вам будет слишком стыдно возвращаться с ней в жилой комплекс или отель, чтобы обсуждать генетические алгоритмы.
Так что те, кто обсуждаетгенетические алгоритмыс эскортницами, — босс Ван и инженер Ли, — их доходы ещё менее сравнимы с доходом программиста.
Так что не стоит слишком намеренно связывать написание программ с зарабатыванием денег;это ограничиваетвашу способность зарабатывать деньги.
Источник:http://www.cnblogs.com/foreach-break/p/be_a_real_programmer.html