learn to read code
- Be comfortable with reading others' code and understanding it
- Coding projects from scratch while learning a specific technology is a big waste of time
- just code the part you're interested in
- if you want to learn a specific technology and you're following along a course that teaches you that technology,
- stop trying to code the whole project from scratch, instead just download the source code and code only the part you want to learn not the whole project
A Programming Skill You Don’t Practice
learn OOP well
- polymorphism
- inheritance
- encapsulation
- data hiding
- overriding
- abstraction
learn data structures
- learn different types of data structures, and how to differentiate between them, and their use cases
learn algorithms
learn operating systems
learn networking
learn databases
- learn the fundamentals of databases and take a look at the file structure
be consistent
- being consistent with the way you write code, coding dialy, and being consistent in general is the only way to learn programming
engage with people, be part of a community and make connections
find a mentor
- mentor === growth
- a good mentor will have the greatest impact on your growth as a software engineer
have fun with coding
code every day
there is no such thing as best field
focus on basics
explaining is how to measure your understanding
break complex problems into small pieces
enjoy the journey
keep it simple
Write simple code
read the documentation of the things you use
be active on twitter
document it
Document your projects
focus on work-life balance
understand the business
build side projects
don't switch companies a lot
listen to understand no to argue
don't underestimate tasks
be a T-Shaped person
focus on what you can change
depth over breadth
- learn one programming language and learn it well
- aim for depth when you first start up
projects, projects, projects
- favor projects over learning other programming languages
don't memorize the rarely used things
version control every thing
- mastering git is not optional
- learn git and GitHub extremely well
learn the terminal (CLI)
- ditch that mouse!
- better for your posture
flow state and productivity
- learn about flow state and how it can effect developer productivity
- focus!
build a portfolio website
learn basic design
lesser pay and good job is better than higher pay but a worse job
have a defined style and system on how you code and support it with evidences
- think about what your style is and what your preferences are
- make art
- think about you system and develop it
learn from other programmers
- read other's code and try to understand it
- ask them for help, advice and tips
- seek information
my favourite
- when you solve a problem or build a project search for how other programmer has built the same thing and learn from them
learn debugging and using debuggers
Read line by line and try to identify what is happening in this line
- isolate the problem to the smallest area of code
- reduce the amount of possible things that could be impacting your program
- disable as many things as possible in the code so you can narrow down where exactly you're running into a specific issue.
- eliminate the things that are not possible to be the cause of the problem
- go through all the different things that could be causing the problem, check them off one by one, and isolate it to the smallest are, then go through the code line by line
- cross of as many areas as you can, isolate and get into the smallest part
- learn how to use a debugger
- use a rubber duck
the more the merrier
- coding is much more fun when you have company
- don't be afraid to be exposed and be known as the dumbest person on the planet
- seize every opportunity to learn and grow
- ditch that dreaded
imposter syndrome
be lazy
If something will happen more than once automate it
find unicorns
- great managers are like unicorns
- the will take your career to the moon and beyond
- if you got lucky enough to work with a great manager, stick with him as you have found a gem (son of a lucky)
learn deliberately, not habitually
- focus on growth and impact
- you don't need to constantly learn new languages and technology
- be great at what you know
- learn things on a need to basis
- invest on things that yields the biggest impacts
- focus on learning deliberately not habitually
collaborate
Helps you learn more
take breaks
- your health is just more important
master things that lasts
Instead of mastering a random library or framework, you should master the fundamentals and the that lasts and don't often change
impact
Understand what impact is and always aim to make exceptional impact
- identify areas for impact
- measure the impact you make
learn these skills
- cloud computing (AWS)
- git & githbub
- databases
- linux(file system, system processes)
- containers (docker)
- API
- pipelines (github action, circle ci)
software/solutions architecture
Infrastructure
- operating systems
- network
- system administration
- security
Web application servers
Browser behaviour
- cookies
- local storage
- session storage
- http
emerge yourself in the AI ecosystem
- build technology around AI
- dealing with LLMs
- deep learning
- use AI in all aspects of life
Specialize
Tips
- keep your resume updated
- prioritize programming basics (DSA)
- create a personal website
- create a LinkedIn account
- apply for internships as early as possible
- attend hackathons
- join a research lab
- learn from online courses
- join a computer science club
- focus on yourself
- separate the logic from the code => think twice, code once
- focus on the logic first
- focus on the code next
- code always don't watch only tutorial
- emerge in a community