10 regrets of experienced programmers

Fireship
6 May 202408:16

Summary

TLDRThe video script discusses the universal regrets developers have in their programming careers, offering insights and advice for aspiring programmers. The speaker humorously reflects on their experiences, emphasizing the importance of writing less code, learning to code early, completing projects, obtaining a computer science degree, investing in Bitcoin, understanding lower-level languages, embracing JavaScript on the server, practicing algorithms, prioritizing health, and questioning the impact of programming work. The speaker also highlights the benefits of using a Chrome plugin for staying updated with developer news and networking with other developers.

Takeaways

  • 📝 Writing less code is more: Code is a liability, not an asset. Strive for simplicity to reduce maintenance and increase productivity.
  • 🧠 Learn to code early: The brain is most adaptable in youth, and starting early can lead to greater success in the tech industry.
  • 🚀 Finish what you start: Completing projects is more valuable than starting many and finishing none, despite the common tendency to abandon them.
  • 🎓 Pursue a computer science degree: While not strictly necessary, a degree can provide a solid foundation and networking opportunities for a tech career.
  • 💰 Invest wisely: Missed opportunities like not investing in Bitcoin early can be a regret, but learning from such regrets can be valuable.
  • 🤖 Learn lower-level languages: Understanding lower-level languages like C provides a strong foundation and makes you a more versatile programmer.
  • 🌐 Embrace JavaScript on the server: Using JavaScript across the full tech stack can lead to faster development and iteration, despite its drawbacks.
  • 📚 Practice coding problems: While it may seem tedious, practicing algorithms and coding problems is crucial for technical interviews and improving as a developer.
  • 🏋️‍♂️ Prioritize health: Sitting for long periods and high stress can be detrimental to health; taking care of physical and mental well-being is essential for a long career.
  • 🌟 Real-world impact: While coding can be fulfilling, it's important to recognize the value and impact of other professions that may seem more directly beneficial to society.
  • 👴 Legacy in code: Reflecting on one's career in tech, it's common to question the significance of the work done, especially when compared to more tangible professions.

Q & A

  • What does the speaker consider the most regrettable aspect of programming?

    -The speaker regrets writing too much code, emphasizing that code is a liability rather than an asset, and that less code often leads to better maintainability and productivity.

  • Why does the speaker believe that simplicity is a virtue in programming?

    -Simplicity is valued because it minimizes the time anyone has to spend dealing with the code. It is associated with brevity, readability, and maintainability, which are all important for efficient and effective programming.

  • At what age does the speaker suggest is the best time to start learning to code?

    -The speaker humorously suggests that the best time to start learning to code is in the womb, but in reality, the second best time is as soon as possible, emphasizing that age is not a barrier to learning.

  • What is the '9090 rule' mentioned by the speaker?

    -The '9090 rule' is a humorous way to describe the phenomenon where a software project seems 90% complete, but actually has 90% of the work still to be done, highlighting the difficulty in estimating software development time.

  • Why does the speaker express regret about not finishing more projects?

    -The speaker regrets not finishing projects because it feels like time and effort were wasted without any completed work to show for it. However, they also acknowledge that recognizing when a project is not worth finishing is important.

  • What is the speaker's opinion on the necessity of having a computer science degree to be successful in programming?

    -The speaker believes that while a computer science degree is not strictly necessary to learn how to code or even to get a job in tech, it can provide a solid foundation and networking opportunities that can lead to high-paying jobs at a young age.

  • Why does the speaker regret not having learned lower-level languages like C?

    -The speaker feels that learning lower-level languages like C provides a strong foundation for understanding how programming works at a more fundamental level, which can make one a better programmer overall.

  • What is the speaker's stance on using JavaScript on the server?

    -The speaker has no regrets about using JavaScript on the server. They appreciate the efficiency and speed of development that comes from using a single language across the entire tech stack.

  • Why does the speaker regret spending so much time practicing on LeetCode?

    -The speaker regrets this because they feel that the time spent practicing algorithms could have been better used elsewhere, given that their career pinnacle involved teaching basic web development skills.

  • What health-related advice does the speaker give to programmers?

    -The speaker advises programmers to prioritize their health by taking regular breaks, using a standing desk, and maintaining a good diet to reduce the risks associated with a sedentary lifestyle.

  • What is the speaker's final regret regarding their programming career?

    -The speaker's final regret is the feeling that programming does not contribute to anything real or tangible, and they express a sense of envy towards professions that have a more direct and visible impact on the world.

