5 Signs of an Inexperienced Self-Taught Developer (and how to fix)

Travis Media Podcast
24 Jan 202408:40

Summary

TLDRThis video script addresses the challenges faced by self-taught developers in the tech industry, often perceived negatively by computer science graduates. The speaker outlines five signs of inexperience in non-traditional developers, such as focusing solely on making code work, making large changes to the codebase at once, constantly learning new languages without mastering concepts, working on too many tasks simultaneously, and avoiding code reviews. The script encourages embracing these criticisms as a learning opportunity to improve and grow in one's programming career.

Takeaways

  • πŸ˜€ Self-taught developers are sometimes looked down upon by computer science graduates, who believe they give software engineering a bad reputation.
  • πŸ” It's important for non-traditional developers to stand out by being good, reliable teammates and producing quality work.
  • πŸ“ Sign 1: Inexperienced developers focus solely on making their code work without considering maintainability, readability, or scalability.
  • πŸ“š Sign 2: They make large, sweeping changes to the codebase at once, leading to big pull requests that are hard to manage and review.
  • πŸ”„ Sign 3: New developers often jump from one programming language or framework to another without mastering the underlying concepts of programming.
  • πŸ”‘ Sign 4: Working on too many tasks at once can lead to a lack of focus and reduced quality of work; it's better to complete one task at a time.
  • 🚫 Sign 5: A reluctance to have others review and critique code can hinder growth and improvement as a developer.
  • πŸ“ˆ To improve, developers should plan their tasks, commit often with tested code, and break down large features into manageable parts.
  • 🌐 Learning programming concepts is more beneficial than learning multiple languages, as the core ideas can be applied across different syntaxes.
  • 🀝 Embrace code reviews and feedback as a way to learn and improve coding practices, rather than avoiding criticism.
  • πŸ’Ό Focus on delivering quality work and becoming a reliable developer rather than juggling multiple tasks and spreading oneself too thin.

Q & A

  • What is the main concern expressed by the speaker about computer science graduates towards self-taught developers?

    -The speaker suggests that computer science graduates may view self-taught developers as imposters who are giving software engineering a bad reputation, and they believe the industry should be regulated to ensure only qualified individuals are involved.

  • What are the five signs of an inexperienced, non-traditional developer according to the speaker?

    -The five signs are: 1) Thinking only in terms of making code work, 2) Making huge changes to the code base at once, 3) Constantly learning new programming languages or frameworks without mastering the underlying concepts, 4) Working on too many different things at once, and 5) Avoiding having others see or critique their code.

  • Why is it important for developers to move beyond just making their code work?

    -It's important because, over time, developers need to consider the readability, maintainability, and scalability of their code, as well as how it fits into the existing codebase, to ensure long-term success and collaboration in a team environment.

  • What is the recommended approach to handling a new task or feature in software development?

    -The recommended approach is to first make observations, gather information, and understand the requirements before writing any code. Then, plan the feature, commit often with each completed task, and test each commit. Finally, push the code and create a pull request for review once the feature is fully working and tested.

  • Why should developers avoid making huge changes to the code base at once?

    -Making huge changes at once can make it difficult to diagnose problems, as it's hard to pinpoint what exactly caused an issue. It's better to make smaller, more manageable changes that can be reviewed and tested more easily.

  • What is the speaker's advice on learning new programming languages or frameworks?

    -The speaker advises focusing on mastering the underlying concepts of programming rather than learning many different languages for their syntax. If learning a new language is necessary, it should be done with a focus on understanding the deeper concepts, such as by learning a lower-level language.

  • Why is it beneficial to focus on one task at a time as a new developer?

    -Focusing on one task at a time allows a new developer to fully understand the requirements and deliver high-quality work. It helps in building a reputation as a reliable team member who consistently meets deadlines and produces maintainable code.

  • What is the speaker's view on code reviews and their importance in a developer's growth?

    -The speaker views code reviews as a crucial part of a developer's growth, as they provide an opportunity to receive constructive criticism and learn from more experienced developers, ultimately leading to better coding practices.

  • How can a developer ensure that their code is maintainable and scalable?

    -A developer can ensure maintainability and scalability by considering the design and structure of their code from the beginning, using best practices, and regularly refactoring to improve code quality.

  • What is the speaker's suggestion for handling criticism of one's code?

    -The speaker suggests embracing criticism as a learning opportunity, using it to understand areas for improvement, and applying the feedback to enhance one's coding skills.

  • Why is it important for developers to commit often and create pull requests for review?

    -Committing often and creating pull requests allows for continuous integration and feedback from the team, which helps in identifying and resolving issues early in the development process, ensuring code quality and collaboration.

