Last active
August 18, 2023 12:19
-
-
Save gnsx/50324c335325509428ab9a80cfc01954 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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