Показаны сообщения с ярлыком it. Показать все сообщения
Показаны сообщения с ярлыком it. Показать все сообщения

суббота, 7 мая 2011 г.

Что надо знать программисту.

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

Также для общей информации приведу ссылку на рейтинг языков программирования

Список книг для начинающего программиста

Прочитав статьи в интернете, привожу здесь суммарный список знаний:

1) Высшая математика. Чтобы программировать на профессиональном уровне без математики никуда.

2) Английский язык. Статьи, блоги, новейшие книги по новым технологиям, документация написаны на английском. И вам придется выбирать, либо идти в ногу со временем (зная английский), либо несколько лет ждать, когда книгу о новом языке программирования переведут на русский и издадут.

3) Asm. Изучив ассемблер, приходит понимание, как работает компьютер, и откуда «ноги растут» у языков программирования высокого уровня.

4) С. Это язык, который пригодится любому программисту, поскольку используется в любой операционной системе, позволяет управлять памятью вручную. Занимает второе место в рейтинге языков программирования.

3) Pascal. Язык высокого уровня, на котором легко учится алгоритмам работы с массивами, графикой, файлами, строками, динамическими структурами данных (графы, деревья, списки)… Язык позволяет совершенно не знать ООП и помогает в понимании как построить алгоритм. Сейчас язык устарел и вряд ли вам пригодится в работе. Даже в наших ВУЗах его сняли с преподавания года три назад. Вакансий, требующих разработчиков Delphi, практически нет.

4) Prolog. Как пример логического программирования. Для его изучения потребуется знать, что такое предикат (то есть математическая логика).

5) Lisp. В этом языке все построено на списках, служит примером функционального программирования.

6) HTML. Язык разметки текста. Знания его вам пригодятся везде, как на работе, так и в развлечении (например в ведении блога). Учится очень легко. Можно даже совершенно не знать программирования, чтобы его выучить. Повторяется в пункте 19 с различными версиями.

7) PHP. Язык, который позволит создать web-страничку, понять как устроен интернет. Учится просто, нет заморочек с типами данных. Начав его учить с утра, в конце дня можно написать свою страничку.

8) ООП. Вот теперь пришла очередь ООП. Учить надо, это бесспорно. Без знаний ООП можно программировать только на ассемблере.

9) Java. Занимает первое место в рейтинге языков программирования. Очень много хороших учебников в открытом доступе.

10) С++

11) C#

12) JavaScript

13) Perl

14) Python

15) VisualBasic

16) Ruby

17) design patterns. паттерны: GoF, MVC, MVVM, MVP

18) Архитектура Windows и Linux. Налаживание сети. А также простые пользовательские вещи, незнание которых профессиональным программистом часто удивляет.

19) XML, XHTML 1.1, HTML 4, HTML 5, CSS 2, CSS 3, XPath, XSLT

20) SQL и его диалекты. Очень важная вещь для работы и создания любого проекта.

21) реляционные БД. SQL-92, TSQL (MsSQL), PL-SQL(Oracle), MySQL, PostgreSQL

22) необходимо связываться с БД, следовательно: ORM, Hibernate, NHibernate, Entity Framework, Linq-To-SQL, ADO.NET

23) архитектура x86

24) принципы юзабилити

25) принципы параллельного программирования

26) регулярные выражения

27) теория сложности алгоритмов

28) протокол TCP/IP

29) технологии COM, Corba. Технологии построения распределенных и компонентных приложений.

30) API Windows 98/NT и DirectX

31) MS Office + Visual Basic for Applications

32) принципы работы клиент-серверной и трехзвенной (с выделенным логическим ядром) архитектур

33) принципы построения Web-узлов

34) сетевые технологии (Телекоммуникации)

35) В понятие “знание Х” как само собой разумеющееся входит требование “опыта практической работы с Х”. Очень неплохо, если вы сможете продемонстрировать работодателю хотя бы один законченный проект. Ведь одно дело заявлять, что вы знаете Си++, и совсем другое - показать написанный на Си++ и устойчиво работающий, с инсталлятором и нормальным “хелпом” продукт, которым к тому же кто-то пользуется. Конечно, совсем не обязательно пытаться написать Windows 2000 или Word 99, но хорошему программисту вполне по силам сделать, например, аккуратную программу хранения и печати платежек, оригинальный визуальный OCX-элемент управления или небольшую игрушку. Положить их можно на сайтах, распространяющих ПО бесплатно (типа www.download.ru или www.freeware.ru), где самые интересные программы копируются десятками тысяч пользователей. Это будет прекрасной характеристикой результатов вашего труда. Кроме того, одновременно можно попытаться что-то и заработать на создании shareware-программ.