Outlines

00:00

πŸ’» The Struggles of Non-Traditional Developers

The speaker, a self-taught developer, addresses the prejudice they face from computer science graduates who believe that non-traditional developers are tarnishing the reputation of software engineering. They argue that the industry should focus on competence rather than formal education and propose five signs that may indicate inexperience or a non-traditional background in programming. These signs include a tendency to focus solely on getting code to work without considering broader implications, making large, sweeping changes to code bases, and a reluctance to have one's code reviewed or criticized.

05:02

πŸ“š Embracing Growth as a Non-Traditional Developer

Continuing the discussion, the speaker offers advice for non-traditional developers to overcome the challenges they face. They emphasize the importance of learning programming concepts deeply rather than superficially across multiple languages. The speaker also advises against spreading oneself too thin by working on too many projects simultaneously, suggesting that developers should focus on one task at a time to ensure quality and mastery. Additionally, they stress the value of code reviews and the willingness to accept and learn from criticism, as this is a crucial part of growth in the field of software development.

Mindmap

Keywords

πŸ’‘Self-taught developer

A self-taught developer is an individual who has acquired programming skills without formal education in computer science. This concept is central to the video's theme, as it addresses the challenges and stereotypes faced by such developers. The script mentions that computer science graduates may view self-taught developers with disdain, indicating a tension between traditional education and self-learning in the field of software development.

πŸ’‘Engineer

In the context of the video, 'engineer' refers to a professional who applies scientific principles to design, build, and maintain structures or systems. The script discusses the desire for proper regulation of the term 'engineer' in software development, drawing a parallel between traditional engineering disciplines and web development, suggesting that the latter should be recognized with the same level of professionalism.

πŸ’‘Imposters

The term 'imposters' in the script is used to describe individuals who are perceived to be undeserving of their roles in software engineering, often implying a lack of formal credentials or perceived competence. This concept ties into the broader narrative of the video, which is about overcoming the negative perceptions of non-traditional developers and establishing oneself in the industry.

πŸ’‘Inexperienced

Inexperienced refers to a lack of prior knowledge or skill in a particular area. The video identifies signs of inexperience in non-traditional developers, such as focusing solely on making code work without considering broader implications like maintainability and scalability. This keyword is integral to the video's message, which is about recognizing and overcoming these signs to grow professionally.

πŸ’‘Non-traditional developer

A non-traditional developer is someone who has entered the field of software development through a path that does not include a formal computer science education. The video script uses this term to describe the target audience and discusses the unique challenges they face, such as the need to prove their competence and navigate industry biases.

πŸ’‘Code readability

Code readability pertains to the ease with which a programmer can understand the code written by another. The video emphasizes the importance of writing readable code as a sign of a more experienced developer, suggesting that new developers should focus on making their code clear and understandable to others, which is a practice that contributes to better collaboration and maintainability.

πŸ’‘Pull requests

A pull request in software development is a proposal to merge changes from one branch to another, often used to incorporate new features or bug fixes. The script warns against making overly large or infrequent pull requests, advocating for smaller, more frequent commits that are easier to review and integrate, which is a practice that promotes better code management and collaboration.

πŸ’‘Programming languages

