Личное представление о моем пути в качестве программиста, предпринимателя и ученого.

Моя жизнь была наполнена технологиями. С первого момента, когда я познакомился с игровыми автоматами, работающими от монет, я был поражен удивлением и изумлением перед технологическим прогрессом, которого мы достигли.

Когда я родился, в конце 1970-х, в нашем доме было мало техники. Но в последующие годы это сильно изменилось.

Эта статья объяснит, как моя жизнь изменилась и изменилась, и как все это привело к тому, что я получил степень доктора философии. и, наконец, устроился профессором информатики в университет.

Но прежде чем даже подумать об этом, я хочу вернуться в 80-е годы, когда у меня зародился интерес ко всему, что связано с технологиями. По моему личному опыту, у всех был свой путь программирования.

Я надеюсь, что эта история вернет счастливые воспоминания тем, у кого был подобный опыт. Для тех, кого не было в 20 веке, это даст представление об этом удивительном времени для технологий.

Первые впечатления

Программирование вошло в мою жизнь, когда я впервые получил компьютер.

В 1984 году мне купили Acorn Electron, который, к сожалению, оказался неисправным. Замена также имела ряд проблем, из-за которых нам пришлось вернуть ее. Затем, решив выбрать другой тип компьютера после этого неудачного опыта, я получил ZX Spectrum 48k.

Первое, что встретило меня, когда я подключил его к семейному телевизору, - это запрос команд. Изначально я набирал только команды для загрузки кассет и игр, но мое внимание привлек странный мигающий курсор, требующий ввода.

Когда я просматривал свою местную библиотеку, которая была огромна с тысячами книг, меня, естественно, привлекла секция технологий и ИТ. К своему абсолютному восторгу, я нашла книги, относящиеся к моему новому хобби.

Когда я вернулся домой, я понятия не имел, что это за загадочные коды в книге. Подумав, что делать, я решил попробовать ввести коды на моем новом компьютере.

Когда я закончил печатать одну программу, я попытался запустить ее и, к моему полному удивлению, простая графическая демонстрация выскочила из экрана, нарисовав бесконечный туннель из цветных квадратов на экране телевизора.

Это был мой первый опыт программирования, и я до сих пор помню, как был в приподнятом настроении, чувствуя, что действительно достиг чего-то удивительного.

Наличие ограниченных средств было благом, потому что регулярно покупать игры было невозможно. Вместо этого я полагался на книги из библиотеки и начал печатать более длинные и сложные программы и игры.

Я быстро понял, что когда они не запускались, мне приходилось находить ошибки и повторно вводить строки, которые не были скопированы должным образом. Я, должно быть, прочитал двести книг за те четыре года, что у меня был Спектрум, и я сохранил все программы на аудиокассетах, чтобы я мог перезагружать их, когда захочу.

Я был предметом зависти соседей, все люди моего возраста хотели прийти и познакомиться с коллекцией, которую я собрал.

В те первые годы моего опыта программирования я ни в коем случае не стал мастером своего дела. Я почти не понимал большую часть набранного кода.

Однако все большее знакомство с кодом было для меня ключом к обучению. Я начал понимать, что «циклы for» и «операторы if» - это вещи, которые позволяют кодеру управлять потоком и логикой.

Хотя на данном этапе я не мог написать их сам, потому что понятия не имел о том, как создать алгоритм, я изучил механику этих команд, исправляя и копируя код из книг.

В 1988 году я получил рождественский подарок моей мечты - Amiga A500. В то время это были огромные расходы для моих родителей, я помню, как мой отец откладывал на это весь год.

У него были не только гибкие диски, которые могли загружать программы за секунды, но и познакомили меня с многозадачностью, 32-цветной графикой (и режимом HAM, который допускал 4096 цветов) и стереозвуком.

Это был мой боевой пост в программировании на следующие два года, и он оказался поистине удивительным инструментом, который позволил мне изучить создание музыки и видео, 3D-моделирование и ряд различных языков программирования.

Подростковое кодирование

Первым языком программирования, с которым я столкнулся на Amiga, была версия BASIC, которая шла вместе с операционной системой.

Это мне сразу стало знакомо, потому что я программировал BASIC на Spectrum, и это позволило мне получить доступ к гораздо более мощной Motorola 68000 - хотя и с большим падением производительности по сравнению с другими языками на платформе.

Среда разработки была ужасной (Amiga BASIC была разработана Microsoft), но она позволила мне убедить себя, что я смогу научиться программировать на Amiga.

Я потратил много времени на изучение чудес настоящего графического пользовательского интерфейса. Я также рискнул заняться написанием сценариев. В 1992 году я обменял свой верный A500 на A600HD, свою первую машину с жестким диском (огромные 40 МБ).

