In the future, I'll make a blog post on how you can become a productive software engineer faster
A developer without an understanding of their environment is a carpenter without the knowledge of his workshop.
Some things you should know before coding are:
- PATH: What is it, how is it used, and how to modify it
- Linux: how to make a file executable
- Terminal: how to launch one on your OS with only your keyboard
An IDE stands for Integrated Development Environment (Code Editor), not relevant to know this though
set, dict, list
and learn about generators
in Pythonargparse
module and create a sample terminal app with support for boolean flags and --flag arg
Read relevant awesome lists
The Copenhagen Book Git: Version Control System (Code History)git config --global core.autocrlf input
git rm --cached -r . && git reset --hard
git rev-parse --abbrev-ref HEAD
git rebase --interactive $UNTOUCHED_COMMIT
git rebase -i HEAD^^
where the number of ^ corresponds to n
git push --force
git reset $UNTOUCHED_COMMIT
git reset $(git log main --format=%H | head -1)
git push --force
git reset --hard @{u}
git reflog --before=2024-10-23T21:41:24.107351Z
git update-index --chmod=+x foo.sh
commit --amend
).
git commit --amend --date "$(date -R)"
git commit --amend --date "$(date)"
git remote show origin
I recommend learning to do everything within an IDE like VSCode
Database: PostgreSQL, use a managed PostgreSQL in production.
Backend: ASP.NET Core. Great performance, and comes with a lot of DX out of the box
When creating an ASP.NET project, use the dotnet CLI to select the WebAPI template for SPAs or the Web App template for Razor pages
If you use another backend framework, make the responses are as expected if the database restarts
You can install .NET either through Visual Studio C# Dev Kit, dotnet.microsoft.com, or Visual Studio
Frontend: use Vite to create a React or SolidJS TypeScript project combined with Inertia so that you are free to use any backend and still get server-side rendering for your single-page apps. Alternatively you can use Astro + API or the native SSR framework like Razor pages, Handlebars, htmx, Jinja2
The example code for inertia-rust is for Axum, and uses node-server (instead of bun), but we/you should be able to be easily used in other frameworks like xitca-web
You need to learn basic SQL while working on a project
Project idea: SSR blogging website with database schema upgrades and production deployments
Twitter meta tags
For one codebase and cross-platform, you can go with Tauri or Avalonia
Tauri & React Template Avalonia: crossplatform .NET desktop programmingWhen you need to use some specific APIs per operating system, I would suggest using a webview that uses a bridge to the native technology
Don't use react-native. Use Kotlin Jetpack Compose for Android and SwiftUI for iOS
You will need Android Studio and if targeting iOS you will also need a Macbook to install XCode
Although no great tutorials exist that I know of, C & C++ is essential to this day