36) понимать все этапы жизненного цикла создания ПО

37) иметь опыт групповой работы

38) знать системы контроля версий (типа PVCS), репозиториями CVS, SVN, Git, Mercurial, TFS

39) разбираться в CASE-системах построения информационной модели БД

40) знать языки четвертого поколения, точнее, среды разработки высокого уровня, нередко встроенные в СУБД (Oracle Developer, PowerBuilder, SQL Windows и т. д.). Эти языки в большинстве своем очень похожи, и перейти с одного на другой не составляет никакого труда.

41) Неплохо организовать свою страничку в Интернете, благо узлов, предлагающих для них бесплатное место, сейчас полным- полно (например, www.chat.ru). Чем “круче” будет наворочена такая страничка с программной точки зрения (аплеты на Java и JavaScript, VRML-миры и т. д.), тем лучше. В идеале хорошо бы разместить свой CGI-скрипт, но для этого надо договариваться с провайдером. Над эстетикой оформления можно не задумываться, если программист, конечно, не собирается стать профессиональным дизайнером. Главное - продемонстрировать свои знания программиста.

42) технологии искусственного интеллекта, нейронных сетей

43) принципы построения интерпретаторов и трансляторов (во многих КИС используются встроенные языки)

44) желательно разбираться в предметной области (в 95% случаев это бухгалтерский и управленческий учет)

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

46) Веб-разработка: ADO.NET , ASP.NET, ASP.NET MVC (ASPX/Razor). Создавать клиентские приложения, следовательно, WinForms, WPF, MFC.

47) Участие в OpenSource проектах

48) Просмотр кода OpenSource проектов

49) Оглядываясь назад, я сделал неожиданное для себя замечание. Возьмем изучение шаблонов проектирования. Я читал много книжек, смотрел видео по этим темам, читал статьи. Но, всё это изучение закончилось бы ничем, если бы не два фактора. Во-первых, мне надо было применять это в реальных проектах. Во-вторых, я нашел тех, с кем можно было посоветоваться, кто мог бы доходчиво объяснить. И так по каждой теме. Будь то TDD, Agile, DDD или что-то другое. Ищите людей, которые смогут вам объяснить.

50) Саморазвитие. Чтение книг

Я отдаю предпочтение бумажным книгам, которые заказываю в интернет-магазинах. Читаю примерно 1-2 книги в месяц. Бывает больше, но это норма.

Чтение статей

Мой список блогов и ЖЖ в Google Reader постоянно обновляется и дополняется. Чтение статей помогает оставаться в курсе событий и тенденций IT мира.

Написание статей

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

Участие в конференциях

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

Узнавать у коллег, в чем вам ещё нужно подрасти

Это самый эффективный и психологически сложный способ «вытащить себя за волосы вверх». Спросить у своих коллег, чего мне не хватает, как мне стать лучше. Обязательно поинтересуйтесь — узнаете много интересного.

51) создавать клиентские приложения, следовательно, WinForms, WPF, MFC.

52) технологии Silverlight, WCF, WF, знания SOA

53) некоторые фреймворки разработки: Sharepoint, Microsoft CRM, SugarCRM

54) Continuous Integration (CC.NET, nAnt, TeamCity, TFS)

55) нужно знать разные оболочки разработки, инструментарии (Debuging, Profiling)

56) TDD, IoC, Scrum, Agile

57) Очень хороший вариант – сидеть на специализированных IT форумах. Сначала просто читать. Потом вчитываться в нерешенные проблемы, искать решения в гугле, и решать чужие проблемы. Потом научитесь видеть проблемы на поверхности. Или сможете без проблем решать их сами.

58) Книги библии








59) Займите себя чем-нибудь. До сих пор нет ни одного нормального Twitter клиента, все отстой. Ну, напишите и вы свой отстойный клиент. Есть всего один нормальный бесплатный движок для форумов phpBB, и то на php. На amazon kindle до сих пор нет notebook (идея уже забита). Крадите идеи, переделывайте их, реализуйте двойников. Посмотрите на телевидение, да там 99% программ украдено с запада. В IT воровать тоже можно, честно. Пускай даже вашей программой будете пользоваться только вы и пара ваших знакомых – роль будет играть то, что вы довели какой-то (хоть даже очень маленький) проект до конца.