Это помогло, потому что улучшило время загрузки и позволило мне хранить весь мой код и приложения. Он также познакомил меня с Workbench 2.0, в котором был ARexx, язык сценариев, который позволил мне полностью контролировать операционную систему.

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

На платформе появились и другие языки программирования. Два, которые привлекли мое внимание в то время, все еще основывались на BASIC, но обладали гораздо более мощными функциями, чем более старый Microsoft BASIC: AMOS и Blitz Basic.

AMOS был языком, который позволял создавать расширенную графику, спрайты и игры без необходимости понимать C или ассемблер. Это также позволило мне интегрировать простую трехмерную каркасную графику в мой код, и это был первый язык, который дал мне свободу творчества.

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

В качестве эксперимента я отправил демонстрационную версию своего программного обеспечения издателю программного обеспечения, являющемуся общественным достоянием (PD), и после нескольких модификаций они согласились продавать его.

К моему удивлению, люди звонили и хотели купить полную версию. Это было началом моей коммерческой карьеры в индустрии программного обеспечения.

Другой язык, который я выучил в то время, был Blitz Basic. Это гораздо более тесно интегрировалось с системой открытия и позволило мне создавать приложения, которые выглядели более профессионально.

Это был мой выбор после того, как я купил еще более мощный компьютер на торговой выставке Amiga 3000.

Впервые у меня был компьютер, который можно было модернизировать, и на деньги, заработанные случайными заработками в ресторанах и супермаркетах, мне удалось купить 24-битную видеокарту (Picasso IV) и я начал изучать гораздо более интенсивные методы кодирования. .

В этот момент я раздвинул границы BASIC и решил сделать смелый шаг, изучив 68000 ассемблер. Это была огромная проблема, но я решительно не жалею о ней.

После месяцев учебы и большого разочарования мне удалось начать писать игры, которые могли бы использовать преимущества чипсетов, которые я использовал.

Я дошел до разработки платформеров с боковой полосой прокрутки для себя, но неизбежный сдвиг в компьютерной индустрии в сторону архитектур с поддержкой Интернета и облачных систем означал, что я вскоре понял, что изучение этого типа языка ассемблера не имеет светлого будущего.

Тем не менее, изучение низкоуровневого языка позволило мне развить понимание того, как на самом деле взаимодействуют программное обеспечение и оборудование, и это открыло для меня много дверей в моей будущей карьере.

Делая это по-своему

В 1995 году мне повезло и мне повезло получить недельный опыт работы в моем любимом компьютерном журнале Amiga Format.

Находясь там, я не только замечательно провел время, выпив пива и играя в «Разумный мир футбола» с персоналом, но мне также разрешили написать для них пробное письмо.

Мне удалось доказать им, что я умею писать, и я начал карьеру журналиста-фрилансера. Это означало, что в следующие несколько лет мое время было поглощено другими видами работы.

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

Хотя я все еще интересовался программированием, мои дни были заняты написанием статей в последние дни журнала. Однако дни Amiga были сочтены (благодаря тому, что Commodore полностью неверно управлял компанией), и Интернет становился платформой, которая начинала доминировать.

Я не мог не заметить эту тенденцию, и хотя многие люди перешли на Windows в качестве предпочтительной платформы, я увидел потенциал зарождающегося Интернета.

Годы в университете

Когда я все еще писал для Amiga Format и в первые дни учебы в университете, мой фокус изменился, и я экспериментировал с другими платформами.

В университете нас учили вычислительной стороне офисного администратора - Windows, Office, скрипт VB и множество проприетарного программного обеспечения. Мы также познакомились с серверами и UNIX, а также с основами веб-дизайна.

Я изучал изготовление микросхем, аппаратное обеспечение и законы информатики. Программирование снова стало в центре моего внимания, так как это была область, которая интересовала меня больше всего.

Я был больше заинтересован в том, чтобы свободно говорить на C и развивать свои навыки работы с операционными системами, чем в том, чтобы научиться создавать автоматизацию Excel, и это отвлекло меня от ориентированного на администраторов мира платформы Windows и подтолкнуло меня к открытому исходному коду, и в частности , Linux.

Возможность изменять ядро ​​операционной системы и получать доступ к внутренней работе делала изучение C полезным и интересным. Работа с открытым исходным кодом также дала мне возможность улучшить свои навыки программирования и в то же время чего-то добиться.

Это было захватывающее время для открытого исходного кода в конце 20-го века - Интернет был открыт для захвата, и крупные корпорации, такие как Microsoft, отчаянно пытались завоевать господство. Они, конечно, проиграли, и открытые стандарты победили.

Еще одна вещь, появившаяся в то время, была веб-разработка, и поскольку у меня дома был сервер Apache, JavaScript стал центром моей жизни разработки.

Я узнал все, что мог, о интерфейсной разработке, а затем начал изучать внутреннюю разработку на Java. Моим первым крупным проектом была CRM с открытым исходным кодом, и он стал центром внимания в следующие два года моей жизни.

