• Что почитать №22

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

  • Thoughts on Russian-speaking communities

    I decided to not stay in Russian-speaking communities anymore. No matter what they are about: Clojure, Emacs, etc… When I see “…for Russian speakers” at the end of the title my hand moves to the cross-button by itself.

    The main problem of Russian communities is they are all about trolling and rudeness. Every single person reckons himself as a Single Source Of Truth no matter what the facts say.

    Even without opening a chat I can say what it is about. Definitely, to prove you are the most clever guy all around.

    Recently, I’ve been chatting in Russian Clojure community in Telegram channel. That was awful. There were more then 100 people there, but only three of them (including me) work with Clojue for their daily work.

    Nevertheless, the chat was boiling all the time. People argued on functional programming without any knowledge of that. There were trolls whose intentions were just to throw shit on fan.

    I knew a person who was only 3 months with Clojure but argued so violently like he’s been 30 years with Lisps and functional programming. It applies to almost every member of discussion. On the first monitor, they have chat window and on the second there is a Wiki page or Stack-overflow where they convulsively try to find facts to support their opinion.

    I looks so poorly.

    And it’s this the same with other messagers and channels. No matter what is the subject of a community. In Russian-speaking group, it always ends up with a question who is cooler.

    That behaviour shows all the bad traits human have. We try to pretend we know everything, be a leader (no matter in what way), hide our weaknesses and muffle misunderstanding of something.

    What’s the point to read all that rubbish? Why do I need spend my time scrolling a feed full of arrogance?

    I must confess Russian people are rude in general. This is particularly noticeable after you have told to non-Russian native speakers. Russian way of discussing tend to be aggressive and even impolite sometimes.

    So what should you do? As for me, it’s better to join world-wide communities and channels in English. I’m sure you can easily find out Slack or Google Group channel for any language or technology you are interested in.

    Staying in Russian communities only stops your development and limits your horizons.

    If you disagree with me I highly recommend you to read that article written by Ivan Sagalaev, a famous Russian Python developer who moved to USA:

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

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

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

  • What to read #21

    With a little delay, here are the links:

    Non-IT links:

  • Мне пишут #1

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

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

    Думаю начать с простого, кормен вводный курс плюс онлайн курс на закрепление…

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

    А вопрос таков, стоит ли решать олимпиадные задачки? ибо один девелопер мне однажды сказал, что толку нет от них…

    Они дают плюсы для дальнейшей карьеры?

    С уважением, N.

    P.S. Знакомые ребята, которые устроились джунами в Киеве говорят, что с алгоритмами не сталкивались( да они и не знают ничего даже про стеки, очереди и тд) только слышали в раговорах в курилке между серьезными разработчиками…

    Решать олимпиадные задачи, на мой взгляд, смысла нет. Они слабо связаны с промышленными нуждами. Почти все задачи с олимпиад, что приходилось мне видеть, относятся к теории графов: как правильно составить и затем обойти. Графы не так часто используются в повседневной разработке.

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

    Выражаясь еще проще, на уровне джуниоров-фрилансеров глубокие знания не котируются. Может даже быть обратный эффект – опасение. Заказчик думает: попросишь такого спеца текст распарсить, а он Tensor-flow прикрутит, ценник выкатит конский. Не буду связываться.

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

    Начните с базовых инструментов: освойте окружение разработчика, азы Линукса, какой-нибудь язык и минимальный набор библиотек к нему. Если чувствуете, что изучили повседневные инструменты (Питон, Гит, редактор, SQL, Js, CSS, HTML, HTTP/Ajax), то займитесь английским и параллельно читайте SICP и функциональноые программирование.

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

  • What to read #20

    There are 20 issues already!

    There haven’t been some spicy links for a couple of months. My bad:

  • Clojure Webinar #1

    In this video, I’m talking on Emacs advantages when using Clojure.

    Links from the video:

  • Why not Python

    Recently, I was sorting out with my drafts for blog when I found an interesting one. It was about what programming language to use for education at schools and universities. Python for sure! the draft says. Easy syntax, cross-platform, wide community and bla-bla-bla.

    I’m happy I haven’t published that post so far because nowadays that way of thinking makes me ashamed. Considering any specific language as the primary key of successful education means to make a mistake. Even Python with all its benefits.

    You could ask me: no Python, great, so what else could you suggest? Let me keep an answer for a couple of paragraphs. Instead, could you think just a minute on what’s the reason of IT education in general? I mean, we attend to IT department for… what?

    To learn a modern language? Maybe. But once you finish the university, you’ll realize there are lots of new languages and frameworks. Your possible employers don’t need PHP + jQuery anymore, they want Ruby + React. Or substitute those tools with Java and Scala, it doesn’t matter. In a long term, you cannot reach a train that moves faster day after day. Since technologies became simpler (Python, Ruby, Node.js), there are more and more people claim on the same workplace.

    One of your trump card might be a good knowledge of algorithms. I mean, you must understand how the things work rather then copying and pasting them from the Internet. The most serious problem that happens to new ones is they just don’t know how to split a huge thing into primitives. How to build abstractions. How to write a function rather than using a class with global state.

    I saw an online interview one time. A junior Ruby guy was asked to write a function that reverses a string. I cannot do that, the answer was. OK, you have an hour, he was told. Deal with it. There were long 50 minutes of misery but he didn’t make it anyway.

    Closer to the end, they asked to stop writing code, but to describe the algorithm in words at least. No success.

    That guy knew Ruby, though. And Javascript. And Node.js, Webpack, Bower and so on. I may even think he worked on his project as well. But I would never hire him or let him join a team which I belong to. Because when you cannot express a primitive operation in words, it reveals dangerous holes in your mind. And that could cause unpredictable troubles.

    As far as I see the purpose of education, it’s not to learn Python or any other language. It’s about a) how to compose abstractions using primitives and b) how to simplify abstractions, express them via primitives. Two-ways process, I guess. Up and down. Once you can rich any level at will, you are a great programmer.

    Talking about Python, I consider it as a great tool to express your ideas. When you definitely know how the things should work, but don’t have much time. It is one of the reasons why it’s so popular in scientific area. Engineers and scientists are usually busy with research, but not learning patterns and SOLID. Python is a great choice for them. To build a chart, to train a neural network.

    But that easiness could even kill willness to learn. For a newbie, neither a good syntax and rich standard library could help to become a good programmer. Maybe to write a web app, to find the first job, but not to teach you how to solve problems other than putting a JSON into DB.

    I would never face other stuff, you may say. OK, that’s up to you. But there won’t be growth in your career. Because developing web apps becomes easier nowadays regardless Ruby, Node.js and crowds of students. How would you survive?

    So after all, what language could make you high in algorithmic thinking? Suddenly, it’s Lisp =) or Scheme if talking more precisely. Scheme is the best tool to learn programming, I think. Not C, Python, or Javascript.

    Scheme forces you to make everything from scratch by your own. At the end of SICP, that’s not a problem to write your own registry machine with compiler using pure lists and cons pairs. When you deal with some programming language or tool, you really understand how the things work under the hood without checking a source code. Only Lisp could bring that fillings.

    Yes I know that in MIT, they stopped teaching SICP in respect of Java. It’s their decision after all. Maybe, after 20 years they’ve become really tired of it. And nobody couldn’t develop a new curriculum. But I know what did Dijkstra say about that and I cannot agree more with his opinion.

    Long story short: try Lisp. It’s not a silver bullet. Perhaps you would never work with it in the future. There a quite a few jobs, I know. But even bits of its knowledge will make you a better programmer than now you are.

  • What to read #19

  • ООнанизм

    Познакомьтесь с объектно-ориентированным онанизмом:

    chai.should();
    
    foo.should.be.a('string');
    foo.should.equal('bar');
    foo.should.have.lengthOf(3);
    tea.should.have.property('flavors').with.lengthOf(3);
    

    Круто же? Просто.пишешь.слова.через.точку.и.все.понятно(). Недолго новый язык придумать:

    Пусть.Сумма.Равно.Единичка().Прибавить.Двойка();
    Сохранить.В.Базу.Пользователь().Созданный.Из.JSON.Строки.Введенной.Из.Консоли().
    

    Обычного ассерта недостаточно. В библиотеке есть Should, Expect и Assert. Почему нет Мамой.Клянусь, Бля.Буду или Стопудов? Чтобы уж точно быть уверенным, что тест работает.

    Конечно, этот бред зародился Джаваскрипте. Где же еще до такого додумаются? Но заразу начинают тащить в Руби и Питон. Языки группы риска.

    Что возвращает метод should? А что be, a? А если напишу .be.be.be.a.a.a("wtf")?

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

    У нас в проекте на Кложе 80 тестов и 800 ассертов, все работают на одном макросе is. А этим долбоебам нужен квази-язык чтобы.писать.в.объектном.стиле.потому.что.круто().

    Шизофрения, как и было сказано.

  • What to read #18

    Nice links to read:

Страница 54 из 84