Outlines

00:00

📝 Reflections on Programming: Regrets and Advice

The speaker begins by sharing their experience volunteering at a hospice center for programmers, pondering what advice they would give to a young learner. They emphasize that while programming offers countless paths, there are common pitfalls that many developers regret. The video aims to discuss ten such regrets, starting with the importance of writing less code and valuing simplicity over complexity. The speaker humorously recounts their past pride in complex code, only to later realize that simplicity is key. They also touch upon the trade-offs between brevity, readability, performance, and other factors in coding. The first regret is not writing less code, which is seen as a liability rather than an asset, and the importance of productivity over code quantity is highlighted.

05:00

👶 Starting Young and the Value of a CS Degree

The second paragraph focuses on the benefits of starting to learn programming at a young age, when the brain is most adaptable. The speaker playfully suggests that one should start learning in the womb, but emphasizes that the next best time is immediately. They also discuss the advantages of obtaining a computer science degree, particularly for networking and securing high-paying tech jobs, despite the fact that it's not always necessary for employment. The speaker warns against the potential for ageism in tech and the preference for younger programmers, advising that starting early can be a significant advantage.

🚧 Finishing Projects and the Importance of Persistence

Regret number three is not finishing more projects, with the speaker lamenting the many side projects that were never completed. They describe the common phenomenon where a project seems 90% done but still requires a substantial amount of work. The importance of seeing projects through to completion is stressed, even though it's acknowledged that sometimes it's necessary to abandon a project that isn't working out. The value of recognizing when to stop and cut losses is highlighted as a critical skill.

🎓 Education, Investments, and the Power of JavaScript

The fourth regret is not obtaining a computer science degree, which the speaker views as a missed opportunity for early career advancement and networking. The paragraph also touches on the regret of missing investment opportunities, such as buying Bitcoin in its early stages. The speaker humorously reflects on the missed chance to become wealthy from such investments. They then discuss the versatility of JavaScript, expressing no regrets about using it across different platforms and for various applications. Despite its drawbacks, the speaker finds that the benefits of using a single language throughout the tech stack outweigh the negatives.

🤓 Learning Low-Level Languages and the Myth of 'Real Programmers'

The sixth regret is not learning lower-level languages like C, which the speaker believes is essential to becoming a 'real programmer.' They argue that understanding the basics of C can provide a strong foundation for other languages and improve one's programming skills. The speaker reflects on their own journey starting with high-level languages and expresses a wish to have learned C first.

💻 JavaScript on the Server and the Realities of Tech Jobs

The speaker shares their positive experience using JavaScript on the server side, despite its potential inefficiencies and lack of true type safety. They appreciate the development speed and iteration benefits it offers. The seventh regret is not learning low-level languages earlier in their career. The eighth regret is the time spent practicing algorithms for technical interviews, which the speaker feels was not as rewarding as they had hoped. The focus then shifts to the importance of health, with the ninth regret being not prioritizing it sooner. The sedentary nature of programming is compared to other unhealthy habits, and the speaker advises on how to mitigate these risks. The final regret, number ten, is the existential concern about the impact and reality of a programming career, with a wistful comparison to more seemingly 'real' professions.

Mindmap

Keywords

💡Code Liability

Code liability refers to the ongoing responsibility and potential issues associated with the code one writes. In the context of the video, the speaker emphasizes that every line of code written is a future maintenance task and a potential source of bugs. This concept is central to the theme of the video, which is about the regrets developers have in their programming careers, and the importance of writing less but more efficient code.

