Skip to content

Instantly share code, notes, and snippets.

@gnsx
Last active August 18, 2023 12:19
Show Gist options
  • Save gnsx/50324c335325509428ab9a80cfc01954 to your computer and use it in GitHub Desktop.
Save gnsx/50324c335325509428ab9a80cfc01954 to your computer and use it in GitHub Desktop.
Understand What is Programming
https://www.futurelearn.com/courses/programming-101/0/steps/43783
Further Reading
Data Types: https://en.wikipedia.org/wiki/Data_type
Data Structures: https://www.geeksforgeeks.org/data-structures/
What are programming languages
https://www.geeksforgeeks.org/introduction-to-programming-languages/
Languages of 2020
https://hackr.io/blog/best-programming-languages-to-learn-2020-jobs-future
Pick a Language and Head to
https://www.tutorialspoint.com/
What is Version Control and How to Use it
https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
What is testing
https://www.geeksforgeeks.org/types-software-testing/
Now since you’re writing code to do basic input process and output and testing, when you have to save things you need to write it somewhere
https://yalantis.com/blog/how-to-choose-a-database/
Software Architecture Understand what types of architectures exist and how to implement a few
https://www.tutorialspoint.com/software_architecture_design/introduction.htm
WebServers vs Application Servers, in today’s world you’ll be mostly doing one of these or building an app
https://www.geeksforgeeks.org/difference-between-web-server-and-application-server/
Basics of Networking (because eventually you’ll be writing code that will need to talk to other code sitting on different systems)
https://www.geeksforgeeks.org/basics-computer-networking/
Different Types of Protocols how do you talk to other applications / nodes / units
https://www.w3schools.in/types-of-network-protocols-and-their-uses/
SSH and Telnet
https://www.geeksforgeeks.org/difference-ssh-telnet/
SSH (The widely used unix lock and key of connecting to remote systems)
https://www.geeksforgeeks.org/ssh-command-in-linux-with-examples/
Different types of file formats and what they are used for
https://www.online-convert.com/file-type
Important Linux Commands
https://www.howtogeek.com/412055/37-important-linux-commands-you-should-know/
Security (never forget this section)
https://www.geeksforgeeks.org/system-security/
https://www.geeksforgeeks.org/cryptography-and-its-types/
APIs vs WebServices (the languages of inter application communication)
https://blogs.mulesoft.com/dev/api-dev/apis-versus-web-services/
Simple Serverless AWS Based Architecture (AWS oriented)
https://d1.awsstatic.com/architecture-diagrams/ArchitectureDiagrams/aws-reference-architecture-time-series-processing.pdf
Simple Server Based Architecture (AWS oriented)
https://aws.amazon.com/getting-started/projects/build-wordpress-website/?c_4
When to use Nginx (reverse-proxy)
https://www.nginx.com/resources/wiki/community/why_use_it/
Automation (instead of doing things manually, let tools do the tasks for you)
https://www.redhat.com/en/topics/automation/whats-it-automation
https://opensource.com/resources/what-docker
https://www.redhat.com/en/topics/containers/what-is-kubernetes
General Good Practices
Write code as if you’re the reviewer reviewing someone else’s code. When you read it 1 year from now, you should be able to at least understand what you wrote. Leave comments wherever necessary especially in logical blocks.
Pay attention to variable naming, avoid i, something_one, hello2. If you’re using something for an index, name it index, if it needs to be a status code name it StatusCode (use whatever case is recommended for your language and stick to it, do not mix cases BetWeen LanguaGes).
Use an IDE with a linter and keep your code clean
Always use a logging plugin if you’re going to be working on something complex, for simple logging applications, ensure you keep every line tagged with a unique identifier so you can quickly reach that section of the code while debugging
Learn to setup and get used to using environments for your projects (development, staging, production)
Always have a readme for whatever small thing you do so you can refer to it at a later point in time
Write documentation in such a way that the person reading it does not come back to you with questions
Whenever you end up with an error, read the error and try to understand what the error is telling you before copying the error and pasting it in google & copying the 1st solution that comes up on stack-overflow
Similarly, when you’re writing code and returning an error, write the message in such a way that the user understands what the problem is and can do something about it. Eg: you have a variable a which is supposed to be an integer, however the user entered a string ABC, when you detect this error, tell the user that the input expected was an integer but it didn’t get an integer instead of returning ERROR cannot process this.
Use Version control wherever possible so you can go back and forth and revert to a previous snapshot if things break for the worse and follow correct git practices.
Do not forget to secure whatever you do; avoid simple passwords like 123, amin, default
Explore other contributors repos on github, code-project
Before building something, first check if someone has already implemented it; Best place to check is github / stack-overflow
Web Good Practice tips
Do not reinvent the wheel when it comes to passing data between services; Follow JSON, it’s widely used across almost all languages, it’s easy to understand and has a lot of parsing libraries
Anything that will be exchanged between the public network, try to use an Encrypted link
TLS 1.2+ sockets if you’re going to be using a socket based approach
HTTPS (PORT 443) if you're going to be making API Calls
Pay attention to CORS related issues, if you’re working on frontend, you’ll encounter this sooner
Avoid exchanging usernames and password via query or path parameters, always pass sensitive data over HTTPS inside headers or payloads
Try to keep the query parameter length as short as possible and check the maximum allowed length before integrating with destination APIs/proxies
Study, Understand and implement HTTP StatusCodes Correctly Ref:https://www.loggly.com/blog/http-status-code-diagram/ nobody has fun when your payload is invalid and you get StatusCode 200 with a blank response saying Failed.
Document your APIs using POSTMAN / Swagger so it’s easy for the next human/computer to integrate
These are the basic things I feel, every software developer should know irrespective of what platform you’re building for or what type of development you’re doing (frontend/backend/mobile apps). Once you get a taste for something, try to specialize and explore how similar applications work. Remember software development has been around since the 90’s and has seen a lot of changes, there is a 99% chance that what you’ve thought of, has already been done and is easily available, so try not to re-invent your dream if it’s already already available.
Recommended Tutorials for 2020
ComputerScience: https://www.tutorialspoint.com/computer_science_tutorials.htm
Python: https://www.tutorialspoint.com/python/index.htm
SQL: https://www.tutorialspoint.com/sql/index.htm
Go: https://www.tutorialspoint.com/go/index.htm
HTML: https://www.tutorialspoint.com/html/index.htm
Angular7: https://www.tutorialspoint.com/angular7/index.htm
MongoDB: https://www.tutorialspoint.com/mongodb/index.htm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment