Внезапно сменил работу
Кажется, буквально только что прогремела моя статья о собеседованиях, феерично завершившаяся попаданием в 2ГИС. Восемь месяцев — чертовски маленький срок. Никогда не занимался «джобхоппингом», так что и сейчас не открывал резюме, не искал работу, готовился к аттестации. Встроился в процессы, накупил корпоративного мерча, подружился с коллегами и стал регулярно ездить в офис (который при мне перенесли в другое здание и расширили). Уже прям ассоциировал себя с 2ГИС.
Но внезапно мне сделали очень заманчивое предложение. Такое, от которого невозможно отказаться. Позвали в расширяющуюся финтех-компанию архитектором на новые продукты. Очень грустно уходить из 2ГИС, но я бы себя не простил, если бы не воспользовался открывшейся возможностью.
Сегодня на теперь уже старом месте работы было exit-интервью. Кстати, хорошая практика — компания обращает внимание на особенности в статистике увольнений. Задавали вопросы о том, что было хорошо, а что можно улучшить.
Вообще впечатления от 2ГИС самые тёплые. Из плюсов я бы выделил развитую корпоративную культуру и приятную атмосферу работы (не в последнюю очередь благодаря коллегам). Я с удовольствием читал внутренний новостной портал, ходил на презентации фич и самопрезентации новичков, участвовал в местных квизах. Прям сильный косяк вышел только с хакатоном, я вам об этом писал, но там скорее всего просто конкретные организаторы лажанули.
Одна из самых крутых киллер-фич 2ГИС, как работодателя — упрощённое взятие выходных и отпусков. По большей части не нужно никаких специальных согласований, если ты внезапно повёз ребёнка к врачу, или сам устал и хочешь денёк отоспаться.
Однако, в других местах отсутствие формализма порождает сложности. В Росатоме, например, процессы движения задач по жизненному циклу были зарегламентированы сильнее: нельзя передать что-то в разработку без аналитики, постановщик задачи сам следит за её статусами, задача целиком переназначается всегда на текущего одного ответственного человека (на стадии разработки на программиста, на стадии тестирования на тестировщика и т.д.). В 2ГИС иногда задачи приходили от бизнеса с необходимостью самостоятельно ходить по людям и уточнять, что на самом деле хотели. Делалось это как бы для экономии на аналитиках, что лично мне кажется большим заблуждением: бизнес таким образом платил за время более дорогого программиста, который ещё и выполнял работу аналитика дольше, потому что специализируется на другом. В итоге то, что казалось экономией, в моём понимании было скорее увеличением расходов и сроков. То же самое касалось, например, архитектуры и техдолга (но это типичная проблема подавляющего большинства бизнесов — техдолг вообще никто не умеет считать и оценивать).
Я бы сказал так: 2ГИС как бы вырос из стартапа и стал практически бигтехом, особенно после покупки Сбером. Если не бигтехом, то энтерпрайзом точно. Но в итоге оставил часть недостатков стартапа (экономия на «второстепенных» вещах, отсутствие регламентов) и получил часть недостатков энтерпрайза (слабое влияние сотрудников на конечный продукт, очень затянутое планирование и согласование новых задач, заметное количество легаси).
С другой стороны в той же мере присутствуют одновременно плюсы стартапа (простые организационные процессы, неформальная атмосфера) и плюсы энтерпрайза (стабильная компания с офисами, конкурентными зарплатами, рыночным белым оформлением, айти брендом и корпоративной культурой).
Если вы дисциплинированы, компетентны и не боитесь некоторых трудностей, то я однозначно готов советовать работу в 2ГИС. Сейчас идёт набор разработчиков на C#, Go, дата-саентистов, присоединяйтесь :) Уровни мидл и сеньор.
#dev@clockstackwheels#life@clockstackwheels
#Asynchronous#JavaScript
🛠
Asynchronous Programming in JavaScript
Asynchronous programming is often intimidating, it’s not how we normally consider writing code. This course shows how promises and async/await can help simplify async programming.
Asynchronous programming is often confusing when first learning JavaScript. In this course, Asynchronous Programming in JavaScript,, you’ll gain the ability to handle async programming in JavaScript. First, you’ll explore consuming promises. Next, you’ll discover creating your own promises. Finally, you’ll learn how to use async/await to handle asynchronous programming. When you’re finished with this course, you’ll have the skills and knowledge of JavaScript promises needed to handle asynchronous code.
📅 1/2023
🔗Link
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
https://medium.com/@seashorepartners/python-3-6-has-it-redefined-web-development-233165023a36
Python 3.6 — Has it redefined web development?
#Python 3.6 is the biggest ever release by Python, and it starts its enhancements from where Python 3.5 left. Released in December 2016, the world is going gaga over the new release, as the #enhancements help improve speed and performance of your website without compromising on the quality or, the way you have construed your website.
#Asynchronous Functions
https://docs.python.org/3/library/asyncio.html
#asyncio
#Asynchronous programming is more complex than classical “#sequential” programming: see the Develop with asyncio page which lists common traps and explains how to avoid them. Enable the debug mode during development to detect common issues.
https://github.com/szastupov/aiotg
aiotg
https://travis-ci.org/szastupov/aiotg.svg?branch=master
#Asynchronous#Python#API for building Telegram #bots, featuring:
Easy and declarative API
Hassle-free setup - no need for SSL certificates or static IP
Built-in support for analytics via botan.io
Automatic handling of Telegram API throttling or timeouts
http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html
I spent this summer working on a #web_platform running on #Node.js. This was the first time I worked full-time with Node.js and one thing that became quite apparent after a few weeks of working with it was that many developers, including myself at the time, lack clarify on exactly how the #asynchronous features of Node.js work, and how they are implemented at a lower level. Since I believe the only way to use a platform efficiently is to have a clear understanding of how it works, I decided to dig deeper. This curiosity also made me start playing around with implementing similar asynchronous features in other languages, in particular Python, it being my go-to language for experimenting and learning. This led me to Python 3.4's asynchronous IO library asyncio in particular, which intersected with my already existing interest in coroutines (see my post on combinatorial generation using coroutines in Python.) This post is about exploring the questions and answers that came up while I was learning more about this subject, which I hope can help clarify and answer some questions for others as well.
http://krondo.com/an-introduction-to-asynchronous-programming-and-twisted/
Twisted Introduction
This multi-part series introduces #Asynchronous Programming and the Twisted networking framework.
#Twisted is an event-driven networking engine written in #Python and licensed under the open source MIT license. Twisted runs on Python 2 and an ever growing subset also works with Python 3.
#network#learn
#signal — Set handlers for #asynchronous events
This module provides mechanisms to use signal handlers in Python.
The signal.signal() function allows to define custom handlers to be executed when a signal is received. A small number of default handlers are installed: #SIGPIPE is ignored (so write errors on pipes and sockets can be reported as ordinary Python exceptions) and #SIGINT is translated into a KeyboardInterrupt exception.
#Asyncio
https://docs.python.org/3.4/library/signal.html
https://pypi.python.org/pypi/uvloop
#uvloop is a fast, drop-in replacement of the built-in #asyncio event loop. uvloop is released under the MIT license.
uvloop and asyncio, combined with the power of async/await in Python 3.5, makes it easier than ever to write high-performance #networking code in Python.
uvloop makes asyncio fast. In fact, it is at least 2x faster than #nodejs, #gevent, as well as any other Python #asynchronous framework. The performance of uvloop-based asyncio is close to that of Go programs.
https://vorpus.org/blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/#websocket-servers
I've recently been exploring the exciting new world of #asynchronous I/O libraries in Python 3 – specifically asyncio and curio. These two libraries make some different design choices.
Example 1: #asyncio, with callbacks
Example 2: #curio, with #async/#await
Example 3: asyncio, with async/await
#websockets