Programming

Software Development

https://free-for.dev/#/

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 -

http://coderstoolbox.net/

Видео Кирила Молевкина 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