Programming languages are formal languages used to write programs that instruct computers to perform tasks. The video script advises against constantly learning new languages for the sake of novelty, instead recommending a focus on mastering fundamental programming concepts that are applicable across different languages. This advice is part of the broader message to prioritize depth of understanding over breadth of knowledge.

πŸ’‘Frameworks

A framework in software development is a collection of code that provides a structure to make the development of applications more efficient. The video script touches on the idea that new developers often chase the latest frameworks, but it suggests that a deeper understanding of programming principles is more valuable than familiarity with multiple frameworks.

πŸ’‘Code reviews

Code reviews are a process where other developers examine and provide feedback on code written by a colleague. The video script highlights the importance of code reviews as a learning opportunity for junior developers, emphasizing that constructive criticism can help improve coding skills and contribute to better software development practices.

πŸ’‘Critique

Critique in the context of the video refers to the evaluation and judgment of someone's work, specifically the code written by a developer. The script encourages new developers to embrace critique as a means of improvement, suggesting that feedback from more experienced developers is invaluable for personal and professional growth.

Highlights

Self-taught developers often face prejudice from computer science graduates.

The need for proper regulation of the term 'engineer' in software development to match traditional engineering disciplines.

Self-educated developers are perceived as giving software engineering a bad reputation, necessitating industry regulation.

Five signs of an inexperienced, non-traditional developer and how to overcome them.

The importance of planning before coding to ensure code readability, maintainability, and scalability.

Avoiding large, complex pull requests by committing often and testing each commit.

The strategy of committing after completing a unit of work and not pushing until the feature is fully complete.

Learning programming concepts is more beneficial than learning many different programming languages.

The recommendation to learn lower-level languages like C or Rust for a deeper understanding of programming concepts.

Focusing on one task at a time to ensure quality and completion rather than spreading attention too thin.

The importance of not being embarrassed to focus on one task and delivering it well.

The slower pace of software development when done correctly and the need for patience.

The reluctance of new developers to have their code critiqued and the importance of embracing feedback.

Accepting the role of a junior developer and using criticism to improve coding skills.

The value of code reviews and having senior developers approve or reject pull requests as a learning opportunity.

Encouraging viewers to share their thoughts in the comments to continue the discussion.

Invitation to subscribe to the channel for more content.

Transcripts

play00:00

[Music]

play00:13

so look I'm a self-taught developer I

play00:15

was in experienced at one time too it's

play00:18

okay but these computer science grads

play00:20

they really hate us just look at this

play00:22

comment Travis media I really hope that

play00:24

the use of the word engineer will get

play00:26

properly regulated like it is in many

play00:28

countries in relation to the traditional

play00:30

engineering because you know Building

play00:32

Bridges and skyscrapers web development

play00:33

it's all the same thing all those

play00:35

self-educated are giving software

play00:37

engineering a bad reputation and it's

play00:39

high time the industry is getting

play00:41

regulated and cleansed of the imposters

play00:45

you me cleansed of the imposters that's

play00:48

a big word so these computer science

play00:50

graduates they're really hating on us

play00:52

they hate us being in the industry for

play00:54

reasons I don't want to get into and we

play00:55

need to at least be sure that we're

play00:57

growing into the programming roles we

play01:00

aspire to being good reliable teammates

play01:02

and producing good work so I was

play01:04

thinking about this today about what

play01:06

makes us stand out as inexperienced or

play01:08

non-traditional maybe that's a better

play01:10

word non-traditional developers and I

play01:12

came up with five five things five signs

play01:15

of an inexperienced non-traditional

play01:18

developer and how you can stop

play01:20

exhibiting these yourself let's get

play01:22

started number one is your thinking only

play01:25

in terms of making it work it's only

play01:28

about making what you're coding work get

play01:30

it working and move on and that's

play01:33

actually okay at first obviously if you

play01:35

can't get your code to work then you

play01:37

really haven't made any progress with

play01:38

your task but over time you have to

play01:40

learn to move past that and in actuality

play01:44

it all starts before you even write code

play01:46

when you're assigned a task instead of

play01:48

just firing up your text editor and

play01:50