💡Abstraction

Abstraction in programming is a technique for reducing complexity by hiding the inner workings of functions or systems, exposing only the necessary parts. The video mentions a regret about overusing complex abstractions like Factories, Singletons, Proxies, and Decorators in JavaScript, which the speaker later realized could have been simplified to regular functions. This illustrates a common regret among developers of valuing unnecessary complexity over simplicity.

💡Simplicity

Simplicity in programming is the principle of making code as straightforward and easy to understand as possible. The video discusses the speaker's realization that simplicity is preferable to complexity. It is related to the video's theme as it reflects a common regret of developers for not striving for simpler solutions, which can lead to more maintainable and understandable code.

💡Regret

Regret, in the context of this video, is a reflection on past actions or decisions that the speaker wishes they had done differently. The entire video is structured around ten regrets the speaker has about their programming career, which provides a narrative for discussing common mistakes and lessons learned in the field of software development.

💡Learning to Code

Learning to code is the process of acquiring the skills and knowledge necessary to write computer programs. The video touches on the idea that starting to learn how to code at a young age can be advantageous, as the brain is more adaptable. It also humorously suggests that the best time to start is 'in the womb,' emphasizing the importance of early learning in programming.

💡Side Projects

Side projects refer to software development endeavors that are not part of one's primary job but are pursued in personal time. The speaker expresses regret over not finishing more of their side projects, which is a common regret among developers as it often leads to wasted time and effort without a completed product to show for it.

💡Computer Science Degree

A computer science degree is an academic qualification that provides a formal education in the principles of computing and programming. The video discusses the regret of not obtaining such a degree, which can be advantageous for networking and securing high-paying tech jobs, despite the fact that it is not strictly necessary to learn how to code.

💡Investment

In the context of the video, investment refers to the act of putting money into financial assets with the expectation of generating a profit. The speaker mentions the regret of not investing in Bitcoin when it was cheap, which is an example of a missed opportunity for significant financial gain and is used to illustrate the broader concept of regret in decision-making.

💡Low-Level Languages

Low-level languages, such as C, are programming languages that provide little abstraction from a computer's hardware details. The video suggests that learning a low-level language like C can provide a strong foundation for understanding how computers work, which can make one a better programmer, even if they primarily use high-level languages in their work.

💡JavaScript on the Server

JavaScript on the server refers to the use of JavaScript, traditionally a client-side language, for server-side programming, enabled by environments like Node.js. The speaker expresses no regret over using JavaScript on the server, despite acknowledging its potential drawbacks, because it allows for faster development with a single language across the entire tech stack.

💡Technical Interviews

Technical interviews are a part of the hiring process for tech companies where candidates are tested on their problem-solving skills and understanding of algorithms and data structures. The video discusses the regret of spending too much time practicing for such interviews, which may not have been as beneficial as initially thought, given the speaker's career path.

💡Health

Health, in the context of the video, refers to the physical and mental well-being of programmers, which can be negatively impacted by long hours of sitting and high-stress work. The speaker expresses regret for not prioritizing health earlier in their career, highlighting the importance of taking care of one's body and mind to maintain productivity and quality of life.

💡Real Work

Real work, as mentioned in the video, refers to jobs or careers that have a tangible, observable impact on the world, such as scuba instruction or paramedic work. The speaker contrasts these with programming, which can sometimes feel abstract or less meaningful. This reflects a deeper regret about the perceived lack of substance in some programming work.

Highlights

The importance of writing less code and understanding it as a liability rather than an asset.

As developers gain experience, they tend to write less code but increase productivity.

The realization that simplicity in code is often more valuable than complexity.

The trade-offs between code simplicity and other factors like readability, performance, maintainability, testability, and reusability.

The notion that the best time to start learning to code is as early as possible, ideally from a young age.

