00:00be an engineer not a frameworker this
00:04article is a plea for self-improvement
00:05you can do this be an engineer I love
00:07this take already I'm loving it I can
00:09feel myself loving it I always say the
00:11statement where there was a time period
00:13in life where people would Define their
00:16role as a software developer by the
00:18language they choose I'm a JavaScript
00:20deaf right but that has so much been
00:24obliterated that now at this point
00:26people say I'm a react developer that's
00:30somehow a framework that calls itself a
00:33library is worthy of being the type of
00:35developer you are it's not it's crazy
00:38that you say that you're not a framework
00:40developer you are a software engineer
00:43learn how software Works be an engineer
00:46and stop caring so dang much about these
00:49these things also use htmx because it's
00:51the greatest I'm an htmx developer by
00:52the way as always caveat's first
00:54Engineers uh definitely should should
00:56and do use Frameworks there are
00:58beautiful bits of engineering that get
01:00stuff done in maintainable way
01:01Frameworks are not the enemy of this
01:02article Bravo Frameworks okay enough of
01:07uh sorry what are Frameworks Frameworks
01:09are software tools that provide a
01:10scaffolding to complete software
01:12projects of a particular type so if you
01:14want to write a single page web app and
01:16typescript use htmx because there's
01:19there's nothing else you don't have to
01:20do it from scratch because there's htmx
01:22uh what do you let's see want to do some
01:24machine learning in Python allow me to
01:26introduce my friends
01:29want to write a backup and C sharp I
01:31don't what the hell is C Sharp I don't
01:33even know what what what what
01:35an asp is not a highly dangerous snake
01:42don't touch an asp okay you you will
01:44literally die you'll die of horrifying
01:47poison uh if you know a framework you
01:50can often get a job that has the word
01:52engineer in the title and possibly
01:53machine learning uh if you know two
01:55Frameworks you might get a job that also
01:57has the word full stack in the title but
01:59your skill uh your skill set needs to go
02:02much deeper than Frameworks if you're
02:04going to have a success in your next job
02:06the one where you get hired because you
02:08have three to five years of engineering
02:10experience on your resume senior
02:12engineer otherwise you're going to be
02:14sitting in a very uncomfortable chair at
02:16the 90-day review you may need to go on
02:18a journey from frameworker to programmer
02:20to engineer let's look at each of those
02:22phases of the journey I don't like when
02:24people do this whole like engineer is
02:25different than programmer business okay
02:26just pick a term and use the developer
02:28engineer programmer I don't I honestly
02:30don't give ass wait I just bleep rat I
02:33don't give a rat's ass about
02:36which words you choose okay they are
02:38meaningless to me at this point oh
02:43it's obtained in my country
02:47I know true I know that's true for you
02:53nobody cares okay America's hat nobody
02:55cares that you can't use the word oh I
02:58can't use the word software engineer
03:00because that's illegal
03:03nobody's building a bridge on a C sharp
03:06okay it's not how it works we don't need
03:09some stupid piece of paper that says you
03:11can make bad code because you still rely
03:13on Chad Jeopardy anyways okay that's the
03:16worst part no one cares anyways sorry I
03:18I digress all right the frameworker just
03:21because you primarily work in a
03:22framework or two doesn't mean you're a
03:24frameworker but you might be framework
03:26allows a frameworker to build software
03:27products in a way similar to how Ikea
03:29allows me to build shelving units
03:31beautiful when but it's totally not true
03:34uh I love the analogy but at the exact
03:39Ikea gives you something that actually
03:41will come out with a final product
03:43whereas most Frameworks come out with
03:45spaghetti okay it's more like you've
03:46been give you need to cook some noodles
03:48when the work is done uh did I make a
03:51shelving unit yes should I be describing
03:53myself as a shelf engineer probably not
03:56what is a frameworker lacking
03:58programming language knowledge
04:00frameworkers usually have a fairly
04:01rudimentary knowledge of programming
04:03language that the framework is written
04:04in really well don't do that stop it
04:08stop it what's more they may not be
04:11aware of the lack of their knowledge
04:13because the Frameworks are purposely
04:14designed to provide abstractions that
04:16Shield their users from many types of
04:18programming so the frameworker gets a
04:20lot of experience in solving a handful
04:21of problems with a limited programming
04:23toolkit I think this is a really good
04:25call out in the sense that like if you
04:29even the fundamentals of how something
04:32like trpc works or how any of these
04:34things work you should know how these
04:35things work even at the most basic
04:37levels because ultimately at the end of
04:39the day when there is a bug it's up to
04:42you to solve it and you to figure it out
04:43and if you have no clue why your stuff
04:45is breaking don't be at the mercy of
04:48trying to get somebody else to solve
04:49your problem you should know something
04:50right you should know enough
04:53depth of knowledge frameworkers also
04:55lack the depth of knowledge and software
04:56problem they are using the framework to
04:58solve a framework represents a specific
05:00way implementation of actualizing the
05:01concept of software product the
05:03low-level implementation is usually
05:05abstracted in the framework users are
05:06providing some straightforward ways of
05:08injecting code into the underlying
05:09implementation by a base classes
05:11decorators and auto-generated templates
05:13Yep this makes sense this makes sense no
05:15matter how crazy react may be the basic
05:18the basics of it are not that insane
05:21solid.js is much easier to kind of
05:22imagine how it works in comparison to
05:24react but not that crazy frameworkers
05:27can become Adept manipulators of the
05:28framework without ever understanding the
05:30underlying principles of the framework
05:32Frameworks design patterns algorithms CS
05:35or ml asynchronous or distributed
05:36programming and much more sometimes
05:37understanding these Concepts these
05:39underlying Concepts can offer an
05:40immediate benefit by preventing some
05:42misuse of the framework this is true I
05:44remember when I was getting my masters
05:46in uh machine learning AI back when we
05:48called it um and like either write a
05:50bunch of MLPs and all that stuff by hand
05:52right at the right radio basis functions
05:54adaptive neural fuzzy inference systems
05:57this was back in the day before all
05:58these all these cool new Concepts okay
06:00reinforced learning was just becoming
06:01like a big thing and you know we had to
06:04design those things and so when I see
06:07people go oh man my learning rate was
06:10like I really get that
06:12because I had the right
06:13you know error back propagation and my
06:16learning rate was a piece of crap and I
06:18didn't really understand it until I
06:20realized what was going on and what was
06:21happening to all the little hidden
06:22layers you know what I mean it's it's
06:24it's neat to know what happens
06:26underneath the hood in some small sense
06:28you know what I mean even if it's even
06:30if now it's outdated I have a general
06:34you know what I mean
06:37but often one can use the framework
06:39adequately with little depth of
06:41knowledge all this deeper knowledge
06:42however is valuable for one thing it is
06:44massively transferable not just with an
06:46immediate domain of the particular
06:47software product but across all sorts of
06:49programming what's more without this
06:51depth of knowledge the framework is not
06:52well equipped to decide whether or not
06:54the particular framework Choice can
06:55fully meet the project requirements does
06:57any of this matter I think I mean I
06:59personally think it does I see more and
07:01more a lot of these uh right I see it a
07:03lot react uh you know just because
07:05that's like the most popular front-end
07:06one just people are react Engineers stop
07:08being a react engineer right at least
07:10learn JavaScript at least like the most
07:13basics of it all becomes so good that
07:15you could write the basics of your own
07:17framework and then throw it away and
07:19then go use whatever you want to use
07:20right frameworking has a negative effect
07:22on the frameworker's career and on the
07:24organization they are a part of the
07:25frameworker works uh in that limbo of
07:27writing framework code that is good
07:29enough to merge but lacking the level of
07:30Competency that will pass long-term
07:32maintainability and a sensibility test
07:34not only that but once you become too
07:35married or just you only know one
07:37framework work you do something really
07:44is it this one is it blessed
07:48okay it's not blessed uh
07:58what is it called is it dang it is it is
08:00it is it ink ah it is ink it's ink
08:06see here's the problem is that
08:09when you have a hammer
08:12and let's just say your hammers react
08:17you may go the only way to write this
08:24is to use the thing I already know
08:29so Inc provides the same component-based
08:30UI building experience that react offers
08:32in the browser but for command line
08:34applications now when I see this I go
08:39you might have jumped the shark here
08:43you might have just accidentally jumped
08:45the shark and now you're just applying
08:46this one single way to solve things to
08:49everything I understand that a Tui is
08:53kind of like a gooey
08:56that's gonna not you know what I mean
08:59anyways stop solving the same stop
09:01solving every problem the one way you
09:02know uh anyways that's my one thing
09:04about like frameworking is that people
09:06that once they start doing this they
09:08they start solving every problem in the
09:10same way uh The frameworker Works in a
09:12limbo of writing framework code that is
09:13good enough to merge but lacking level
09:15of Competency that will pass long-term
09:16maintainability and extensibility tests
09:18a lot of immature uh immaturely
09:20procedural code just gets dumped into
09:23the Right Slots first off I love
09:24procedural code unfamiliar problems are
09:26handled with anti-patterns and
09:27organizational code quality drifts
09:32declarative is just imperative baby
09:34declarative is just a paradise uh but
09:36from a career perspective the
09:38frameworker has a bleak Outlook coders
09:40with the same set of transferable skills
09:41using a framework are being churned out
09:44on Moss by about 50 new online academies
09:47every day yep see this is I do think
09:48this is a fundamental problem which is
09:50that there is a ton okay so the UN
09:54coding is accessible to anybody
09:57the problem is is that
10:03and maybe just a bit more gatekeeping is
10:06good like hey here's some things you
10:09really should know here's some things
10:10you should really try to pursue maybe
10:12it's not gatekeeping maybe it's some
10:15other thing some way to help people
10:16understand that like what they've
10:18learned is not the end
10:20it is the most initial seedling of what
10:23you need to do stop looking at learning
10:25as a six-month one-year two-year
10:27four-year exercise but as a 20-year
10:34and if a framework eventually lands a
10:36dream job where they get to do more
10:37interesting projects they might end up
10:38uh might experience a rude awakening
10:40when their knowledge becomes uh
10:41knowledge gaps become evident yep side
10:43note they might just be made a manager
10:44in which case they'll probably do
10:45incredibly well got them so what if a
10:48frameworker wants to be an engineer I
10:50suggest they start becoming programmers
10:51program okay so this is where this
10:52distinction I don't really care but
10:54anyways I'm going to use the term
10:55programmer with a sense that is somewhat
10:59to this article's premise a program or
11:01someone who lives in code and by that
11:02vague expression I mean two things
11:04programmer uh is reading lots of code a
11:06programmer is writing lots of different
11:07uh sorts of code let's take a look at
11:09those in turn and heads up I'm going to
11:11switch back to the second person here
11:13because I believe you deserve that sort
11:14of personal touch okay you'll uh
11:17definitely let's see a programmer let's
11:19see the programmer is reading lots of
11:20code you'll definitely hear it uh said
11:22that reading code is one of the best
11:24ways to learn to write good code I think
11:26this is really good it's my favorite
11:28personal way is not just a read code
11:33first build something and then read how
11:36someone else does it because it's like
11:38you get this one chance to be deeply
11:40familiar with a topic and see a
11:43completely different way you could have
11:44thought about it all at the same time
11:45which is really hard to do in almost
11:47anything else but in code it is
11:49something you get to do so solve Advent
11:51of code day one in a language you're not
11:53that familiar with and then look at
11:55someone else's Advent of code day one
11:56solution you'll go wow what is that geez
11:59I didn't even know about that well
12:00that's super cool then you'll do it
12:02again and now you have all this new
12:03found tools and then the second time you
12:05do it you'll see a whole new set of ways
12:07you can do things or just different ways
12:08to approach the with the tools you
12:10already know about it's beautiful it's
12:12so good it is so Bang
12:19uh you'll learn uh to cover edge cases
12:21and handle exceptions like a
12:22professional but there's uh even better
12:23reason to read lots of code the best
12:25reason to read code has just become
12:27really good at reading code the ability
12:28to efficiently read and understand new
12:30code is probably the most important
12:31single skill that an engineer will have
12:33and the programmer is becoming an
12:35engineer because the Technologies
12:36languages and libraries that make up
12:37core stack are constantly changing plus
12:39reading your own code from six months
12:41ago is the same exercise okay even if
12:44you work by yourself
12:49you wrote like three months ago
12:52is equal to reading someone else's bad
12:56well there's no substitute for being
12:57able to understand code by reading it
12:59yourself and that's especially true when
13:01moving into a new job somewhere uh
13:03luckily there's a ton of code out there
13:04to be read and it can be encountered
13:06while doing the second thing programmers
13:08writing lots of different source code
13:10oh I have that problem too anyone who
13:12thinks I don't write bad code and look
13:13back on my own code and go why did I
13:15write that you're full everyone does it
13:16one of the ways to break free of every
13:18now and then do I I do look back and go
13:22one of the ways to break free from the
13:24framework or what is to write code
13:25that's not typically for you that
13:27doesn't necessarily mean that you're
13:28writing a different sort of app if
13:29you're doing machine learning in Python
13:30you could have a side project
13:31implementing ml algorithms yourself boom
13:34uh bonus points if you do it in CC plus
13:36plus but of course it might mean that
13:37you're writing a different sort of app
13:39trying to write a desktop GUI on top of
13:41some of the scripts you run every day
13:43just for fun you make web front ends try
13:45a text-based role-playing game this is
13:47great advice this is great great advice
13:49because this is so dang good right this
13:56try something different expose yourself
14:00not in the illegal for way but in the
14:02legal way the way that everyone enjoys
14:04okay not that other way
14:06yard users uh the thing uh to be mindful
14:09of is that you don't simply want to
14:10switch from one framework to another
14:12you're trying to learn you want to be
14:13using your programming language at a
14:15lower level than you're used to and then
14:17creating your own layers of abstraction
14:18on top of that this is a great because
14:20even just creating your own abstractions
14:21and seeing how far you can take it is an
14:24exercise onto itself right you should be
14:26learning about things like I O and
14:28sockets and event loops and buffers and
14:29hash generation and tail recursion last
14:31one seems a little strange because
14:33oh okay uh and as you add layers of
14:36abstraction you should be learning about
14:37things like polymorphism and inheritance
14:39and interfaces and state machines and
14:41design patterns and you should be
14:42gaining a vocabulary and then
14:44immediately never doing inheritance
14:45again except for that one problem we all
14:47know which is really really valuable
14:48which is event emitters and then somehow
14:50that just makes way more sense and
14:51everyone seems to like that one but I
14:52guess you could also provide a property
14:54but then you'll have this whole public
14:55property problem and then every object
14:57has to have the same doesn't really
14:58matter anyways so when I do when do I
15:02the limitations of being a programmer as
15:04a programmer you'll find that what you
15:05can let's see that you can do things
15:06with code that would have been
15:07impossible for you as a frameworker but
15:09it's possible to do some remarkable
15:10things and still be a poor engineer
15:13if you think you're a good engineer
15:14you're kidding yourself okay I don't
15:16know about this this article might
15:18derail for me on that one part which is
15:20I think everyone should look at yourself
15:21as being a bad programmer because you'll
15:23always just take an extra step of care
15:25uh imagine that you're building your own
15:27car from Parts but uh as you assemble
15:29your car every time you need to attach
15:31an unmoving part or another instead of
15:33using nuts and bolts you weld them
15:34together you could potentially build a
15:36car that works really well at first but
15:38imagine something and it breaks and it's
15:41the sort of thing that uh that's hard to
15:42get to you really need to remove some
15:45other parts in order to get to it this
15:46is probably a better app description
15:47honestly this is an app description of
15:49programming it's more like welding than
15:51anything else like when you have to undo
15:54something that's under a couple stuff
15:56like a couple couple layers like you
15:59absolutely have to take apart your
16:05it's actually I actually like this I
16:07actually like this a lot I might I might
16:09start using that all the welding was a
16:10bad choice it may be the choice you have
16:13to do though for programming imagine
16:14that you want to upgrade one of the
16:15parts of your car it would basically be
16:17really nice if that one Park would be
16:18popped off and a new one popped on I'm
16:20not saying that uh being a programmer in
16:22this sense means that you've completely
16:24ignored good engineering principles but
16:25the goals of this programming phase are
16:27different from those of engineering
16:28phase if programming has uh been more or
16:31less linear journey of gaining
16:32capability in certain skills becoming an
16:34engineer will be hard right angle okay
16:37to switch metaphors you could think of
16:40uh it like language development as a
16:43programmer you're getting native
16:44speaking fluency with the language that
16:45you work in as an engineer you'll start
16:47writing academic Pros
16:49okay at this point this is where I think
16:50we fully disagree potentially I I let
16:54but I'm feeling like I disagree so what
16:57is the mysterious shift in priorities
16:58that defines the engineer the engineer
17:00plans and writes software that balances
17:02stability and change stability is
17:04straightforward concept and many
17:05programmers provided in their code
17:07planning code that can change is more
17:09elusive balancing the two is what makes
17:15I don't like this definition but we'll
17:17we'll finish it off stability the most
17:19uh most people understand the main
17:20concepts of stability the first concept
17:22is that software should do what is it
17:23supposed to do it shouldn't be buggy it
17:25should be reliable the second concept is
17:27the way the software is used should not
17:30change rapidly and frequently
17:33that's a true in two senses the
17:35interface should be relatively stable
17:36over time and the interface should be
17:37consistent across software okay it's not
17:40going to let's see I'm not going to
17:41spend a lot of time on these but I'll
17:42just emphasize that we say or that when
17:44I say interface I'm referring to that
17:46broadly it can mean anything that you've
17:48explicitly declared all the headers and
17:49CC plus plus interfaces in Java C sharp
17:52Etc it can mean consistent set of types
17:54of data and names of objects that are
17:56interacted with either in state or in
17:58operations all a python Scala or it
18:00could mean the graphical interface your
18:02business users experience defining a
18:04stable interface is incredibly important
18:06not just for the sake of stability
18:07itself but also for the sake of change
18:10can buy that definition I buy the
18:14I want to get a good I want to get a
18:19the engineer writes software or change
18:21the engineer writes software in a way
18:22that accommodates change more precisely
18:24the engineer is able to anticipate the
18:26way their software will likely need to
18:27change and writes accordingly okay so
18:29this is where my disagreement probably
18:31goes a little bit harder coming up here
18:32soon this ability to anticipate the
18:34future is definitely an ability that
18:36grows over time but there are several
18:38types of changes that are Universal
18:39enough to mention here so a big thing
18:41for me is that I think
18:44this is an extremely hard skill in the
18:49I think I know why and how software
18:52should change or what it should change
18:54but often what I will do is not write it
18:57that way intentionally and the reason is
19:00is that trying to abstract for use cases
19:03you don't have often results in code
19:10like real talk it often results in code
19:13that is brittle I do not like
19:14abstractions and I often find that the
19:16more abstract the more I plan for a
19:18future that may be is I create a future
19:21that is a path to hell right it is just
19:24awful and so often I don't abstract
19:27intentionally because I'd rather feel
19:29the pain of not abstracting in the
19:31specific way that I needed to change it
19:33such that when I write the abstraction
19:35for the second time because now I have
19:37the two points of change I can create an
19:40abstraction that is good for both and
19:42likely good for another one because now
19:44I can really I can make it more broad
19:47more general or more specific in a way
19:50and I also feel like this is one thing
19:52to say that probably doesn't exist in a
19:54lot of languages but since typescript is
19:56such a touring complete type system
19:58I think it also adds a new layer of
20:00typing complexity when you use it in the
20:03sense that if you use it in too complex
20:05of a way a way that allows you to be too
20:06specific with what you're passing in and
20:09how you use it you can find refactoring
20:11and having to now have a new form of
20:13abstraction to even be harder and it
20:16makes your refactors even longer
20:18uh bucks Engineers that assume that
20:20every piece of software that I produce
20:22has something wrong with it in order to
20:24change fix the bug code should be
20:25organized by a highly readable and you
20:27and use logging love logging I won't go
20:29in depth here at the minimum an engineer
20:31knows how to organize code into reusable
20:33blocks whether they are functions or
20:34classes and knows how to Loosely couple
20:36those blocks of code so that bugs are
20:38isolated as possible and require a
20:39limited number of changes absolutely
20:43that's just seeing that's just
20:44programming enough right if you program
20:46enough you will do this automatically
20:48eventually right when you fix enough
20:49bugs this starts to become second nature
20:52I always tell people learn how to code
20:53and learn how to test your code
20:56without using mocs because there comes a
20:59point where you start realizing how you
21:00should layer your code where you have
21:02like external reaching
21:09side effect uh producing and then the
21:12middle part becomes excessively easy to
21:14test because you've built your code in
21:18that is testable right and it kind of
21:20changes how you think about it I don't
21:21know just a personal thought use cases
21:22and data and Behavior now I remember
21:24being on call with a team lead who was
21:26being uh who was completing an MVP
21:27targeted for a single client I asked
21:29have you designed this software so that
21:31it can be used for other clients by
21:32referencing a configuration file or
21:34would it be required further software
21:36development to use this for other
21:37clients there was a long pause on the
21:39call and that told me everything I
21:40needed to know when the engineer gathers
21:42requirements for a project even an MVP
21:44they are constantly evaluating the
21:46required behaviors to determine if these
21:47behaviors that are likely to change in a
21:50way that can be captured in a data layer
21:51so this again you know I have a really
21:53hard time throwing everything into a
21:55configuration because you also end up
21:57with the other side which is that you
21:59over configure your software
22:01I don't necessarily disagree if you're
22:03building a MVP for a single client
22:05should you build it in abstract sense
22:07that can be used with any client or do
22:08you build it for the individual I don't
22:10know this example or what it was doing
22:12but I you know I'm always a little
22:14skeptical there's a few things I prefer
22:16to environment variable configuration
22:18out dot end out an example client a
22:21emails you their data as Excel files
22:23which get dumped into a shared Drive
22:24client b as an API client C has you
22:26connect the FTP to download the scsv
22:28files ignore the problems this implies
22:29in your business Tech integration for
22:31now there are three different behaviors
22:33here your software can support all three
22:34while depending on a config config files
22:36one for each client to identify which
22:38behavior to use then when config C
22:40finally gets an API or client C finally
22:43gets an API you don't have to do
22:44software development you just replace
22:45the FTP information in their config file
22:47with the API information well maybe you
22:49store it in a database maybe you have
22:50oauth login that you want to do
22:52something different I'm not always
22:53convinced configuration is great
22:57I don't know what the I don't know what
22:59the deal is I'm just saying that always
23:00just going straight for a Json file
23:03might not be the right approach I don't
23:04know all this uh is possible because you
23:06the engineer knew from the start
23:07development that importing Excel files
23:09from a shared Drive was a behavior that
23:10was likely to change you planned your
23:12software to develop to deal with data
23:14importing via abstractions rather than
23:15hard coding in a load client from udrive
23:17uh yeah okay that's fair uh this is
23:21again the thing where you
23:23this is kind of what I was talking about
23:24earlier you have the loading the
23:27retrieving the getting of data the
23:28manipulating of data the output of what
23:31happened the side effect the display
23:35it's just accidentally it just happens
23:36right here it's just this just happens
23:39it you don't even have to think about it
23:40it just happens also yes getting data
23:42from Google Drive is a bad plan you
23:44laugh but things I have seen yeah
23:47extensions in some scenarios uh these uh
23:49the use cases changes significantly
23:51beyond what you were either expecting or
23:53beyond what you're willing to support
23:54continuing our example case maybe you
23:56don't want to support data loader from
23:57blob storage from every different cloud
23:59provider naturally if you've clearly
24:01defined what interface for loading data
24:02you don't have to Downstream developers
24:04can still use your software to import
24:05data from S3 by writing code that
24:07implements the interface yep good
24:09plug-in support I mean this is just more
24:12again I this distinction between
24:14engineering and programming I think goes
24:16away if you just go it's it's experience
24:19right experience says make plugins
24:23right you write it once dumb you write
24:27it twice thinking about plugins
24:29that's all it is to me so as long as you
24:31left the opportunity open for them there
24:33are a number of I know but sometimes you
24:34don't want to leave opportunity open all
24:35the time I've done this and I've made
24:37worse software because I left the
24:38opportunity open to be generalized and
24:40then you have all these weird edge cases
24:42that can come up because you tried to
24:44generalize too quickly there are a
24:46number of ways to uh to do this and a
24:48number of Concepts that could help
24:48inheritance injection this never helps
24:51uh generics even duct typing the
24:56stop it just an interface is fine enough
24:58uh the engineer is able to write
25:00software that can extend beyond what
25:01they can plan for never use inheritance
25:04like every time I use inheritance I
25:06regret it I'm using inheritance right
25:08now I found one kind of nice use case
25:09that's that's working but I rarely use
25:12it I try to use it like three times a
25:13year I always try to sharpen my
25:15inheritance sword because you never know
25:17what problem actually could be really
25:19easily solved by an inheritance but
25:21almost always is it the wrong decision
25:23almost always isn't the wrong decision
25:25just like always doing some sort of
25:27curing higher order function for
25:29everything is also the wrong decision
25:30you got to know when to do the thing you
25:33know what I mean know the thing
25:37stop making functions that return pojos
25:40that have that have functions attached
25:42to them just make an F in class okay
25:44stop being stupid so where in your uh
25:47Journey let's see so where are you in
25:48your journey are you ready to move
25:49Beyond entry level resume and give some
25:52gravity to the word engineer that you
25:54may already have in your job title
25:55become an engineer doesn't have to be uh
25:57the end but it's a great place to be
25:58let's see to go if you're ready to bust
26:00out of the Frameworks uh effectively the
26:03only thing I have to say is I love
26:04everything this article is stating uh
26:06thank you John these are all great
26:12I think you could have never made the
26:13distinction with programmer and just
26:15said practice the fundamentals as you
26:18see more problems the better you are to
26:20abstract the more times you build
26:22something from Soup To Nuts you will be
26:25able to do it better each time
26:29right and I don't really like the reach
26:31for abstraction right away reach for
26:32abstraction is dangerous don't reach for
26:36careful I I pretty much agree with 99 of
26:39this other than the abstraction part and
26:40then just terminology who cares right uh
26:43yeah yeah I love this song too that's
26:46but guess what the name is don't use
26:49inheritance agenda unless you're really
26:50sure that what you're doing is actually
26:52the right time to use it and maybe you
26:54should always try to use it a couple
26:56times a year to make sure that you know
26:57how to use it and where it actually
26:59fails so that way you can have strong
27:00talks with people and really be able to
27:03argue why it's a bad choice in this
27:05specific instance other than going
27:06inheritance is bad because that is just
27:08such a stupid take when you have no way
27:10to defend it because you heard someone
27:11on Twitter say it again