Skip to content

Amarjit-ph/software-engineering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Software Engineering

This repository is my personal documentation of my journey of learning, best practices and conventions

Started from a small town called Imphal in the North-Eastern part of India, Where getting a public job is the only goal & safest way to live a life, Defying everything to pursue my passion and Choosing a Social Misfit career as a Computer Science Engineer To become a Software Engineer & A first-generation entrepreneur. I completed high school in my city and moved to Chandigarh to pursue my passion and degree As a computer science engineer.

Currently working as a software engineer in Banglore, India In a start-up that manages business Operations and Human resources globally.

β€œWhen you discover your mission, you will feel its demand. It will fill you with enthusiasm and a burning desire to get to work on it.” β€” W. Clement Stone

How I Navigate in this Journey ? πŸƒβ€β™€οΈ

Software Development lifecycle

This is my personal software development process that i followed in most of the project that i work with.

πŸ“ Naming Conventions

Style Use Case Example
PascalCase File Names UserProfile.js
camelCase Repository Names myProject
snake_case Variable Names user_input
dash-case Class Names header-container

Repositories ❀️

LEARN

πŸ› οΈ Essential VS Code Extensions

Aesthetic

  • 🎨 Tinacious Design Theme
  • 🎯 Bracket Pair Colorizer
  • πŸ’¬ Better Comments
  • 😊 Emoji
  • πŸ“ Material Icon Theme

Utility

  • πŸ“„ Psioniq File Header
  • βœ”οΈ Code Spell Checker
  • πŸ” Error Lens
  • πŸ“Š GitLens
  • 🎯 Jira And Bitbucket
  • πŸ“ Todo Tree
  • πŸ”„ Version Lens

πŸ“Ί Must-Follow Developer Channels

Developer Blogs

Software Development πŸ—οΈ

  • Agile Software Development - Agile is an iterative approach to project management and software development that helps teams deliver value to their customers faster and with fewer headaches. Instead of betting everything on a "big bang" launch, an agile team delivers work in small, but consumable, increments.

DOCUMENTATION

My Own curated way of Documenting a software product

  1. INFORMATION GATHERING
  2. REQUIREMENT ANALYSIS
  3. WORKFLOW
  4. LIFE CYCLE
  5. ARCHITECTURE
  6. DATA MODELS
  7. UI FLOW
  8. API
  9. STATES

Version Control πŸš€

  • Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows. - https://git-scm.com/
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

Once done, you can confirm that the information is set by running:
git config --list

Resources 🦜

GRADIENTS FINDER

ICONS

ILLUSTRATION

TEMPLATES

DESIGN RESOURCES

πŸ’‘ Frequently Asked Questions

1. What is an API (Application Programming Interface)?

An application programming interface is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification.

Key Points:

  • Acts as a bridge between different computer programs
  • Provides a structured way to share data and functionality
  • Comes with detailed specifications for implementation
2. What is an SDK (Software Development Kit)?

An SDK is just a pre-packaged set of code (for a specific language) that you don’t have to write yourself.Sometimes free and sometimes you have to, purchase them.There are all sorts of other SDKs out there including things like an SDK to simplify building a User Interface.

Key Points:

  • Pre-built code for specific programming languages
  • Can be free or paid
  • Potential downsides:
    • Large file sizes
    • May include unused functionality
    • Potential security risks

Best Practice:

πŸ’‘ Prefer open-source SDKs when possible for better security and transparency

3. What is a Framework?

A framework is a skeleton where the application defines the "meat" of the operation by filling out the skeleton. The skeleton still has code to link up the parts but the most important work is done by the application.

A framework inverts the control of the program. It tells the developer what they need.

Examples of frameworks: Web application system, Plug-in manager, GUI system. The framework defines the concept but the application defines the fundamental functionality that end-users care about.

Key Points:

  • Provides basic architecture
  • Controls program flow
  • Examples:
    • Web application systems
    • Plugin managers
    • GUI systems

Key Characteristic:

πŸ’‘ Frameworks follow the "inversion of control" principle - they call your code, rather than you calling them

4. What is a Library?

TL;DR: A collection of pre-written code for specific operations.

Common Examples:

  • Network protocols
  • Compression utilities
  • Image manipulation
  • String utilities
  • Math operations

Key Characteristic:

πŸ’‘ Libraries are called by your code, giving you more control over program flow

