Is your generalization actually procrastination?

Поділитися
Вставка
  • Опубліковано 21 лис 2019
  • 💛 Brilliant (Episode sponsor)
    Interactive courses on computer science.
    Use link to get 20% off annual subscription: brilliant.org/fff
    📝 Episode notes
    A little chat on when generalising code becomes a device for procrastinating.
    💛 Follow on Twitch and support by becoming a Subscriber
    We record the show live Mondays 7 AM PT
    / funfunfunction
    💛 Fun Fun Forum
    Private discussion forum with other viewers in between shows. www.funfunforum.com. Available to patron members, become one at / funfunfunction
    💛 mpj on Twitter
    / mpjme
    💛 CircleCI (Show sponsor)
    Robust and sleek Docker-based Continuous Integration as a service. I used CircleCI prior to them becoming a sponsor and I love that their free tier is powerful enough for small personal projects, even if they are private. Use this link when you sign up to let them know you came from here:
    circleci.funfunfunction.com
    💛 Quokka (Show sponsor)
    Wonder how MPJ evaluates JavaScript inline his editor. Quokka is the answer - use this link when you buy to let them know you came from here:
    quokka.funfunfunction.com
    💛 Wallaby (Show sponsor)
    Wallaby.js runs your JavaScript tests immediately as you type and displays execution results in your code editor. It is insanely fast, because it only executes tests affected by your code changes and runs tests in parallel. Let them know you came from us by using this link:
    wallaby.funfunfunction.com
    💛 FUN FUN FUNCTION
    Since 2015, Fun Fun Function (FFF) is one of the longest running weekly UA-cam shows on programming 🏅 thanks to its consistency and quality reaching 200,000+ developers.
    🤦‍♂️ The Failing Together concept is what makes FFF unique. Most coding content out there focus on step-by-step tutorials. We think tutorials are too far removed from what everyday development is like. Instead, FFF has created a completely new learning environment where we grow from failure, by solving problems while intensively interacting with a live audience.
    Tutorials try to solve a problem. Failing Together makes you grow as a developer and coworker.
    📹 Each show is recorded live on Twitch in a 2-hour livestream on Mondays. The host, assisted by the audience, is tasked to complete a programming challenge by an expert guest. Like in the real world, we often fail, and learn from it. This, of course, reflects what the audience identifies with, and is one of the most praised aspects of the show.
    ⏯ On Fridays, an edited version of the show is adapted for and published on UA-cam.
    Content Topics revolve around: JavaScript, Functional Programming, Software Architecture, Quality Processes, Developer Career and Health, Team Collaboration, Software Development, Project Management
  • Наука та технологія