The potential ageism in the tech industry and the preference for younger programmers.

The benefits of using a tool like daily dodev for staying updated with developer news and networking.

The regret of not finishing more software projects and the importance of seeing them through to completion.

The value of obtaining a computer science degree for networking and securing high-paying tech jobs.

The missed opportunity of investing in Bitcoin in its early stages.

The significance of learning lower-level languages like C for a strong foundation in programming.

The versatility of JavaScript across different platforms and its impact on development speed.

The practice of grinding through coding challenges on platforms like LeetCode for technical interview preparation.

The importance of prioritizing health while working in a career that involves long hours in front of a computer.

The existential question of the impact and reality of a career in programming compared to other more tangible professions.

The speaker's personal regret about entering the field of programming due to its perceived lack of real-world impact.

Transcripts

00:00

recently I volunteered my time at a

00:02

hospice center for dying programmers

00:04

also known as X and I asked the question

00:06

you're on your deathbed a kid comes to

00:08

your side and says grandpa I want to

00:10

learn how to code what do you regret

00:12

most about programming my immediate

00:14

answer would be something like leave me

00:15

alone kid and let me die in peace but

00:17

it's actually an interesting question

00:19

because programming is not like most

00:21

careers it has billions of possible

00:23

paths with many conflicting opinions and

00:25

no single right way to do things despite

00:27

its unpredictable nature I found that

00:29

there are some Universal traps that

00:31

nearly every developer regrets falling

00:32

into and in today's video we're going to

00:34

look at 10 of them regret number one I

00:36

wish I would have written less code it's

00:38

extremely important to understand that

00:40

code is not an asset it's a liability

00:42

every block of code is something that

00:43

you'll have to maintain in the future

00:45

and something that could break your

00:46

application entirely beginners don't

00:48

write a lot of code because they don't

00:49

know how but as they gain more

00:51

experience they start writing more code

00:52

eventually everybody realizes that less

00:54

is more and the total lines of code

00:56

decrease while productivity increases

00:58

however someday you may trans send to

01:00

the genius level 10x engineer at which

01:02

point the lines of code you produce will

01:04

go negative I for one am not afraid to

01:06

admit that I regret 99% of the code I've

01:08

written I distinctly remember feeling

01:09

like a genius when I implemented my

01:11

first abstraction Factory Singleton

01:13

proxy decorator in JavaScript however a

01:15

few years later an angel came to me in a

01:17

dream and said bro you could have just

01:19

made that a regular function an idiot

01:21

admires complexity a genius admires

01:23

Simplicity and at that point I realized

01:25

my entire life was a lie Simplicity is

01:27

always a good thing to strive for but

01:29

there's a lot of other trade-offs to

01:30

consider like readability performance

01:32

maintainability testability reusability

01:35

and so on in addition what's the

01:37

definition of Simplicity is it about

01:39

brevity or readability or something else

01:41

entirely in my opinion it all comes down

01:43

to time the goal is to minimize the

01:44

amount of time anyone has to spend

01:46

messing around with your garbage code

01:48

regret number two I wish I would have

01:49

learned to code earlier when you're

01:51

young your brain is highly optimized for

01:53

learning but as you get old and crusty

01:55

and your pineal gland is calcified by

01:56

the fluoride in the water your ability

01:58

to learn becomes diminished that's why

02:00

most worldclass musicians start at a

02:02

very young age now you can learn to play

02:03

the piano or learn to code at any age

02:05

hell I learned how to play the Triangle

02:07

Well into my 30s but if you start

02:08

learning how to code when you're 2 or 3

02:10

years old you should easily be able to

02:12

land a six-figure job by the time you're

02:14

13 now most people won't admit it but

02:16

there's definitely agism in Tech

02:17

employers will often prefer a younger

02:19

programmer with a more malleable brain

02:21

and that's why the median age of

02:23

programmers around the world is around

02:24

30 obviously starting young is great for

02:26

a lot of things I wish I would have