5. Relational vs Non-Relational Databases
  1. Relational Database : RDBMS stands for Relational Database Management Systems. It is most popular database. In it, data is store in the form of row that is in the form of tuple. It contain numbers of table and data can be easily accessed because data is store in the table. This Model was proposed by E.F. Codd.

  2. Non Relational (NoSQL) : NoSQL Database stands for a non-SQL database. NoSQL database doesn’t use table to store the data like relational database. It is used for storing and fetching the data in database and generally used to store the large amount of data. It supports query language and provides better performance.

Quick Comparison:

Feature Relational (SQL) Non-Relational (NoSQL)
Data Velocity Low High
Scalability Read-only Read & Write
Data Type Structured Any
Reliability Single point of failure No single point of failure
Deployment Vertical Horizontal

Extended Comparison:

Relational Database NoSQL
It is used to handle data coming in low velocity. It is used to handle data coming in high velocity.
It gives only read scalability. It gives both read and write scalability.
It manages structured data. It manages all type of data.
Data arrives from one or few locations. Data arrives from many locations.
It supports complex transactions. It supports simple transactions.
It has single point of failure. No single point of failure.
It handles data in less volume. It handles data in high volume.
Transactions written in one location. Transactions written in many locations.
Deployed in vertical fashion. Deployed in Horizontal fashion.
6. What are Microservices?

An architectural approach where applications are built as a collection of small, independent services.

Key Characteristics:

  • βœ… Highly maintainable and testable
  • πŸ”„ Loosely coupled
  • πŸš€ Independently deployable
  • πŸ’Ό Business-oriented
  • πŸ‘₯ Managed by small teams

Benefits:

πŸ’‘ Enables rapid delivery and easy technology stack evolution

7. What is the Entity-Attribute-Value (EAV) Model?

The Entity-Attribute-Value (EAV) model is a data modeling approach used to represent complex and dynamic data structures. In this model, data is organized into three components: entities, attributes, and values.

  • Entities: These are objects or concepts that are being described in the model. Examples of entities could be customers, products, orders, or any other object of interest.
  • Attributes: These are characteristics or properties of the entities being described. Examples of attributes for a customer entity could be name, address, or email address.
  • Values: These are the specific values associated with each attribute for each entity. For example, for the customer entity, the name attribute may have the value "John Smith," while the address attribute may have the value "123 Main Street." The EAV model is useful in situations where there is a need for flexibility in data modeling, such as when dealing with data that has many optional attributes, or when the attributes of an entity can change frequently. However, it can also lead to complex queries and difficulty in maintaining data integrity. Therefore, it should be used judiciously and with careful consideration of the trade-offs involved.

Here's an example of how an EAV model could be represented in a table format.

Let's say we have a simple online store that sells books, and we want to store information about each book in our database. In a traditional database design, we would create a table with columns for each attribute of the book, such as title, author, publisher, ISBN, etc. However, in an EAV model, we would create three tables: one for entities, one for attributes, and one for values.

Here are the tables we would create:

Entity Table:

entity_id entity_type
1 Book
2 Book

Attribute Table :

attribute_id attribute_name
1 Title
2 Author
3 Publisher
4 ISBN

Enitity Table:

entity_id attribute_id value
1 1 Harry Potter and the Philosopher's Stone
1 2 J.K. Rowling
1 3 Bloomsbury Publishing
1 4 0747532699
2 1 The Catcher in the Rye
2 2 J.D. Salinger
2 3 Little, Brown and Company
2 4 0316769487

In this example, the Entity Table contains two rows representing two different books, each with a unique entity_id. The Attribute Table lists the different attributes we want to store for each book, such as title, author, publisher, and ISBN, each with a unique attribute_id. The Value Table contains rows for each combination of entity_id and attribute_id, along with the value associated with that combination.

For instance, the first row in the Value Table tells us that for the book with entity_id 1, the title attribute has the value "Harry Potter and the Philosopher's Stone", the author attribute has the value "J.K. Rowling", the publisher attribute has the value "Bloomsbury Publishing", and the ISBN attribute has the value "0747532699". Similarly, the second row in the Value Table tells us that for the book with entity_id 2, the title attribute has the value "The Catcher in the Rye", the author attribute has the value "J.D. Salinger", the publisher attribute has the value "Little, Brown and Company", and the ISBN attribute has the value "0316769487".

COUNTER 2 NOV 3 NOV 4 NOV 5 NOV 8 NOV 10 NOV 11 NOV 12 NOV 13 NOV 14 NOV 15 NOV 16 NOV 17 NOV 18 NOV 19 NOV 20 NOV 21 NOV 22 NOV 23 NOV 24 NOV 25 NOV 26 NOV 27 NOV

About

Documentation of my software engineering journey

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published