КОМЕНТАРІ • 44

  • @cichy187
    @cichy187 4 роки тому +2

    Where can I find MPJs live streams ?

    • @jasonjara3453
      @jasonjara3453 4 роки тому +2

      He's live on twitch. More info in the description

    • @cichy187
      @cichy187 4 роки тому +1

      ​@@jasonjara3453 thank you

  • @InfallibleCode
    @InfallibleCode 4 роки тому +18

    The idea that writing code, in general, is an expensive way to solve a problem was a real eye-opener for me. I always took for granted that, as a software developer, I could just bang out some code to automate anything I wanted. But in reality, that's usually a poor use of your time. The revelation made me realize that I was spending so much time writing code because it felt good to do something in my wheelhouse and allowed me to put off harder tasks that I was anxious about.

    • @pjpodx
      @pjpodx 4 роки тому

      meh, it feels good though :)

    • @HinaTan250
      @HinaTan250 4 роки тому

      It's interesting. I am someone who finds programming fun and has studied multiple languages. But, I have only made one or two small complete programs.
      A big reason I haven't really made anything, despite having lots of ideas that could benefit me personally is this exact reason.
      The amount of time it would take to create something out weighs using a crappy alternative method.

  • @davidurbina6555
    @davidurbina6555 4 роки тому +4

    "You can never prevent shit from hitting the fan. You can only be good at cleaning it..." - MPJ 2019

  • @ethancalvert8083
    @ethancalvert8083 4 роки тому +3

    Holy geeze, this was spot-on. I came for the generalization=procrastination, but stayed for planning/proto-type/TDD-inertia discussion. Well said!

  • @justmeandmy
    @justmeandmy 3 роки тому

    My strategy has been to consider what is the class of problem you're trying to solve and consider what pieces are specific to your use case and which are just variables the app can generalize to.
    For example - lets say you have a "habit tracker" backend . you could store (date, bool) tuples. The general class of problem there is a dated data blob. Maybe use a (date, json obj)? Now your backend supports checkmarks, counts, durations, note/comment log taking etc. Essentially 0 additional cost compared to making it over narrow.
    Engineers with seniority will often gain an instinct for these things as you get used to building an over specific app and then having the Product manager say next quarter "Can we add X" ? And you find yourself dumbfounded at how it takes a quarter to add something that would have been identical work if you had known up front.
    tldr - Don't code yourself into a corner by being overspecific

  • @Sofieew
    @Sofieew 4 роки тому +1

    All of this is EXACTLY what I needed to hear right now. I'm definitely stuck at planning, for a hobby project but still... it sucks. It's this perfect product in my mind so I feel like I have to plan everything "in i minsta detalj" to meet my own expectations on it and keep on planning because I keep feeling like I would under-deliver. I've already made a extensive and fully functional prototype like 1,5 year ago but now I'm stuck for trying to think up every single possible situation to handle and have perfect architecture with perfect code from line 1. Unrealistic expectations.

  • @TheMarouuu
    @TheMarouuu 4 роки тому +2

    "Paralysis by analysis" is real!
    I've been thinking about the same thing for a while now ( the irony :D )

  • @TashaYasha
    @TashaYasha 4 роки тому

    I'm going to be honest, it's been a while since one of MPJ's ramblings has hit home with me like this has! Good video!

  • @sibi40
    @sibi40 4 роки тому +3

    Perfect video to start the weekend ✌️👌

  • @jordanayala7502
    @jordanayala7502 4 роки тому +5

    “Premature optimization is the root of all evil”

  • @ekings2119
    @ekings2119 4 роки тому

    Thank you so much for sharing this... As I work on my first professional project, I find myself doubting every other line of code I write. Thanks for the indirect/direct encouragement.

  • @MrBoogerblood
    @MrBoogerblood 4 роки тому

    Thanks for the video and all that you do. I appreciate it.

  • @krtong
    @krtong 4 роки тому

    Holy shit i needed this video literally right now.

  • @sinyolinuxozy
    @sinyolinuxozy 4 роки тому

    another insight about procrastination, thanks MPJ

  • @insertoyouroemail
    @insertoyouroemail 4 роки тому +1

    This video is amazing. I can't stress enough how keeping shit simple will tend to yield you maintainability, performance and scalability. I used to get stuck in "analysis paralysis" until I one day decided I'm just going to allow myself to repeat myself and not worry about abstractions. My original intention was actually to see where the common patterns would emerge until I realised there may not have been any common patterns or even if there was, it was fine leaving the code as it is. It was one of the bigger breakthroughs for me. The other was working with JavaScript (which I hate incidentally) together with a super junior who barely understood what a function was. In order to keep him productive along with me, I decided to keep everything as simple as possible and not do any overly clever solutions and actually remove old clever code that the previous developers had left. The application gradually became stable and fast. Even though it was a tough time for me working with tech I hated, I learned a very important lesson that I take with me everywhere now. I doubt I would've learned this on my own.

  • @DanKaschel
    @DanKaschel 4 роки тому +1

    Loves this topic. I'm very prone to this, but haven't recognized it as a problem because I do (IMO) produce very good/flexible code. But I do struggle to do rapid prototyping.
    That said, sometimes abstraction is a way for me of simplifying a problem, and making it flexible means I don't need to plan my entire solution immediately. This isn't an argument for anything in particular, just a perception I thought was relevant.

  • @vorname1485
    @vorname1485 4 роки тому

    Common error is also writing programs as if they are libraries that are going to be reused under different conditions. Most generalizations are waste of time. Ask yourself: do I write a library, or a specific program? Another time burner is when you try writing defensive code and prevent errors but its simply not possible to do so 100% due to lack of language features or similar reasons.

  • @conoroflanagan2908
    @conoroflanagan2908 4 роки тому

    Over abstraction is the current pain i have for the past year, it's killing my soul.
    Also I'd love to hear your opinion on web and app development and if it's going away since the top platforms are taking over everything. Is what "programming" is beginning to change again. First systems a bit and bytes, then desktop, then web and apps, and then -> ??? Whats next

  • @pjpodx
    @pjpodx 4 роки тому +1

    yo MPJ I like your hair colors, is this somehow related to video seasons , so I can quickly recognize where episode belongs to :) (jk) ?

  • @MichalBystricky
    @MichalBystricky 4 роки тому

    This is VERY VERY TRUE. Every software engineer should watch this video.

  • @noidar
    @noidar 4 роки тому

    Did you start a full time job as a developer ?

  • @SMOKE3104
    @SMOKE3104 4 роки тому

    I have an idea for more content, and it would definitely help me out. Can you do the "Daily Coding Problems" by Alex Miller. Maybe just a few examples done in a functional way.... Especially the first one problem. If you like, I can send you a copy!

  • @benfurstenwerth
    @benfurstenwerth 4 роки тому

    I don't know what happened, but I'm fucking loving the last few videos mpj!
    Your prototype needs to be trash so you can throw it away! Not your words verbatim, but still...I love the depth of psychology in that! Brilliant.

  • @imrannazir6931
    @imrannazir6931 4 роки тому

    Love the hair colour. Suits you 👌

  • @mybigbeak
    @mybigbeak 4 роки тому

    One reason I write generic solutions when a fixed type solution would work is because the fixed solution has at type that's a pain to write , but is way simpler.

    • @funfunfunction
      @funfunfunction  4 роки тому

      This actually very nicely reflect one of the big problems I have with type systems, they often incentivise you to write more complicated code than you actually need.

    • @hwilliampolenz6713
      @hwilliampolenz6713 4 роки тому

      (edit, not replying to anyone in particular) If you take a good hard look at Python vs C++ you can see that idea of "inertia" at play. Often times you DON'T want so much freedom as with something like Python because it can be extra-ordinarily easy to change the code and make things incomprehensible for everyone that touches that code. On the other hand, developing in C++ may take you nearly 5x the development time as there is so much overhead associated with the constructs of the language itself. In this case, by the way, Python is dynamically typed ("less inertia") and C++ is statically typed ("more inertia"). In both cases, too, you have mutability which will often cause unknowable (edit future) bugs.

  • @erichmenezes621
    @erichmenezes621 4 роки тому

    oh, this reminds me all the times we turned spikes into actual stories because the implementation was ok-ish. 💩 very nice insights, MPJ!

  • @wallacesantos0
    @wallacesantos0 4 роки тому

    And here am I... procrastinating by watching this video about procrastination.

  • @pillmuncher67
    @pillmuncher67 4 роки тому +1

    I don't understand. Making something more flexible, more general or more abstract aren't necessarily the same thing. Something is more flexible if it can deal with more special cases of a problem. Something is more general if it can deal with different but related problems. Something is more abstract if it can deal with seemingly unrelated problems that share a relevant common structure -- abstraction is often the means by which to detect common structures. Monads come to mind. At least, that's how I like to think about these things.

    • @funfunfunction
      @funfunfunction  4 роки тому

      Yeah, I think this is fair enough. Flexible doesn't necessarily mean more general - you can just add more if statements and duplication to your function for example. I think that a general solution is always abstract though.

  • @hwilliampolenz6713
    @hwilliampolenz6713 4 роки тому

    I recently had an experience at my job in which I needed to re-write some code in order to make it more flexible.
    (edit)
    Mhm, I can relate to this question. I have found that re-factoring your code to account for more flexibility as the need arises is a better approach than trying to optimize for flexibility from the start. You should know HOW to make the code more flexible, though, but should not force it unless you have good reason to!
    (edit 2) By the way, the general solution to deal with timezones is to force everyone to use GMT time. I work on systems that are spread across the globe and I cannot express how much impact simple timezone changes have had in terms of time and resources spent on trying to assuage those issues. I would gather that the company I work for would have saved millions by now if they simply standardized everything to be measured in GMT time.
    (edit 3) You can find my dirty, buggy, and awful Twitch overlay program here github.com/hwXYZ12?tab=repositories . You can take from it whatever you want and ask any questions you want. As of the moment, it's extremely rudimentary but it does some of what you might want. I coded it up many years ago and haven't touched it since it's buggy and confusing and I probably did a miserable job and I'm not making any money improving it (and it feels weird writing that for others to read).

  • @dallas-cole
    @dallas-cole 4 роки тому +2

    Can you express your hair color in hex please?

    • @dallas-cole
      @dallas-cole 4 роки тому

      I mean the average color without having in mind the light and shadows that makes it look like a gradient.
      :D

  • @levisaidmyname
    @levisaidmyname 4 роки тому

    That hair tho

  • @CanRau
    @CanRau 4 роки тому

    Dirty coding can be so much faster getting a MVP/POC running 🥳😅