00:00 hey it's Jamie from Jamie edwards.com
00:01 again and today I want to ask you a
00:04 question why are you making programming
00:07 harder why am I making programming
00:09 harder why are we as software developers
00:12 in the whole industry making programming
00:15 harder maybe than it needs to be
00:18 I want you imagine for a moment that you
00:20 joined a new software company during the
00:23 interview process the hiring manager and
00:26 the recruiters told you they're using
00:27 the latest hot technology that you're
00:30 really excited about using but you get
00:33 in there you're on that project and as
00:35 you start to look at the code you start
00:37 to explore the way that the solutions
00:38 been put together you notice this one
00:41 developer seems to have done something
00:43 in a way that I think isn't the right
00:46 way to do it maybe there's five
00:48 different ways that people are accessing
00:50 the database or some data store or maybe
00:53 there's a stack of ten different
00:55 technologies you've never used before
00:57 and they all seem like they make the
01:00 solution of Frankenstein big mess well
01:03 if you've ever been in that situation I
01:05 want to challenge you a little bit in
01:07 this video to be open to some of what
01:09 I'm gonna share with you to maybe think
01:11 a little bit harder about how you might
01:14 be contributing to this problem because
01:16 I know in my career it was really easy
01:19 for me to and moan about how
01:21 everybody else wasn't coding the way I
01:23 wanted them to and thinking that the
01:26 complexity of the solutions that we
01:28 build when we program or we develop
01:30 software was really because other people
01:33 weren't as good of a software developer
01:35 as may be I considered myself to be but
01:38 today I'm going to share some
01:39 information with you about just the
01:41 industry the evolution of technology in
01:43 the mindset that we often find ourselves
01:46 in that I think many of us are actually
01:48 being brainwashed to think we need to
01:51 make these solutions harder than they
01:53 really need to be so if you look back at
01:56 the history of technology and
01:58 specifically programming languages which
02:01 many of us use today one of the first
02:04 programming languages I learned in my
02:05 career when I went to college over 20
02:07 years ago was assembly language in an
02:10 assembly language there's only a few in
02:13 structions or commands that you need to
02:15 learn but because of that getting the
02:18 code to do anything takes a lot of code
02:22 so when I learned some higher order
02:25 languages things like basic and Java I
02:28 learned that there were concepts that we
02:31 came up with and you're familiar with
02:32 this I'm sure as well too that we're
02:34 supposed to make it easier to program by
02:37 kind of hiding or abstracting those
02:39 details so somebody would write a
02:42 function or a method call and you as a
02:45 software developer would just need to
02:46 know here's the method I call to do some
02:49 work and it would sort of hide a whole
02:51 bunch of lines of code behind it which
02:54 was supposed to make your job easier so
02:57 as more people started using these
02:59 higher-level languages libraries became
03:02 popular before libraries one of the
03:04 first projects that I joined right out
03:07 of college there was still a lot of
03:08 development being done in C and in C++
03:11 and while these are great languages
03:13 there's a lot of code written in these
03:15 today this was to build web applications
03:18 so people were just trying to surface
03:20 things out on the Internet to a browser
03:22 and using C and C++ I mean it would take
03:26 like three lines of code just to
03:27 allocate a string and put a value into
03:29 it so depending on the problem you're
03:32 solving in your software development
03:34 solution the language that you choose
03:37 can make it either simpler or more
03:39 complex to implement or solve a problem
03:43 and you probably know this out there but
03:45 there's something interesting that
03:47 started to happen around 2002 2005 which
03:51 is that more languages started arriving
03:54 on the scene that didn't just have
03:57 easier syntax they actually had more
04:00 complicated syntax so if you think back
04:04 to one of the earliest programming
04:06 languages you may have learned maybe it
04:07 was Java maybe it was c-sharp or Ruby a
04:11 typical object orientated programming
04:13 language almost all the languages have a
04:15 simple way of representing objects
04:18 object orientated programming right in
04:20 the relationships between objects and
04:22 simple statements like for loops and
04:25 things like that all the stuff we
04:26 learned in college or
04:27 our first few software projects but if
04:29 we look at how those languages evolved
04:32 they started to get things like
04:33 decorators and attributes and all kinds
04:37 of other little geeky aspects of the
04:39 syntax that were supposed to make it
04:41 more powerful and easier to use but one
04:44 of the things I want to have you think
04:46 about a little bit here and just to
04:48 check yourself and think about the
04:50 industry as a whole how this is
04:51 affecting us is do you ever get the
04:54 feeling when you're writing code you
04:56 look at your code and it looks like art
04:58 to you and you're like really feeling
05:00 proud wow I can write really cool code
05:04 and it almost looks like hieroglyphics
05:07 to you and you feel like some pride and
05:09 some self-worth and wow I can understand
05:12 this and this is really complicated and
05:14 I'll bet there's other people that this
05:15 would look really complicated to now
05:18 that's a somewhat elitist and stupid
05:20 attitude and I think as I've gotten more
05:23 mature in my career I don't fall into
05:25 this as much but I will tell you in the
05:27 first probably five years of my career I
05:29 definitely fell into that attitudes at
05:32 least subconsciously where you know my
05:34 mom would come to visit in the house or
05:36 my wife would be walking by the computer
05:38 and one of them would look at the
05:39 computer and look at the screen where
05:41 I'm writing code and be like wow I can't
05:42 believe you can understand that and I
05:45 would start to feel some pride in you
05:47 know what I am smart I really do know
05:48 some stuff and you know you fast forward
05:51 a number of years past that and that
05:53 started to make its way into the
05:55 solutions and actually what it ended up
05:57 doing was making development more
06:00 complex and harder actually just because
06:03 of my desire to feel like I'm smart or
06:06 intelligent or brilliant or can use the
06:09 latest greatest stuff so around the
06:11 2000s to 2005 time period one thing I
06:15 noticed as a software developer was in
06:17 explosion in new languages and
06:19 frameworks and while I really love
06:23 technology innovation I'm sure you do if
06:26 you're watching this video too I really
06:28 got honestly frustrated with all of a
06:30 sudden a hundred different new variants
06:32 on doing model-view-controller for
06:34 example or ten different logging
06:37 frameworks that all seem to do the same
06:40 is functionally what it does for the
06:42 project but it's a little bit different
06:45 and I think many of us is software
06:47 developers we fall kind of into this
06:48 special snowflake syndrome we feel like
06:51 we want to put our stamp on a problem
06:54 that people are trying to solve with
06:55 software and so we go out and create a
06:57 library or we go out and create a
06:59 framework and we think that's gonna make
07:01 us popular in the industry you know
07:03 maybe we look up to David Heine Mayer
07:05 Hanson or other people who have created
07:07 really popular frameworks and we're like
07:09 I want to be looked up to like that too
07:11 but I think we need to be a little bit
07:13 more careful as our careers move forward
07:15 that we don't fail to realize that by
07:18 introducing our little framework or our
07:20 stamp on something we're actually making
07:23 it harder for everybody else on the team
07:25 to potentially get work done in one of
07:29 the biggest ways you can see this is I
07:31 will sometimes come on to a new software
07:33 project or I'll start up a new software
07:36 project and I'll be working with a whole
07:37 bunch of other programmers or software
07:39 developers and they've all got different
07:41 backgrounds maybe this is a node.js
07:43 project or a ruby project it could be
07:45 any language but you have people with
07:47 varying levels of experience they might
07:49 all have the same exact number of years
07:51 of experience but their experience of
07:54 how to apply that language or that
07:56 technology on their problem because of
07:58 the business they work for or maybe how
08:00 they think is totally different and so
08:03 sometimes you'll get into a code based
08:04 or you'll start solving a problem and
08:06 you'll be like why the heck did this
08:08 person write code to do something that I
08:11 know exists in a library somewhere else
08:13 or why did this person choose to use
08:16 attributes when I would have used
08:17 methods or you know any aspect of the
08:20 syntax or the features of the
08:22 programming language or the framework
08:24 you're using well I think part of the
08:26 reason that that continues to be a
08:27 problem is because there's this always
08:30 expanding way that people want to
08:33 represent solving what I would consider
08:35 many of the same computer science
08:37 problems but with their own special
08:39 framework their own little span upon it
08:42 and I think we need to just kind of sit
08:44 back a little bit and think about is
08:46 that really helping us in our career is
08:48 that actually helping us not be stressed
08:50 out or is that maybe making it harder to
08:53 hit deadlines and it's actually make
08:55 things continue to be more complex when
08:57 they don't really need to be so why are
09:00 you making programming harder why am I
09:02 making programming harder why do we fall
09:05 into this well I think the first reason
09:07 is we buy the industry noise that to get
09:11 a job we need to know the latest
09:14 greatest framework or technology now if
09:17 you've been in software development for
09:19 any period of time you know that you
09:21 can't just learn one framework or one
09:24 technology and make a 20-year career out
09:27 of it however I think many of us get a
09:30 couple years of experience in a
09:32 technology and we start to get bored
09:34 with it and we look at what maybe
09:36 recruiters are putting people into
09:38 positions for or what other people on
09:41 our project are excited about and all of
09:43 a sudden we think if I don't learn this
09:45 new technology I'm not going to be able
09:47 to find a job well I live in Austin
09:50 Texas and I'll tell you this see sharp
09:52 as an example is an old programming
09:54 language at this point it came out
09:55 around 2000 or 1999 so it's a it's
09:59 almost a 20 year old language and
10:01 there's more positions here in Austin to
10:04 fill than they can find people and it's
10:07 not because people don't know it it's
10:08 because a lot of people don't want to
10:10 work on c-sharp anymore they want to
10:12 work on nodejs they want to work on Russ
10:14 they want to use different languages and
10:16 while I think that's cool and I think
10:18 it's cool that you know if you're in
10:20 your career you want to always grow
10:22 you're actually putting pressure on
10:25 yourself when you constantly get
10:27 addicted to learning new frameworks and
10:29 new technologies because if you think
10:31 about it one of the biggest complaints
10:33 that people have in software development
10:35 is that they have to work too many hours
10:37 and they have a hard time hitting
10:39 deadlines well if you start a project
10:42 and you start to get asked to estimate
10:44 work and you're not very good at it its
10:47 brand new to you what do you think
10:49 that's gonna cause you to do you're
10:51 gonna have to study at home you're gonna
10:53 have to work overtime and so I think
10:55 there's a disconnect between the
10:57 frustration that we have oftentimes as
10:59 programmers because we feel like we're
11:02 not given enough time and the business
11:04 is too complex and maybe project
11:06 managers and and people that run the
11:08 you have these unrealistic expectations
11:11 of us and it's really harder than they
11:13 realize but really we're making it
11:16 harder than it needs to be because we're
11:18 jumping into new technology stacks that
11:21 sure might be great we might want to
11:23 learn those and they may make us more
11:25 valuable in the industry but if we're
11:27 not really competent with them when we
11:29 start a new project we're honestly
11:31 setting ourselves up for failure or at
11:34 least way more pressure than we need to
11:36 be in the second thing I think we do
11:38 that causes us to make programming way
11:42 harder than it needs to be is what I'd
11:45 say is intellectual masturbation we want
11:48 to learn new things because it's strokes
11:50 our ego we think by knowing this amazing
11:54 technology that has 50,000 moving parts
11:56 in 20 different patterns we can lord it
11:59 over people and look how smart of an
12:01 architect or a programmer I am and then
12:03 we get frustrated when our team can
12:06 barely produce anything they're just
12:08 trying to get a login screen done or
12:10 just to say hello world they need to
12:12 learn 12 new concepts if you want to
12:16 actually move ahead in your career and
12:18 really be rewarded it's about delivering
12:21 results it's not about your mind I've
12:25 worked with many people and since I've
12:27 gotten into consulting have been very
12:28 successful with making more money simply
12:31 because I'm able to come into a code
12:33 base or come on to a company and learn
12:35 the patterns that are in place in crank
12:37 out features where the business finds
12:40 value because I'm delivering results way
12:43 quicker than other people because I
12:45 don't get hung up on I need to put my
12:47 special stamp on it and I need to use
12:49 the framework I want to use most and I
12:52 don't need to use the technology that I
12:53 want to use the most No
12:55 I start to deliver results for the
12:57 business and then the business starts to
12:59 learn jamie is someone we can count on
13:01 that gets stuff done and that's what's
13:04 gonna lead to promotions that's what's
13:06 gonna lead to recognition that's what's
13:08 gonna lead to raises the fourth thing
13:10 that I think we often do that causes
13:13 programming to be much harder than it
13:15 needs to be is we try to insert new
13:19 architectural concepts or ones
13:21 excited about into a codebase or into a
13:24 software development solution that don't
13:27 make sense because we've just convinced
13:29 ourselves that we want to use it and
13:31 there must be some way to use it I'll
13:33 give you an example I was working at a
13:35 consultancy once where there was another
13:37 team than the one I was on and they were
13:39 building a solution for a client and
13:41 this was a tiny dinky little client that
13:44 was building a product that was going to
13:46 be used by 200 of their customers in
13:50 this solution this codebase that this
13:53 team was building they introduced an
13:56 enterprise service bus into it and if
13:59 you know anything about an enterprise
14:01 it's an architecture where when
14:03 different things happen and software
14:05 products or components instead of them
14:08 directly calling each other they have a
14:10 way to publish and subscribe I don't
14:12 want to get into too many details but
14:13 it's it adds a lot of complexity to the
14:16 codebase now for the right architectural
14:19 problem it can solve a lot of complexity
14:22 but this team chose to use it simply
14:25 because they knew how it worked they
14:27 thought it was exciting and they
14:29 basically tried to use it as a
14:31 one-size-fits-all solution you've heard
14:33 the expression when all you have is a
14:34 hammer everything looks like a nail well
14:37 this is something that I think we have
14:39 to be careful about as software
14:40 developers especially if you're someone
14:42 out there like you know I did this
14:44 earlier in my career the first the first
14:46 eight years of my career I was at the
14:48 if you've mostly been solving one
14:50 business problem and you've been using
14:51 one tax stack to do that in one set of
14:54 patterns and you go on to a new business
14:56 with a new problem and maybe it's the
14:59 same tech stack you can fall into
15:01 thinking I need to follow the same
15:03 architecture when it doesn't make any
15:06 so be careful out there don't fall into
15:10 what I have if you're actually trying to
15:12 make your job simpler and you want to
15:15 make more money and you want to be less
15:17 stressed out and you want to be able to
15:19 hit your deadlines better and you want
15:21 people to reward you better then be
15:23 careful that you're not getting caught
15:26 up in how smart you are and how many
15:28 frameworks you know and how many
15:30 patterns you know and trying to apply
15:33 them to every problem just to show
15:35 off to everybody about how smart you
15:37 think you are and how many different
15:39 aspects of technology you can
15:40 demonstrate because ultimately I found
15:44 that will often kill the productivity of
15:47 the team and it doesn't matter how great
15:48 you are at producing value with that
15:50 framework if everybody else on your team
15:53 can't keep up with it and you start to
15:56 blame them all and be like well you're a
15:58 shitty programmer and you're not a good
15:59 programmer at the end of the day they're
16:02 not gonna like working with you very
16:03 much they're gonna throw you under the
16:05 bus at the first opportunity they get
16:07 and at some point the business is gonna
16:10 realize the reason this project is
16:12 failing is because our tech lead or one
16:14 of our programmers has created an
16:17 architecture that's way more complicated
16:19 than this solution really needs so are
16:23 you making programming harder than it
16:26 needs to be what are some of the ways
16:28 that you've coped with all of our desire
16:30 to grow and learn new things but not be
16:33 seen by other people as wrapped up in
16:36 our intelligence meaning everything and
16:38 that leading us to design solutions that
16:40 are just way too complicated and harder
16:43 than they need to be leave me some
16:46 comments below if you're new to my
16:48 youtube channel please subscribe click
16:50 the little bell icon and you'll be
16:52 notified when I post new videos
16:54 I'm also on for podcast platforms if
16:57 you'd rather listen to this as a podcast
16:59 Google Play stitcher iTunes and
17:02 SoundCloud and you can like me on
17:05 Facebook so until next time thanks