Programming
Software Development
https://www.youtube.com/user/Computerphile/playlists https://github.com/mtdvio/every-programmer-should-know 🔥 https://web.archive.org/web/20121106102625/http:/blog.objectmentor.com/articles/2009/02/26/10-papers-every-programmer-should-read-at-least-twice
https://github.com/Developer-Y/cs-video-courses - lecture courses https://github.com/EbookFoundation/free-programming-books https://teachyourselfcs.com/
Здесь про общую практику программирования, методы, абстракции, инструменты.
https://github.com/Hexlet/hexlet-slack-archive/wiki - разговоры на hexlet
https://github.com/jwasham/coding-interview-university
Важные идеи в программировании:
Domain Drived Design - показала важность отражения сущностей реального мира в коде.
Continious Delivery - завершением каждого рабочего этапа должен быть выпуск удачной версии продукта.
Networking и архитектура Web - показала как можно строить масштабируемые архитектуры в которых логика взаимодействия скрыта.
Dockerization -
DevOps - намерение команды полностью владеть своим сервисом.
Continous Integration -
Видео Кирила Молевкина https://www.youtube.com/playlist?list=PL0vozJOrHoiLctFgohTe8wuIF5uDzkEWT
https://dev.tube/ - selected videos for developers
https://henrikwarne.com/2015/04/16/lessons-learned-in-software-development/ https://blog.juliobiason.net/thoughts/things-i-learnt-the-hard-way/
Spec first, then code
Write steps as comments
Unit tests are good, integration tests are gooder
Tests make better APIs
Be ready to throw your code away. TDD was designed to throw code away. You shouldn't worry about this. Your code is not a wall: if you have to throw it always, it is not wasted material. Surely it means your time writing code was lost, but you got a better understanding about the problem now.
Good languages come with integrated tests.
Future thinking is future trashing. Don't solve problems for a future problems. Solve the problem you have right now.
Documentation is a love letter to your future self
The function documentation is its contract
If a function description includes an "and", it's wrong
Don't use Booleans as parameters
Good languages come with integrated documentation
A language is much more than a language. A programming language is that thing that you write and make things "go". But it has much more beyond special words: It has a build system, it has a dependency control system, it has a way of making tools/libraries/frameworks interact, it has a community, it has a way of dealing with people.
Types say what you data is
Data flows beat patterns
Design patterns are used to describe solutions, not to find them. First, solve your problem; find a good solution; then you can check the patterns to know how you name that solution.
ALWAYS use timezones with your dates. When dealing with dates, always always add the timezone with it. There will be always a problem with your computer timezone and the production server timezone (or one of the instances timezones) and you'll lose a lot of time trying to debug what the heck the interface is showing the wrong time.
Loggers beats debuggers
Learn to monitor. Adding monitoring early will help you understand how your system behaves.
Companies look for specialists but keep generalists longer
The best secure way to deal with user data is not to capture it
Keep a list of "Things I Don't Know"
Excercises https://codelabs.developers.google.com/
Онлайн университет https://welcome.stepik.org/en
Effective Mental Models for Code and Systems https://medium.com/@copyconstruct/effective-mental-models-for-code-and-systems-7c55918f1b3e
SICP https://composingprograms.com/pages/12-elements-of-programming.html https://gist.github.com/anton-kabysh/00b3674a4593b05e6a451671e235c32e
https://twitter.com/akhmylov/status/1171812708049707008
https://www.csc.gov.sg/articles/how-to-build-good-software https://matthewreinbold.com/2019/07/17/OvercomingComplexity/
https://habr.com/ru/post/317312/ https://habr.com/ru/post/317850/ https://guides.hexlet.io/check-list-of-engineering-practices/
Last updated
Was this helpful?