Если вы делаете одну и ту же задачу дважды – вот она работа для настоящего программиста. Автоматизируйте все. Таскаете wallpapers с atata ветки? Напишите программу, которая будет делать это за вас и выставлять вам новые wallpapers по параметрам с этого RSS. Напишите сначала простую нерабочую программку, следите за ней, развивайте, дайте попользоваться друзьям. Сделайте нормальный GUI, выложите в интернет.

60) Будьте программистом

Самое основное – это пройти тот этап, когда человек превращается в программиста (благо математики достаточно близки). Эти шутки про алгоритм “вскипятим чайник” (все же ее знают, ведь так?), или про то, что программист, переходя дорогу с односторонним движением, смотрит в обе стороны – они не просто так. Это способ мышления. Нельзя никому верить, нужно проверять внешние параметры. Нужно уметь видеть ошибки. Нельзя никогда полагаться на умного пользователя. Это, кстати, одна из ошибок нашего преподавания, что преподаватели позволяют делать изначально плохие программы студентам. Студенты не валидируют данные, делают ужасные интерфейсы. Моим студентам сейчас не повезло, я за них взялся.

Чтобы размяться начините с чтения вот этой книги

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

вторник, 5 апреля 2011 г.

К вопросу об электронных книгах.

Worldreader – программа распространения букридеров в африканских школах.



Веселое видео, для тех кто еще не видел)




Для справки В США букридеры стоят примерно в два раза дешевле, чем в России. Знакомый заказывал полгода назад через Амазон, вместе с доставкой он мог бы купить еще одну такую же - и это составило бы цену одной модели такого букридера в наших российских магазинах. Плюс ко всему торговые точки не обеспечивают широкого выбора. Но чтобы заказать через Амазон, нужно очень много времени (минимум пять недель до получения первой покупки). Требуется сходить в банк, оформить карту, потом зарегестрироваться в двух местах в интернете(за регистрацию снимают 10$), ждать сначала две недели оформления карты, затем снова ехать в банк и получить ее, а потом только можно делать первый заказ. Причем карта действительна только полгода - затем ее нужно продлять.

воскресенье, 3 апреля 2011 г.

Не создавайте аккаунтов на Google @gmail.ru ИЛИ Google преподносит сюрпризы

Был аккаунт t@gmail.ru. Сегодня скинула с КПК Android 2.1 свои контакты на этот аккаунт в Google. Решила зайти на почту(до этого я уже заходила, отправляла и получала письма с этого ящика), так как доступ ко всем контактам осуществляется через почту. Нажав линк Gmail на главной странице Google - вылезла просьба зарегистрировать аккаунт @gmail.com (несмотря на то, что я находилась в этот момент под своим аккаунтом t@gmail.ru и с почтой раньше работала). Я зарегестрировала почту t1@gmail.com и наконец-то зашла в почту, но контактов перенесенных с КПК там не оказалось=( Более того половина информации из сервиса вопросов и ответов исчезла без следа, также исчезла часть отправленных и полученных писем из почты, но часть последних писем все таки перешла в новую почту t1@gmail.com. Аккаунт t@gmail.ru при этом исчез. Его снова можно было зарегестрировать через гугл(!). Что я и сделала, но он оказался девственно-чист. Свои контакты с КПК найти ни на одном из аккаунтов не удалось.

P.S. Все аккаунты вымышленные, а любые совпадения случайны

пятница, 1 апреля 2011 г.

Google создал бесплатный и доступный генератор бреда.

В средах разработки давно уже существует функция контекстной помощи - это когда пишешь первые буквы слова, а тебе предлагают слово целиком или даже фразу. Как-то давным-давно жили-были дед и баба у меня была идея написать такой текстовый редактор, который будет за тебя набирать текст. И ,о чудо! Его уже реализовали (жаль, что без меня). Итак, представляю вашему вниманию: Google Scribe

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

программы для работы с детьми и подростками в возрасте от 3 до 5 лет и более в зависимости от того как вы посмотрели на меня с таким же успехом можно было бы и не было бы и не быть в состоянии сделать это в течение нескольких лет в России

I love you baby and I am not sure if it is not a valid stream resource in D minor for two violins and a cello player and a great deal. The first is the one that is not the case for the other two are the same as the one in the same way.

C sharp minor Op Art Sateen Maggie and I are going to be a part of the products name and address of the person who is not

java enabled browser to view the full size of the data in the form of a single dose of the drug in the treatment of the subject