02:28

bought Microsoft stock back in the'80s

02:29

the only problem is that I wasn't born

02:31

yet so if you want to learn how to code

02:33

the best time to start is in the womb

02:34

but the second best time is right now

02:36

because we're not getting any younger

02:38

before we move on to the next one one

02:39

thing I don't regret is installing the

02:41

Chrome plugin for daily dodev the

02:43

sponsor of today's video it's a

02:45

completely free tool that keeps you up

02:47

to speed on developer news so you never

02:49

miss out on the latest new gamechanging

02:50

JavaScript framework it's a tool built

02:52

by Developers for developers to curate

02:55

all the information you need in the

02:56

programming space but most importantly

02:58

it's a great place to network with other

03:00

like-minded developers not only will you

03:02

find discussions throughout the site but

03:04

you can also join squads to network with

03:06

other professionals using the same text

03:08

stack as you it's truly an amazing

03:09

resource and at the low low price of

03:11

free really every developer should be

03:13

part of the daily dodev community and

03:15

that brings us to regret number three I

03:16

wish I would have finished more projects

03:18

this is what my side projects directory

03:20

looks like and of all these projects I

03:22

finished maybe two or three of them

03:23

finishing a software project almost

03:25

always takes way longer than you'll

03:26

estimate there's something called the

03:28

9090 rule where when you feel like

03:30

you're 90% done with a project you still

03:32

have 90% to go it's not like building a

03:34

bridge where everything is laid out in a

03:35

blueprint with software you'll almost

03:37

always have all kinds of unexpected

03:39

things come up and if you're a solo

03:41

developer you might get distracted and

03:43

just quit the project and start

03:44

something entirely new from scratch I've

03:46

done that more times than I can count in

03:48

fact I'm even considering not finishing

03:49

this video in retrospect though I really

03:51

regret not finishing those projects I

03:53

don't even want to think about all the

03:54

hours flushed down the toilet with

03:56

nothing to show for it however it's also

03:58

important to be honest with yourself and

04:00

recognize when your app sucks that some

04:02

projects just aren't worth finishing and

04:04

sometimes knowing when to cut your

04:05

losses is even more important than

04:06

finishing a project regret number four I

04:09

wish I would have gotten a computer

04:10

science degree going to college is not

04:12

the most efficient way to learn how to

04:13

code you learn far more in a real world

04:15

job or by building things on your own

04:17

and you don't need a degree to get a job

04:19

even at Big tech companies but going to

04:21

college and networking and doing

04:22

internships is the most Surefire way to

04:24

get a high-paying job in Tech at a young

04:26

age and there are many jobs out there

04:28

that do require a degree even even

04:29

though it's arguably pointless what you

04:31

don't want to do is get scammed like all

04:33

these Millennials who went to college

04:34

for a useless degree like Egyptian

04:36

studies only to find out that there's no

04:38

jobs in that field so they go back to

04:39

school to get a PhD in Egyptian studies

04:42

to teach other kids Egyptian studies

04:44

creating a literal pyramid scheme

04:45

speaking of pyramid schemes regret

04:47

number five I wish I would have bought

04:49

Bitcoin in 2010 had you invested $100 in

04:51

Bitcoin when it was at 25 you'd be worth

04:54

about 25 million today that makes me sad

04:56

but it does bring me some joy to realize

04:58

that there are people out there that

05:00

bought Bitcoin at that price point only

05:01

to throw away their hard drive and are

05:03

now out there searching through

05:04

landfills to try to find them but

05:05

watching their suffering makes me feel a

05:07

little bit better about myself regret

05:09

number six I wish I would have learned

05:10

lower level languages like C most

05:12

programmers today start by learning

05:14

highlevel languages like Python and

05:16

JavaScript and you can build an entire

05:18

career without ever learning anything

05:19

lower than that but that begs the

05:21

question are you a real programmer and

05:23

the answer is no no you are not luckily

05:26