coding and making it happen you need to

play01:52

make a number of observations first get

play01:54

a notebook lay out what you're building

play01:57

what it is you're building what your

play01:58

requirements are which often leads you

play02:00

to Gathering more information that you

play02:02

didn't know that's important and

play02:04

ultimately having a clear understanding

play02:06

of what it is exactly you're doing and

play02:08

once you have this mental process of

play02:10

what you're doing think about how it

play02:12

fits in the current code base like what

play02:14

constants or existing code you can tie

play02:17

your code into to keep from Reinventing

play02:19

things and then consider the readability

play02:22

of your code the maintainability of your

play02:24

code and the scalability of your code

play02:27

it's more than just making it work the

play02:29

second sign of an inexperienced

play02:31

non-traditional Dev is that they make

play02:33

huge changes to the code base at once

play02:35

meaning your pull requests are too big

play02:38

to make sense of they're too big for any

play02:40

meaningful comments or Remediation in

play02:42

not checking your code in often you can

play02:44

introduce problems that are harder to

play02:46

diagnose because of all the changes to

play02:48

the code base that you've introduced a

play02:49

pull request should really just have one

play02:52

cohesive feature that you're working on

play02:54

not multiple and if that feature is Big

play02:57

then perhaps it should be broken up into

play02:59

multiple logical parts so commit often

play03:02

and make sure to test each commit if

play03:04

you've sketched or planned out your

play03:06

feature first like I just mentioned you

play03:08

probably have ended up with a checklist

play03:10

of steps to get your feature working and

play03:12

every time you check off a step or a

play03:14

task test it and commit it and once the

play03:17

feature as a whole is fully working and

play03:19

tested then push your code up and create

play03:21

the pr here's a good example that I came

play03:23

across I commit every time I finish a

play03:26

unit of work but don't push my code to

play03:28

the server until the feature is fully

play03:29

complete I'll try to elaborate with an

play03:31

example say my job is to develop a login

play03:34

system for some website I would write my

play03:36

class for a user then commit then I'd

play03:39

create the HTML form to accept the

play03:41

username and password and then commit

play03:43

then I would add the appropriate

play03:45

validation making sure the password's

play03:46

long enough making sure the email is

play03:48

valid things like that and then commit

play03:50

there three commits this could be three

play03:51

commits in one day or spread over

play03:53

multiple days it depends on how long

play03:55

each unit of work takes once everything

play03:57

is done I would then merge my

play03:59

development branches into master and

play04:01

push to origin you actually don't want

play04:03

to do that you want to push up your

play04:04

branch and create a pool request to be

play04:06

reviewed and then merged into Master by

play04:08

somebody who approves that I would never

play04:10

ever ever push code that would cause a

play04:12

crash or break the build for a project

play04:15

obviously especially if you're

play04:16

collaborating with others so if you're

play04:18

in the middle of writing a class but

play04:19

haven't finished typing out a function

play04:21

don't commit until everything is done

play04:23

and you can successfully build so if you

play04:25

planned out your work and have some sort

play04:27

of checklist you would commit at each

play04:29

check mark the main thing here is don't

play04:31

write a bunch of code and then push it

play04:33

all up at one time that's a no no number

play04:35

three is that you're always learning new

play04:38

programming languages or Frameworks I

play04:40

think all of us have fallen victim to

play04:42

this whether it's the hype of a certain

play04:44

technology or you just decide one day

play04:46

that you want to master something

play04:47

completely new just for the challenge of

play04:49

it it's really a vain Pursuit why well

play04:53

I'm all for you being a constant learner

play04:55

that's a good thing you H actually have

play04:57

to do that in this industry you have to

play04:59

always be learning but the question is

play05:01

what are you learning it's much more

play05:03

beneficial to be learning and mastering

play05:05

the concepts of programming and how

play05:08

things are really working than learning

play05:10

many different languages which to be

play05:12

honest each one's just a new syntax it's

play05:15

just a new language why do that if you

play05:17

really understand the concepts that