На своей первой работе в British Telecom я немного познакомился с аппаратным и инженерным оборудованием. Я два года проработал в их отделе проектирования сетей. Но моей страстью было программное обеспечение с открытым исходным кодом, над которым я работал.

Однако вскоре мне повезло, и мне предложили грант на обучение в магистратуре информационных систем. Я написал в Совет по исследованиям в области искусства и гуманитарных наук в Великобритании и объяснил, что я причастен к открытому исходному коду, и как я мечтал заняться исследованиями.

Следующий год я потратил на то, чтобы вложить то, что я изучил сам (Java и C), в ряд практических проектов, которые я обнаружил в университете.

Это привлекло внимание одного из профессоров, и они спросили меня, не хочу ли я получить степень доктора философии, которая будет включать в себя разработку и создание прототипов.

Я ухватился за эту возможность и потратил следующие пять лет на разработку системы на PHP / JavaScript и исследования электронной коммерции и SEO.

Кодирование для жизни

Пока я защищал докторскую диссертацию, я также начал свой первый набег на коммерческий мир разработки.

Мне предложили создать компанию, которая будет работать над престижными музейными проектами. Я был техническим директором и имел возможность разрабатывать и разрабатывать мобильные устройства с функцией определения местоположения (они были основаны на КПК).

Этот проект означал, что я действительно мог использовать свои навыки, в частности C, для разработки чего-то совершенно нового. Поскольку этого раньше никто не делал, у меня возникла серьезная проблема.

Мне удалось найти компанию в Китае, которая могла бы предоставлять активные метки радиочастотной идентификации (RFID), и я занялся разработкой программного обеспечения, которое могло бы их использовать.

Однако, когда я получил теги, там было минимальное количество документации, и большая ее часть была на китайском языке. После того как нашли переводчика, стало ясно, что это будет огромная задача.

В основном благодаря моему опыту работы с C и Assembler в 1990-х, это не было невозможным. Несмотря на крутую кривую обучения, мне удалось выяснить, как подключиться к RFID-меткам и создать приложение, которое посетитель мог бы использовать в музее.

Ключевым преимуществом системы было то, что, пока посетитель гулял, устройство показывало контент и рассказывало историю в зависимости от местоположения (это было за годы до того, как GPS и мобильные телефоны сделали этот тип системы обычным явлением).

Эта работа позволила мне развить как бизнес-навыки, так и навыки программирования, и я был уверен, что смогу двигаться дальше и многого добиться в ближайшие годы.

После завершения проектов, в которых я участвовал, я решил разорвать отношения с компанией, с которой работал, и сосредоточиться на защите докторской степени. В конце концов я достиг этого и достиг распутья в своей карьере.

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

Поэтому я решил вернуться в академическую среду и решил переехать за границу и искать работу в Испании.

Обучение нового поколения

Найти работу в другой стране никогда не бывает легко, но наличие докторской степени, опыта работы и практических навыков означало, что я нашел работу после того, как остепенился.

Сначала я начал преподавать общие технологии, но это было ненадолго, когда мои работодатели поняли, что я могу обучать программированию.

Для нового поколения это навык, который пригодится практически любому типу студентов, от бизнес-администраторов до студентов, изучающих вопросы коммуникации и дизайна. Я быстро поднялся до должности координатора занятий по программированию в университете, а также преподавателя более продвинутого уровня в магистратуре.

Изначально я преподавал традиционные классы Java, но язык был огромной проблемой для студентов, не изучающих информатику. Мне также предлагали занятия с совершенно нетехническими студентами, и мне пришлось адаптировать классы, чтобы сделать их более доступными.

В результате я сейчас преподаю Python и JavaScript, два языка, которые могут понять даже самые технофобные студенты.

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

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

Мне нравится заниматься исследованиями, и эта работа означает, что у меня есть возможность опробовать новые подходы и получить новые навыки, помогая людям впервые открыть для себя кодирование.

Будущее

Я не закончил обучение и не собираюсь когда-либо останавливаться.

Мой опыт работы с Python означает, что я начал преподавать совершенно новый круг предметов, связанных с наукой о данных.

Мой опыт работы с Linux и открытым исходным кодом также хорошо подготовил меня к преподаванию администрирования систем больших данных, и мои интересы прочно укоренились в том, чтобы стать экспертом в этой области.

Тенденции в области машинного обучения и искусственного интеллекта означают, что в этой области есть безграничные возможности, и я стремлюсь быть в авангарде.

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

Это позволило мне найти свое призвание и, в процессе, испытать огромное количество занятий и опыта.

Я надеюсь, что эта история вдохновит других принять вызов и стать опытным программистом. Это навык, который дает возможность управлять технологиями и может открывать двери и создавать невообразимые возможности.