though all you have to do is learn the

05:27

basics of C which is a lot easier than

05:29

you I think you can learn it in 100

05:31

seconds or watch Channels like low-level

05:33

learning either way once you write your

05:34

first Segal you officially become a real

05:36

programmer but seriously even if you

05:38

don't need a low-level language learning

05:40

the basics of C will just make you a

05:42

better programmer I started with highle

05:43

languages like Java and PHP however if I

05:46

could go back I would have learned C

05:48

first because it gives you such a great

05:49

foundation for everything else regret

05:51

number seven JavaScript on the server

05:53

personally I don't regret JavaScript on

05:55

the server at all I use the JavaScript

05:57

in the browser I use it to build mobile

05:58

apps desktop top apps it's smart fridge

06:01

apps I use it for machine learning and

06:02

for VR and everything in between

06:04

including on the server and I have no

06:06

regrets JavaScript may not be the most

06:08

CPU and memory efficient language on the

06:10

server it may not have true type safety

06:12

and some of its npm packages may try to

06:14

mine crypto on your server but for me

06:15

being able to write JavaScript on the

06:17

server results in much faster

06:18

development and iteration because you've

06:20

got a single language across the entire

06:22

text stack regret number eight grinding

06:24

leak code many developers dream of

06:26

getting into a big Tech corporation like

06:28

Google Microsoft or Pi Piper but to do

06:30

that you'll need to get past a technical

06:32

interview or multiple technical

06:33

interviews but the only way to get good

06:35

at algorithms is to practice like many

06:37

programmers I've spent countless hours

06:39

practicing on Le code but every single

06:41

time my solution is to brute force it

06:43

with a hash table in retrospect though I

06:45

regret wasting all this time here

06:46

because the Pinnacle of my career has

06:48

been teaching people how to center divs

06:49

on YouTube regret number nine I wish I

06:51

would have prioritized my health earlier

06:53

sitting on your ass in front of a

06:54

computer all day is one of the least

06:56

healthy activities you can do according

06:58

to science it's right up there with

06:59

obesity and smoking if you combine this

07:01

activity with high amounts of stress and

07:03

a bad diet chances are your heart's

07:05

going to explode by the time you're 30 I

07:06

think a lot of people underestimate the

07:08

dangers of this career there's no way to

07:10

avoid being in front of a computer but

07:12

there's a lot of things you can do to

07:13

reduce the risk like get a standing desk

07:15

take regular breaks and don't consume

07:17

products like Prime which is currently

07:19

being sued for having a massive amount

07:20

of cancer-causing pfas inside every

07:22

bottle in addition when you take care of

07:24

your physical health your mental health

07:26

and sharpness will also improve as a

07:28

result thus making you a a better

07:29

programmer and finally that brings us to

07:31

regret number 10 I wish I never would

07:33

have learned a code in the first place

07:34

I've always found writing code very

07:36

satisfying but sometimes it feels like

07:38

we're not doing anything real like we're

07:39

just creating fake vaporware for a boss

07:42

with a fake job title who needs to hit

07:43

kpis for some fake performance metrics

07:46

to make some fake money for investors I

07:48

envy the scuba instructor who gets to

07:49

swim with turtles all day or the

07:51

paramedic who saves lives every day

07:53

these jobs might not pay as well but at

07:54

least they feel real I fear in my final

07:56

moments my grandchild will inquire about

07:58

my life's eon lishments and the most

08:00

impressive feed I can muster is

08:02

something

08:05

like the Wilson back in 24 I once

08:08

managed to fix a production bug while

08:10

only creating three more bugs in the

08:12

process thanks for watching and I will

08:14

see you in the next one

Rate This

5.0 / 5 (0 votes)

Related Tags
Programming RegretsCode LiabilitySimplicity in CodingEarly LearningAgeism in TechProject CompletionComputer Science DegreeBitcoin InvestmentLow-Level LanguagesJavaScriptHealth in TechCareer Reflections