In February, I decided to take a plunge in web development.
With very little technical knowledge, I started The Odin Project's Foundations course not knowing anything about HTML and CSS, nor the difference between the Web and the Internet.
Fast forward now, I've learned a little bit about computer basics. I also built my first recipe web pages and published them on GitHub just last week!
Here are the standout lessons I've learned throughout the past few months:
1. Get used to being a language learner (many times!)
Learning terminal commands, as well as basic HTML and CSS was like learning a new language.
You learn the names and functions of different elements.
You also learn the syntax of a "sentence" or "paragraph"— how these elements can be structured to form a coherent part, where each part has their unique meaning and purpose.
The fields of coding and linguistics also seem to describe and visualize relationships in similar ways. For example:
Using terms like "ancestor", "descendant", "parent", and "child" to describe relationships between elements
Organizing elements into nesting structures (e.g., subdirectories inside the root directory vs. noun and verb phrases in a sentence) , with each element having different dependencies and hierarchy levels
A command doesn't always require an option and an argument, just like how an intransitive verb doesn't need to take on an object argument
2. Understand your current location and directions
The concept first came up when I was learning Linux terminal commands.
Many times, I tried to jump to a directory located multiple paths away, or search for a specific file or directory, only for the terminal to return an error because I was located in the incorrect directory.
Then I realized this concept also applies to Git.
It's good practice to understand where your files are located and their current statuses, so you don't accidentally push your unfinished files to a remote repository.
Similarly, developers may need to know where they're located when writing and debugging code, so they can better keep track of their progress and issues that come up along the way.
No matter if you're working on a single line of code, jumping between directories or Git branches, I realized it's important to understand clearly where you are and where you're going at the current time.
3. Naming is important
Going hand-in-hand with the concept of understanding your current location, naming items correctly can save time and make locating files easier.
One way I learned this is by making sure the file extension name matches the type of data or information in the file.
Space and capitalization also matter.
For example, typing the Linux terminal commands ls -s
vs. ls -S
can yield different results.
When looking at the names of a programming language or a digital program, I think about where they came from, why were they named that way, and the impact they bring for the mass audience or a specific group of audience.
A word like "Windows" now carries very different meanings and interpretations compared to decades ago.
Side note: why are there so many food words used in technological terms, like "flavors of Ubuntu", "Raspberry Pi", "Linux kernel"?
4. One problem, many solutions
Oftentimes, there are many different ways to create something or to perform a specific action.
For example, in Linux commands, you can create a text file using a text editor, or by using the touch command.
Currently, I'm on the CSS Cascade module from The Odin Project. I learned that there are different ways to style a button element by increasing its higher specificity value.
So far, I enjoy that there is often no simple 1:1 solution to building something. There can be different solutions, and each person may write their solutions differently.
As I'm slowly adopting this mindset, I also find myself coming up with more questions whenever I'm working through practice exercises:
Why did this solution work or not work?
What other ways can you solve this specific problem?
How can you make your solution "better" or more efficient?
Looking back to these months of learning, a part of me feels silly to be starting from ground zero when the tech field is developing so rapidly everyday.
But learning each language's syntax, how elements interact with each other, and thinking of different ways to make something work (or manually troubleshooting why something doesn't work) is still 100% the fun, and a critical skill to have in the age of AI.
Top comments (0)