С самого начала сентября широким потоком хлынули на Хабр публикации об успешном успехе на тему «Детство программиста», «Как стать программистом после N лет», «Как я ушёл в IT из другой профессии», «Путь в программирование» и так далее. Подобные статьи пишут постоянно, но вот сейчас они пошли как-то особенно кучно. Каждый день пишут то психологи, то студенты, то ещё кто-нибудь.
И в каждой статье звучит знакомая песня: главное, что советуют авторы — «стараться», «не сдаваться», «не бояться» и «идти к своей мечте»; а в комментариях очень часто можно встретить мнение, что ежели ты с самого детства любил компьютеры, то работа с ними в итоге неудивительна. Я хотел бы на примере своей биографии подвести читателей к мысли о том, что начальные условия могут быть важнее, чем приложенные усилия.
Не положено: начало
Энциклопедия профессора Фортрана для старшего школьного возраста
Моя история начинается в раннем детстве с компьютера «Корвет» из кабинета информатики. Но это было случайным лучом света в тёмном царстве постсоветского образования — в те времена официальное изучение информатики должно было начинаться в 11 классе. Я просто записался на случайно стартовавший для младших классов факультатив по компьютерному обучению. Один раз в неделю для нас открывали тяжёлую железную дверь тёмного кабинета с решётками на окнах и показывали, как вывести на экран «Hello» с помощью корвет-бейсика. Это было шикарно, но продлилось недолго.
Видимо это был какой-то образовательный эксперимент, завершившийся буквально через полгода. Я мало что успел узнать, успел только заинтересоваться. Но когда факультатив закончился, мне популярно объяснили: компьютеры на самом деле — не для детей, раньше одиннадцатого класса люди до изучения информатики не дорастают.
Здесь стоит заметить, что вокруг царили лихие девяностые, когда разные технические кружки при дворцах пионеров уже в массе своей закрылись, а домашние компьютеры ещё не стали обыденностью. Так что нельзя было получить доступ к технике — или к компьютерам — просто потому что ты хочешь их изучать. В выигрыше оказались дети либо тех людей, кто встроился в новую рыночную экономику, либо тех, кто имел доступ к компьютерам в рабочем порядке — инженеры, учителя информатики, «технические специалисты» при различных ведомствах.
Например, много лет спустя я узнал, что примерно в том же году моему (будущему) однокласснику родители подарили ZX Specrum. Для игр, конечно.
Скорее всего, я так и остался бы за бортом нового цифрового мира. Я учился и рос в полной уверенности, что теперь доберусь до компьютера не раньше, чем в одиннадцатом классе. Забавно, что в итоге всё так и произошло. Но примерно за пару лет до этого случилось самое настоящее чудо — я получил компьютер в рамках местной благотворительной акции.
Казалось бы, вот тут-то мне бы и наверстать упущенное — но жизнь снова внесла свои коррективы.
Существует хорошо известная присказка, что если нищему дать миллион долларов, он не будет знать, что с ним делать. Конечно, если это умный нищий, он потратит часть миллиона на обучение, в том числе обучится обращаться с деньгами. Но всё равно это не сравнить с тем, что может сделать человек, среди денег выросший. Такая беда возникает всякий раз, когда человек вываливается за границы своего социального слоя.
Поскольку в обычных обстоятельствах я никогда не смог бы иметь компьютер, то денег на какие-нибудь курсы и сопутствующие товары у меня тоже не было. По той же причине я не имел связей среди людей, способных что-то подсказать мне, просто не входил в этот круг. Компьютер был буквально кусочком другого мира. Не обыденная бытовая техника, как сейчас, а что-то вроде эльфийского артефакта. Поэтому я не мог экспериментировать и изучать что-то на собственном опыте — «сломаешь дорогую вещь». Поэтому я не мог говорить сверстникам о том, что у меня дома есть компьютер — лихие девяностые вокруг, вы помните? Соответственно, резко урезались возможности для обмена информацией — я ни у кого не мог спросить совета, не мог задавать вопросы и делиться опытом. Интернет? Что? Какой интернет? Может фидо? Да у нас и телефона-то не было.
Можно было идти в библиотеку, бесплатно искать книжки или справочники, и тут возникала вторая проблема. Это был слишком прогрессивный для тех условий компьютер. На нём был установлен Windows 95.
Я взял главную (единственную) книгу про компьютеры, которая была в библиотеке — знаменитый учебник Гейна / Житомирского «Основы информатики и вычислительной техники» с красной обложкой. Можете сейчас найти её в интернете и ощутить контраст между её содержимым и содержимым полноценного компьютера с Windows 95 на борту. Ситуация усугублялась ещё и тем, что сложно было добыть даже пиратский софт — до расцвета магазинов DVD с броскими названиями «Весь офисный софт — 2000» оставалась ещё пара лет. А впрочем, когда они появились, у меня всё равно не было денег на диски.
Кстати, где-то здесь настало время «официальной» информатики в 11 классе — нам выдали уже упомянутый мной учебник 91 года издания, а реальные задачи заключались в том, чтобы рисовать несложные деревья алгоритмов (карандашом на бумаге) и использовать текстовый редактор «Лексикон».
Формошлёпство
Настоящие программисты и я
В итоге моё компьютерное развитие эту пару лет уныло пробуксовывало. Я читал справку Windows, правдами и неправдами добывал для компьютера разные программы на дискетках и учился быть «продвинутым пользователем», редактируя файл autoexec.bat. «Лексикон» принёс из школы, а как же. В общем, к тому времени, когда я смог наконец вернуться в детство и начать программировать в qBasic, вокруг уже безраздельно царили визуальные интерфейсы.
Этот контраст во многом уничтожил мою мотивацию к глубокому изучению обычного текстового программирования. Причина была в гнетущем несоответствии между графикой Windows 95, с которой я начал настоящее погружение в компьютерный мир, и унылым текстовым экраном известных мне тогда языков. Предыдущее поколение программистов радовалось просто тому, что при написании POINT(10,15) на экране возникала точка. Для них программированием было «нарисовать на экране то, чего на нём не было». Для меня экран был уже заполнен формами и кнопками. Для меня программированием было «заставить кнопку делать что-то после нажатия» — а делать саму кнопку было просто скучно.
В качестве лирического отступления хочу отметить, что сейчас развитие языков программирования по спирали вернулось к такой же ситуации. Теперь все «настоящие программисты» опять верстают интерфейсы в блокноте, и каждый программист теперь как бы снова обязан быть дизайнером. Снова нужно исключительно с помощью кода располагать на экране кнопки, окошки ввода и прочие элементы управления. В результате классическое правило 80 / 20 выглядит в данном случае так: «80% времени мы тратим на создание интерфейса методом ручного набора кода и 20% времени задаём поведение элементам интерфейса». Почему это было во времена DOS и Паскаля — я понимаю; не было альтернатив. Почему это существует сейчас, когда все уже видели и трогали VB, Delphi и C# — я не знаю; подозреваю, что проблема в платности или бесплатности среды разработки. Удобное всегда дорого, а бесплатные версии упомянутых сред появились не так уж и давно.
Это же было одной из причин того, почему мимо меня прошло интернет-программирование. Хотя там, как выяснилось значительно позже, было бы легче всего создать портфолио и стать программистом. Я попытался пощупать и PHP, и JS, но не хотел «писать код в блокноте». Ну а другая причина в том, что Интернет появился у меня то ли в 2005, то ли в 2006 году — до того он находился где-то на периферии картины мира. Вместе с сотовыми телефонами — «то, чем пользуются богатые люди».
Так что я забросил всё это dos-программирование и с головой погрузился в учебную базу данных «Борей» от Access, которая подарила мне формы, кнопки, макросы и вершину прикладного программирования — VBA. Наверное где-то в тот момент я окончательно решил, что в будущем я хочу работать программистом. Я добыл диск с Visual Studio, купил бумажную книгу(!) по VB и начал клепать калькуляторы и крестики-нолики, радуясь тому, что весь дизайн создаётся на форме за несколько минут, а не прописывается руками. Поскольку компьютер переставал быть редкостью, я наконец-то смог выйти в люди и обсуждать программирование со своими единомышленниками.
В этих обсуждениях мне открылось, что VB — это прошлый век, умирающий язык, который придуман для секретарш, а все реальные пацаны пишут на C++ или на Delphi. Поскольку я ещё помнил паскаль — я выбрал Дельфи. Возможно, это была моя очередная ошибка в длинной череде препятствий на пути становления программистом. Но я шёл по пути наименьшего сопротивления, потому что хотел скорее увидеть результаты своего труда. И я их видел! Я купил книжку ещё и по Delphi, я сцепил его с Excel и Access, которые уже знал, и в итоге сделал в первом приближении то, что сейчас называлось бы «BI-система». Печально то, что теперь я весь паскаль благополучно забыл, потому что уже лет десять к нему не притрагивался.
И, разумеется, я дважды пытался поступить в институт на программиста. В нашем маленьком городе для этого было не слишком много возможностей. В первый раз я сдуру пошёл поступать на специальность «Прикладная математика», откуда людей выпускали именно с такой специальностью — программист, однако требовали от них сурового знания математики далеко за пределами школьного курса. Так что на экзамене я не получил проходного балла. Пришлось пересидеть в колледже, получая среднее образование. Второй раз я немного снизил для себя требования и отправился на инженерную специальность — работа инженером не слишком меня привлекала, но всё-таки оттуда было ближе к работе с компьютерами. Только было уже поздно — люди распробовали выгоду технических специальностей и рвались туда толпами. На бюджетные места прошли только медалисты.
Поэтому теперь у меня гуманитарный диплом. Он красный, но не технический. И именно здесь грустная история взросления начинает пересекаться с грустной историей поиска работы.
Скрипач не нужен
...но не обязательно выживу...
Существует очень широко распространённый миф о том, что «у программиста диплом не спрашивают». У этого мифа есть несколько причин, я попробую перечислить основные.
Во-первых, в ранних девяностых — и немного в девяностых поздних — знание компьютерных технологий в принципе было редкостью. Если человек знал, где включается компьютер и мог запустить программу — он делал то, что требовалось бизнесу. А общий бардак на рынке труда заставлял работодателя быстро находить любого человека, который способен делать нужную работу — неважно, чему он там когда-то учился, важно что он сейчас умеет делать. Поэтому значительное число самоучек спокойно показывали на собеседовании навыки и получали работу.
Во-вторых, в те же самые года очень бурно развивался бизнес, но всё ещё не было такого современного понятия, как HR. Кадровики оставались советскими кадровиками, оформляющими трудовые книжки и трудовые договора, а собеседования проводили специалисты или руководители лично. Поскольку большинство из них было заинтересовано в результате, то формальные критерии вроде образования действительно рассматривались в последнюю очередь.
Это привело к чудовищному перекосу в массовом сознании. Люди, получившие работу в тех условиях, могут совершенно искренне рассказывать, что программисту диплом не нужен, и приводить в пример себя. Вы узнаёте этот типаж, конечно же. Если человек говорит вам «достаточно показать, что умеешь, и тебя возьмут» — это как раз такой программист, из тех времён, его так и взяли, а он поверил в незыблемость мира. Примерно таким же образом советские старики говорят что-то вроде «да ты же на компьютере работаешь и на английском можешь читать, я бы с такими навыками ух!». Они уже не понимают, что с такими навыками «ух» было только в советские времена, а сейчас такое каждый второй умеет.
Потом ровно то же самое произошло в ранних нулевых, когда нефть начала расти, экономика развиваться, и толпы новоявленных бизнесменов ринулись на рынок труда в поисках любого, кто умеет хотя бы включать компьютер.
Но заодно поток нефтяных денег породил непроизводительные кадры — HR-департаменты. Там оказались те же старые советские кадровики, но на них совершенно неожиданно возложили задачу по определению качества любого работника. Они, конечно, не могли принимать решения такого уровня. Поэтому выработали собственные критерии оценки, довольно далёкие от реальности, основанные на переводных книгах с благословенного запада и формальных критериях вроде образования. Так свершился великий поворот: от реальных навыков — к формальным критериям.
Миф остался жить, только чуть-чуть видоизменился.
Экономика всё ещё росла, людей хватали отовсюду, переманивали из других компаний, но кадровики уже наложили свои цепкие лапки на процесс отбора. И самым важным стало не «покажи, что умеешь» — всё равно кадровик не поймёт, что ему показывают — а «опыт работы». Так люди, которых когда-то взяли куда-то без образования программиста за умение нажимать кнопки — переманивались в другую компанию уже просто потому, что они ранее работали на должности «инженер-программист». И снова никто не спрашивал диплома, потому что было не до того — есть «опыт»? Ну скорее садись и работай!
Наконец, последняя, третья причина — бурное развитие интернета и частных проектов. Люди создавали пет-проекты, эти проекты можно было показать кому угодно и тем самым доказать свои навыки. Отправляешь письмо, прикладываешь ссылку на свой сайт — и вот ты уже как бы доказал свои умения.
Что сейчас?
Нефтяные цены, как мы знаем, рухнули, но миф всё ещё живёт. Ведь на должностях «инженеров-программистов» сидит немало людей, которые на эти должности действительно попали без профильного образования. Однако сейчас уже ни одна из этих причин не работает в полной мере, и сейчас мало кто из них смог бы повторить этот трюк с трудоустройством.
- Знание компьютерных технологий стало повсеместным. Работа с компьютером просто уже не указывается в резюме, как не указывается там умение читать и писать (это, кстати, не повредило бы — я начал часто встречать грамматические ошибки даже в официальных СМИ, а уж в статьях на хабре они появляются с завидной регулярностью).
- Появились HR-департаменты и HR-специалисты, которые не несут никакой ответственности за свои решения и могут использовать любые критерии выбора. Естественно, предпочтение отдаётся формальным — смотрят на возраст, образование, пол и время на предыдущем месте работы. Навыки и умения идут по остаточному принципу.
- Нехватки программистов давно уже нет. Есть нехватка хороших программистов, но это верно вообще для любой специальности. А обычным программистом работает каждый школьник в интернете, на фрилансерских сайтах люди буквально сражаются за право бесплатно сделать что-нибудь для портфолио.
- Пет-проекты тоже стали обыденностью. Интернет завален персональными сайтами и клонами тетриса, да и этот проект уже становится едва ли не обязательным, то есть пройдя сито кадрового отбора ты попадаешь в сито отбора специалистов, а они говорят «покажите-ка ваш гитхаб».
Люди, у которых образование есть — или люди, у которых есть опыт, заменяющий образование в глазах HR-департаментов — видят только вторую часть. Они говорят обычно примерно так: «для работы диплом программисту не нужен, а вот проекты на гитхабе были бы полезны».
Но поскольку HR-департаменты никуда не делись, то совсем уж правдиво это формулируется так: «для работы программисту нужен диплом (чтобы пройти HR), но ещё и проекты на гитхабе (чтобы пройти техническое собеседование)». И я, с моим гуманитарным образованием, в полной мере это ощущаю — потому что о гитхабе я знаю только из жалоб программистов с техническим образованием, меня же строгое кадровое сито отсеивает на первом этапе.
Люди не видят воздух, рыбы не видят воду, а люди с техническим образованием или опытом работы в «ООО КОДТЕХНОСОФТ» не видят, что у них не спрашивают диплом, потому что он уже и так подразумевается. Особенно смешно звучат оправдания людей типа «я сколько лет работаю, ни разу диплом не показывал». Спрашиваешь — а в резюме-то ты его указывал? Ну да, конечно указывал. Так ты мне предлагаешь указать в резюме ненастоящее образование что ли, раз всё равно не попросят подтверждения? Молчат, ничего не отвечают.
Кстати говоря, на той специальности, где все бюджетные места были заняты медалистами, бюджетной была только половина группы. А другой половиной были студенты платного обучения — ну вы знаете, покупка корочки в рассрочку за деньги родителей. Мой друг поступил туда, получил диплом. В результате стал полноправным «инженером-программистом» и никаких проблем с работой программистом с тех пор вообще не испытывал. Потому что в дипломе не пишут, платно ты учился или бесплатно. А вот специальность, «техническую» — пишут.
Из зоны комфорта
Это я уверенно поднимаюсь по карьерной лестнице
Когда я приехал в Москву и начал искать работу, я всего этого не знал. Я ещё верил в миф про то, будто программисту достаточно показать результат труда. Я реально возил с собой на флешке образцы своих программ — забегая вперёд скажу, что никто ни единого раза на них не взглянул. Впрочем, приглашений вообще было крайне мало.
Тогда я ещё помнил Delphi и пытался попасть в какую-нибудь техническую компанию хотя бы на стажерскую должность. Рассылал по десятку писем в день, объяснял, что я с детства интересуюсь компьютерами и хочу учиться дальше. Мне несколько раз вполне честно отвечали, что у меня должна быть техническая специальность — HR-менеджеры именно для того и обороняют рубежи крупных компаний, чтобы отсеивать всяких там гуманитарных недобитков. Но по большей части просто приходили стандартизированные отказы. В конечном счёте я не смог больше продолжать поиски и вышел на обыкновенную офисную работу, где нужно было просто использовать Excel.
Через пару лет к Excel добавились Access и SQL, потому что я вспомнил молодость и начал активно писать VBA-скрипты. Но это всё равно не было «настоящим программированием». Я предпринял ещё одну попытку, скачав современный Visual Studio и погрузившись в изучение C#. Я изучил его в первом приближении, написал небольшую программку и попытался ещё раз попасть куда-нибудь — не пренебрегая ни полноценными вакансиями, ни предложениями о стажировке.
На этот раз на сотню своих писем я не получил вообще ни одного ответа. Ни одного. Потому что, как я теперь понимаю, мой возраст приближался к тридцати — и вместе с гуманитарной специальностью в резюме это становилось чёрной меткой для любых HR-отделов. Это сильно подкосило и мою веру в себя, и мою веру в мифы программистов о рынке труда. Я полностью забросил «настоящее программирование» и сосредоточился на обычной офисной работе. Время от времени я ещё откликался на разные вакансии, но в ответ по-прежнему получал молчание.
Где-то на этом этапе я начал понимать, насколько ценным является для человека то, что он не замечает, или то, что он считает по умолчанию имеющимся у всех. Люди, к которым обращаешься за советом или просто жалуешься на жизнь, в такие тонкости не вникают. Они начитались популярных книжек по психологии и рассказывают тебе о том, что нужно выходить из зоны комфорта. Хотя давно уже существует известная шутка о том, что в зону комфорта сначала нужно войти. С возрастом цена этого входа или выхода растёт — например сейчас я уже просто не могу позволить себе уволиться и пойти работать на стажёрскую должность. Можно только осторожно менять деятельность, параллельно оставаясь на текущей работе, пока не сравняются доходы.
Встречаются советчики разумные, и они дают рекомендации, которые дал бы и я сам. Это самостоятельное обучение и удалённая работа или создание собственного проекта. Но здесь есть свои подводные камни.
Дело в том, что удалённая работа — это привилегия исключительно имеющих «опыт работы». На неё попасть новичку, которому нужна помощь и обучение, совершенно нереально. С тобой и так-то никто возиться не хочет, а тут ещё и удалённо нужно.
Самостоятельное обучение жутко неэффективно. То, чему тебя научат, например, за полгода, ты будешь самостоятельно разбирать года два. Соотношение примерно такое. Всякие мелочи, типовые приёмы и известные подводные камни ты вынужден будешь находить самостоятельно, постоянно изобретать велосипед. Конечно, это в какой-то мере может сделать тебя более знающим, ведь ты сам всё это нашёл и преодолел. Но это заберёт у тебя в четыре раза больше времени, а реального опыта на реальных производственных проектах у тебя по-прежнему не будет.
При этом я хорошо знаю, что реальный, полезный опыт возникает только при решении реальных производственных задач. В этом смысле действия вроде «написать крестики-нолики» помогут тебе на начальном этапе просто разобраться в языке. Но написав даже крестики-нолики, морской бой и змейку ты всё равно не сможешь делать то, что требуется бизнесу на практике.
Тут самые нетерпеливые снова захотят дать совет — бери, мол, реальное ТЗ с каких-нибудь фриланс-сайтов и пиши по нему, так и научишься, и самостоятельно, и даже портфолио будет.
Что ж, рассмотрим наконец метод «пет-проект». Нужно написать полезную людям программу, после чего с этой программой идти на работу куда-то, где делают схожие программы. В теории звучит прекрасно, на самом деле это ловушка. Вместо того, чтобы изначально работать над реальным проектом — ты тратишь время на заведомо бессмысленные задачи, чтобы потом выполнять точно такие же задачи, но уже осмысленные.
Стой! — крикнут мне читатели. — Подожди! Это же тренировка! Она везде и всегда так выглядит! И я бы согласился, если бы эта тренировка давала бы шанс на результат. Но нет. Мы возвращаемся к тому, что у меня уже есть опыт подобных попыток, подобных тренировок.
Есть ли в мире хоть одна компания, которая говорит — вот наша компания делает мессенджеры, давайте вот вы нам напишете мессенджер на таком-то языке, с такими-то и такими-то параметрами и мы тогда вас возьмём на работу? Нет. Это всегда вероятность, причём для человека с неподходящим возрастом и образованием — вероятность очень низкая. Жизнь мне всё это очень хорошо объяснила. Вот например, в разные периоды своей жизни я знал и использовал VB и VBA, Pascal и Delphi, SQL, R, JS, C# и даже (сам удивляюсь!) Genesis32. Реально — находил и проходил курсы, делал пресловутые проекты, мог показать на собеседовании и отвечать на вопросы по ним. И что?
Во-первых, никто просто не заинтересовался и не попросил ничего показать, я тупо не попадал на эти собеседования. Во-вторых, из всего этого я реально сейчас помню только VBA+SQL, потому что постоянно ими пользуюсь — остальное не пригодилось и забыто. Причём ситуация выглядела реально жёстко: не то чтобы мои проекты смотрели и говорили «слушай, да тут всё плохо, ты ж не умеешь код писать, вот здесь и здесь не работает». Нет, меня просто игнорировали. Гуманитарное образование, понимаете? «Это потому что я чёрный».
Итоги
Когда даже под гнётом обстоятельств ты сохраняешь внутренний покой
Несмотря на пессимистичный характер текста, я не оставляю попыток. Просто теперь пространство возможностей для меня резко сузилось, я вижу только один реалистичный путь — это упомянутый выше «пет-проект», но нацеленный не столько на «поиск работы», сколько на «попытку создать бизнес». Нужно найти нерешенную задачу, решить её и найти хотя бы несколько десятков человек, которые будут пользоваться твоим решением. Другой вопрос, что звучит это просто, а по факту трудно найти задачу, которая ещё не была решена кем-то из миллионов программистов и стремящихся — и притом достаточно проста для начинающего.
Сейчас я добрался до Питона, по примеру многих предшественников пропарсил Хабр и готовлю статью о результатах. Я надеялся опубликовать именно её в качестве моей первой хабрастатьи, но там ещё нужно дописать немного текста. А тут прямо подряд посыпались публикации на тему «Как я стал программистом, просто приложив немного усилий», почти каждый день, а то и по две в день.
Так что я не удержался и рассказал, почему я приложил много усилий, но программистом так и не стал.
Если кратко подводить итоги, то я хотел сказать следующее:
- Желания и усилия действительно могут многое, но решающее значение всё-таки имеет материальная база. У кого она есть — тем желания и усилия помогают добиться большего. У кого её нет — тем желания и усилия не помогут добиться и обычного результата. Увлечение компьютером с детства может помочь стать программистом, но это не такая уж и большая помощь. Намного больше шансов стать программистом у того, кто даже компьютером никогда не интересовался, но кого обеспеченные родители отправили учиться на модную техническую специальность. Но и самого увлечения мало, если — как в одной из недавних публикаций — тебе не покупают в детстве программируемые калькуляторы
- Пора уже наконец расстаться с мифом о том, что для работы программистом достаточно уметь программировать. В лучшем случае достаточно уметь хорошо программировать, например «писать код на доске» — таких да, оторвут с руками. Разговоры о том, что джунов берут с улицы, лишь бы знали, с какой стороны у компьютера клавиатура — это очень сильное преувеличение, в таких разговорах мы наблюдаем типичную ошибку выжившего. Вокруг каждой вакансии программиста стоит «стеклянная стена» HR-департамента — люди с техническим образованием её просто не видят, а остальные могут только бессмысленно биться об неё головой. Или — как в ещё одной из недавних публикаций — устраиваться «по знакомству».
- Чтобы «стать» программистом в зрелом возрасте нужно иметь тот же удачный набор обстоятельств, что и для юного возраста. Конечно, взрослый человек многое может делать лучше (он видит цель к которой идёт, имеет опыт обучения и развития, знает реальные потребности рынка), но многого он и лишён (он должен сам себя содержать, тратить время на быт, да и здоровье уже не то). И если — как в очередной недавней публикации — есть материальная поддержка со стороны семьи и стабильность жизни в виде собственного жилья, то сменить деятельность действительно намного проще
Источник: habr.com