10x engineers #thread - "Founders if you ever come across this rare breed of engineers, grab them. If you have a 10x engineer as part of your first few engineers, you increase the odds of your startup success significantly." Article in case thread is taken down.
Bayesian Methods for Hackers: Probabilistic Programming and Bayesian Inference #book
Think Bayes: Bayesian Statistics in Python #book
Biggest Challenge You'll Face Learning to Code (Plus How to Overcome It!) #video - "Learning any new skill is challenging and I've definitely noticed a recurring theme that most everybody faces: how to stay motivated when progress seems to be non-existent (also know as the intermediate plateau). There's is no easy answer or magic pill but I definitely laid out a few pieces of advice of how to overcome it."
How to write Pseudocode: A beginner’s guide #article - "Pseudocode is an informal high-level description of a computer program or algorithm. It is written in symbolic code which must be translated into a programming language before it can be executed."
Hyper #software - "The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards. In the beginning, our focus will be primarily around speed, stability and the development of the correct API for extension authors."
Increment - "Increment is a print and digital magazine about how teams build and operate software systems at scale."
Lobsters - "Lobsters is a computing-focused community centered around link aggregation and discussion, launched on July 1st, 2012. The administrator is Peter Bhat Harkins ("pushcx"), contact him with any support issues. Lobsters was created by joshua stein with some specific design goals in mind to avoid problems faced by other link aggregation sites." Site code on GitHub.
Local Composer Package Development #article - "When developing a package for say, Laravel, you’d want to incorporate that package into your vendor folder so that you can test its integration into the project and how it would behave as if someone had pulled it from Packagist."
Monorepo #article - Wikipedia. "In revision control systems, a monorepo ("mono" from Greek μόνος, mónos, 'single, alone' and "repo" short for repository) is a software development strategy where code for many projects is stored in the same repository. As of 2017 some forms of this software engineering practice were over a decade old, but the general concept had only recently been named. Many attempts have been made to differentiate between monolithic applications and other, newer forms of monorepos. "
Paper is dead, long live Paper Programming #article - "It should come as no surprise to anyone who reads this blog that I love to program "by hand." I happen to practice a degree of ascetical programming practices, and I believe that they help me to more deeply internalize and understand problems, ultimately delivering higher quality solutions. One of the ways that I do this is the use of paper programming."
“Show a man a program and frustrate him for a day. Teach a man to program and you frustrate him for a lifetime” (via phi's forum profile).
Yagni #article - "Yagni originally is an acronym that stands for "You Aren't Gonna Need It". It is a mantra from ExtremeProgramming that's often used generally in agile software teams. It's a statement that some capability we presume our software needs in the future should not be built now because "you aren't gonna need it"."
Python AST module - "The ast module helps Python applications to process trees of the Python abstract syntax grammar. The abstract syntax itself might change with each Python release; this module helps to find out programmatically what the current grammar looks like."
Amplitude #webapp - Product intelligence. "See how Amplitude helps you use customer data to build great product experiences that convert and retain users."
Chartio - "Create powerful dashboards from your company’s data and quickly discover insights with Chartio."
mockAPI #webapp - "The easiest way to mock REST APIs! (Check out docs)"
Postman #software - "Simplifies API Development. Get easy, API-First solutions with the industry's only complete API Development Environment."
Slate - "Beautiful static documentation for your API"
Swagger - "Swagger open source and pro tools have helped millions of API developers, teams, and organizations deliver great APIs."
Continuous deployment with CircleCI - "Automate deployments with
CircleCI orbs A fast, out-of-the-box solution for integrating with AWS Lambda, GCP, Kubernetes, and other deployment services."
AWS CodePipeline - "AWS CodePipeline is a fully managed continuous delivery service that helps you automate your release pipelines for fast and reliable application and infrastructure updates. CodePipeline automates the build, test, and deploy phases of your release process every time there is a code change, based on the release model you define. This enables you to rapidly and reliably deliver features and updates. You can easily integrate AWS CodePipeline with third-party services such as GitHub or with your own custom plugin. With AWS CodePipeline, you only pay for what you use. There are no upfront fees or long-term commitments."
CONTINUOUS INTEGRATION - "Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. ❡ By integrating regularly, you can detect errors quickly, and locate them more easily."
Semgrep - "Static analysis at ludicrous speed. Find bugs and enforce code standards"
Deep Work / Deliberate Practice
Bountysource - "Support for Open Source Software. A community with 75,087 members hunting for bounties and earning rewards"
Build in public
CodeKata - "Code Kata is an attempt to bring this element of practice to software development. A kata is an exercise in karate where you repeat a form many, many times, making little improvements in each. The intent behind code kata is similar. Each is a short exercise (perhaps 30 minutes to an hour long). Some involve programming, and can be coded in many different ways. Some are open ended, and involve thinking about the issues behind programming. These are unlikely to have a single correct answer. I add a new kata every week or so. Invest some time in your craft and try them."
CodeWars - "Improve your skills by training with others on real code challenges"
How to Read Confusing Code #video - Most practical stuff starts 30 minutes in. She talks about different exercises for practicing how to read and understand confusing code. These practices could be done in a deep manner.
The Ultimate Code Kata #article - "Effortful study means constantly tackling problems at the very edge of your ability. Stuff you may have a high probability of failing at. Unless you're failing some of the time, you're probably not growing professionally. You have to seek out those challenges and push yourself beyond your comfort limit." #deep_work
Write a blog
GOTO 2016 • The Error of Our Ways • Kevlin Henney #video - "What happens when things break? What happens when software fails? We regard it as a normal and personal inconvenience when apps crash or servers become unavailable, but what are the implications beyond the individual user?"
GOTO 2018 • The Do's and Don'ts of Error Handling • Joe Armstrong #video - "Handling errors in programs is tricky. We want to write systems that work reasonable well even if there are errors in the code. This is possible, and the results have been used in production systems for many years. This talk outlines the do's and don'ts of error handling. Things you should do if you want to write fault tolerant code, and things you should not do."
Sentry - "Sentry provides self-hosted and cloud-based error monitoring that helps all software teams discover, triage, and prioritize errors in real-time."
National Vulnerability Database - "The NVD is the U.S. government repository of standards based vulnerability management data represented using the Security Content Automation Protocol (SCAP). This data enables automation of vulnerability management, security measurement, and compliance. The NVD includes databases of security checklist references, security-related software flaws, misconfigurations, product names, and impact metrics."
Threat model #article - Wikipedia. "Threat modeling is a process by which potential threats, such as structural vulnerabilities or the absence of appropriate safeguards, can be identified, enumerated, and mitigations can be prioritized. The purpose of threat modeling is to provide defenders with a systematic analysis of what controls or defenses need to be included, given the nature of the system, the probable attacker's profile, the most likely attack vectors, and the assets most desired by an attacker. Threat modeling answers questions like “Where am I most vulnerable to attack?”, “What are the most relevant threats?”, and “What do I need to do to safeguard against these threats?”."
Sketch.systems - "Explore how your product should work, before building it. Sketch.systems helps software designers think about complex product behavior. Sketch out states, add prototypes, and clarify questions quickly."
spectrum.chat/statecharts - "Statecharts are a precise, visual way of modeling the behaviour of complex reactive systems. They describe how things work, and can help you get your code doing exactly what you want."
StateCharts - "Put simply, a statechart is a beefed up state machine. The beefing up solves a lot of the problems that state machines have, especially state explosion that happens as state machines grow. One of the goals of this site is to help explain what statecharts are and how they are useful."
Clean Coders #video - "Write code that sings. Elevate your skill with software training videos for impassioned developers."
Coding Horror #blog - by Jeff Atwood. "Programming and human factors"
Derek Banas #video #channel - “I make tutorials based on your requests. I will cover any topic you can imagine. I upload new programming videos on Saturday and Wednesday morning. I Live Stream at 8PM EST on Monday and at 7PM EST on Tuesday, Thursday and Friday.”
Dev.to - "DEV is a community of software developers getting together to help one another out. The software industry relies on collaboration and networked learning. We provide a place for that to happen."
GitNews - "Trending repositories from GitHub, HackerNews & Reddit"
if/else #podcast - "A career in technology is full of choices. We’re here to help you make smart ones. In each episode, we meet a software developer who needs to make an if/else choice. From important technical decisions to sticky career challenges, we cover the hard and soft skills you need for a sustainable and rewarding career in tech… at any stage of your career. Hosted by Mayuko Inoue, if/else is an original podcast from CTO.ai, the makers of The Ops Platform."
Increment - "Increment is a print and digital magazine about how teams build and operate software systems at scale. Learn more"
Martin Fowler - "Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it easier to build useful software. The site began as a place to put my own writing, but I also use it to publish articles by my colleagues."
Robert Martin #article - Blog. "Robert Cecil Martin, colloquially known as "Uncle Bob", is an American software engineer and instructor. He is best known for being one of the authors of the Agile Manifesto and for developing several software design principles. He was also the editor-in-chief of C++ Report magazine and served as the first chairman of the Agile Alliance" (Wikipedia).
Software Engineering Radio #podcast - "Software Engineering Radio is a podcast targeted at the professional software developer. The goal is to be a lasting educational resource, not a newscast. Three to four times per month, we publish a new episode talking to experts from the software engineering world about the full range of topics that matter to professional developers."
Syntax #podcast - "A Tasty Treats Podcast for Web Developers."