play05:19

underly programming a loop can be looked

play05:21

up in any language a switch statement

play05:23

can be looked up in any language it's

play05:25

all just syntax so if you're asked to

play05:27

build a feature in a new language or

play05:29

framework something that you haven't

play05:31

used before you should be able to one

play05:34

read a quick overview of that technology

play05:36

and how it works and two be able to

play05:38

build that feature based on programming

play05:41

Concepts or pseudo code even and then

play05:43

transforming it into whatever centx that

play05:46

language speaks also and I did a video

play05:48

on this recently I'll put a link above

play05:50

but if you're going to learn a new

play05:51

language for the sake of doing so pick a

play05:53

lower level language like C or rust or

play05:57

even go or C if you're coming from

play05:59

python or something high level like that

play06:01

and once you put in the work of learning

play06:03

the deeper Concepts that those languages

play06:05

force you to understand you can really

play06:07

jump in anywhere number four you're

play06:10

working on too many different things at

play06:12

once as a new developer you want to look

play06:14

competent and you want people to think

play06:16

you're very efficient that you just

play06:17

happen to be this coding Prodigy that

play06:19

came out of nowhere but take a look at

play06:21

senior to mid-level devs they reject the

play06:23

extraor because they're in the middle of

play06:24

something they're in the middle of one

play06:26

thing they have a really good grasp on

play06:28

that one thing and the requirements for

play06:30

that one thing and they get it done well

play06:32

you on the other hand have three things

play06:34

going on of which you still don't fully

play06:37

understand and your brain is having to

play06:39

jump back and forth between them as a

play06:40

new Dev don't be embarrassed to say I'm

play06:43

currently in the middle of something let

play06:44

me get this done first and then I'll

play06:45

jump on that stop volunteering for

play06:48

everything get your one assignment

play06:50

understand the requirements well and

play06:51

then knock it out the park be a Dev that

play06:54

always delivers over one who is always

play06:56

in the middle of 10 different things and

play06:58

always has to give updates and excuses

play07:00

for all the things you're doing take one

play07:02

task assignment at a time and complete

play07:04

it and commit to a new task only when

play07:06

the previous task is delivered as

play07:09

requested in fact building software is a

play07:12

slower process than you think especially

play07:14

if you want to do it right and then

play07:15

number five is you don't really want

play07:17

others seeing or critiquing your code if

play07:20

you did they'd probably be suggesting

play07:21

that you do things differently or speak

play07:23

on how inefficient or unreadable it is

play07:26

and you don't want to touch it again

play07:27

because you got it working and you

play07:29

wrestle with it so long you're sick of

play07:30

it and we just don't like the criticism

play07:32

as new developers strangely we want them

play07:35

to praise our super complex and

play07:37

unmaintainable code but thankfully there

play07:39

are code reviews and there's Gates set

play07:41

up so that senior devs will have to

play07:43

approve or reject your pool requests

play07:45

this is a learning process the point

play07:47

here is to accept that you're a junior

play07:49

Dev and write junior level code and the

play07:52

only way to really get better at it is

play07:54

to have people critique your code in

play07:56

learning what's wrong with it in making

play07:57

adjustments in how you code along the

play07:59

way so write your code take the

play08:01

criticism and advice of others and let

play08:04

it fuel you into becoming a better

play08:06

programmer so these are five signs of an

play08:08

inexperienced non-traditional developer

play08:11

now you know make the adjustments and

play08:13

you'll see growth in your career what do

play08:14

you think leave me a comment below let's

play08:16

get the discussion going if you found

play08:18

this video helpful give it a thumbs up

play08:20

if you haven't subscribed to the channel

play08:21

consider doing so and I'll see you in

play08:23

the next

play08:28

video

Rate This
β˜…
β˜…
β˜…
β˜…
β˜…

5.0 / 5 (0 votes)

Related Tags
Self-TaughtDeveloperGrowthIndustryCode QualityLearningProgrammingCode ReviewTech ChallengesCareer Advice