26. How Do I Fight The Urge To Be Perfect? How Do I Know When I Am Done?

Поділитися
Вставка
  • Опубліковано 27 гру 2024

КОМЕНТАРІ • 118

  • @TheSjoerd
    @TheSjoerd 4 роки тому +14

    Also important: when copying code from Stack Overflow, rewrite it so you understand it yourself :)

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

    Some wisdom I read online a few years ago: "There are two types of code: Code that's perfect, and code that ships." It's true. I'm on our company's integrations team. While we have a development team that builds our company's products, our team is focused on implementing new customers and building custom integrations with the customer's other systems (not always code-based).
    As a self-taught dev, I know I have plenty of code out there that could have been written better by our dev team, or even by myself years later. But you know what? Some of that code has been in production driving important business processes for a decade and I haven't heard a peep from the help desk. Sure, maybe with optimizations those process could run a fraction of a second faster, but they don't need to. It's not perfect, but it works. That's what matters.

  • @JoeBonez
    @JoeBonez 4 роки тому +9

    A former boss of mine used to tell our customers “TQR - time, quality, resources - you only get to pick two”

  • @olivierlavigne5587
    @olivierlavigne5587 4 роки тому +8

    Great programmers are philosophers. Awesome video.

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

    Very accurate description of perpetual struggle and urge to make things perfect. Love the way you approach the topic. Cheers

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

    On behalf of my development team and myself, thanks a lot, Emad from Libya.

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

    wow, the timing of this video is amazing. I'm having this exact dilemma right now for my project. So much code in it that I want to rewrite.

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

      Glad I could help! Remember your Time/Cost/Quality priorities.

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

    Hi,you are awesome.i liked your videos very much..I have one suggestion.can you please add a full tutorial of Xamarin Forms?

  • @ВладКалашников-м8п

    Great videos, Tim :) Every time there is a notification I see that you talk about questions that really bothered me (or still bother) at some point of time

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

      I'm glad you find them helpful.

  • @simon-white
    @simon-white 4 роки тому

    Really helpful video Tim, it ties in nicely with your other video on estimating project completion time as it again nails down the focus on "priorities first", yet can still leave a window for quality improvement if there's slack time available.
    It partly broaches the topic of technical debt (roughly: sacrificing maintainability to meet a deadline). There's probably an inverse relationship between time given for a project and the size of technical debt. When discussing priorities, it's probably not the first thing on a customer's mind, but ease of maintenance might need to be part of that conversion, particularly if the deadline is tight.

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

      Its a balance every developer has to account for, but rarely one a client wants to pay for.

  • @osamaamir78693
    @osamaamir78693 2 роки тому

    Just the thing I needed for the day .... Thanks

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

    When you talked about the money factor for people who do private projects, i think there's an easier argument to make then as said in the video. Namely, _it costs money to live. Every day you spend on your project is another day you spend money on the primal stuff: food, warmth, shelter, etc._ So yes indeed, everyone has an hourly rate no matter what you spend that time on.

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

      That is a great observation for all aspects of our life.

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

    Thanks for giving the time to explain how to deal with trying to be perfect.

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

    This will really help me thanks

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

    Very helpful. I'm working on a project now and this motivated me 🙂 Thanks

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

    Deploy the app when its functional and redeploy or use CI/CD when a new feature has been implemented, especially for personal projects. It something I have started to do with apps recently just to get demos of my skills out there.

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

      Excellent example. Huge value in that approach for your person portfolio. Remember to do an end-to-end regression test periodically.

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

      @@IAmTimCorey I might need a refresher on where or how to learn/find end-to-end regression tests.

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

    I always struggle with this.
    Thanks for the video it was very helpful

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

    Perfect episode ❤️ thanks Tim

  • @charlesm.1638
    @charlesm.1638 4 роки тому

    An urge that I have been fighting for a long time. I always feel that I can make the application better. Great video

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

    your content is perfect trust me love you tim😍😍

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

    Outstanding topics as usual.

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

    You are a great person!

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

      Just someone that tries to help, but thank you.

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

    So real for me on this sprint. 😄

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

      That is why sprints are timeboxed.

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

    Thank you for this!! 👌

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

    I always struggle with this :D
    I was happy to see this video pop up in my notifications. Thanks, Tim!

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

    Thanks man. Great stuff. I came to similar conclusions over the years and I am glad to see someone else using this approach. Thanks for sharing and encouraging people around you! Keep it up!

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

    Hi Tim,
    great advices! This topic is my pain point number 1 😵
    I've to watch this video every day I work!!

  • @sia.sachith
    @sia.sachith 4 роки тому

    exactly what I need to hear.. thank you for this

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

    Thank you TIM !!

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

    Things on my priority list:
    1. Make stuff actually work
    2. Make stuff work good

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

      What if step 2 requires starting from scratch?

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

      @@jokinglimitreached1503 See step 1.

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

      @@darthfikus5206 Step 1 doesn't help step 2, if the code is fundamentally broken

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

      @@jokinglimitreached1503 Au contraire, if code is broken step 1 is just the remedy.

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

      Can be an endless loop.

  • @shailesh.kharche
    @shailesh.kharche 3 роки тому

    Great explanation 🙂👍 This was necessary as it comes from a developer.

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

    thanks tim!

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

    This is great topic and excellent video. I love to hear your thoughts on Agile in general.

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

      Thank you! I added that to my list of suggestions

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

    I think the way to keep quality and speed is to reduce the number of requirements. Less functionalities, same quality = less time, same quality.

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

      it is a balancing act. Success come to those that do it well and keep the customer happy.

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

    Hi Tim,
    I just started watching your awesome videos 3 days ago they are really amazing.
    I hope you talk about the security "Security Headers, Authentication and Authorization, SQL Injection,...and other security topics" and how to handle them to make our app as secure as possible.
    Thanks

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

      Security is hugely important and I discuss it often, but I will add your suggestion to my list. Check these out - ua-cam.com/video/rFncI9yfY-E/v-deo.html; ua-cam.com/video/9QU_y7-VsC8/v-deo.html; ua-cam.com/video/kpSwmLlMu9E/v-deo.html

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

    One of the points of the Agile movement is the definition of "Done". You need the criteria (sometimes defined via ATDD or BDD) to know when you must end, then once your application passes all those criteria, it's finished. While you reach that point you can also use the MVP or minimum viable product technique of Lean methodology, showing the client your advances in functional prototypes to learn whether what the client asked for is actually what he wants. Agile assumes there will be changes even with a signed paper so it embraces them, trying to detect them as quickly as possible so that any costly modification can be estimated and dealt with it correctly.
    You might get the money if you stick to the signed paper conditions but if the client is unhappy with your work because you decided to just appear on the last day with the fully working program and he doesn't like what he sees, he won't call you again.
    Which leads to my main problem with freelancer programmers, they usually don't care about technical debt: the important thing is to finish in time, deliver the product and move on. They are never forced to learn to refactor, they don't even need to know good practices, as even by brute force you can get a first working release. Compare that to in-house teams who have to deal with the code for years and where technical debt actually accumulates interest and has to be paid from time to time in order to continue working.

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

      Good points. Remember, even in agile, changes cost time and money. If the product owner keeps making changes such that you don't get to the other "required" features, then you won't reach the MVP even near the targeted delivery dates. All changes have to be assessed based on the value they add verses the cost and impact on the target date for 'Done'.

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

    Hi Tim, thanks again for a great video. Just wondering if you have any upcoming Blazor videos planned?

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

      I won't commit to specifics, but stay tuned.

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

    Thanks for the great content

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

    Great advice!

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

    Nice.. thanks ❤️

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

    great video !! Thank you

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

    This is a difficult topic!
    I have found a line in the sand that works. Often when I am writing a client-specific solution, it leads to the business case for a commercial version of the product. In this case, that insight can be documented in code with ToDo tasks prioritized as "future development". There is never enough time to spin this off into external documents.
    Comments can become a line in the sand that can stop the temptation of feature creep...

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

    Please make a video about the importance of Data Structure and Algorithms for a Developer and basically how we can learn DS and Aglo. By the way, you are doing an awesome job. Love!

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

      There are lots of online courses to practice this, try taking one. The practical Visual Studio knowledge that Tim teaches is targeted towards real-world issues not discussed anywhere else. Complicating the lessons with data structure and analysis would create a learning wall for new developers...

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

      Added to my suggestions list.

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

    Hey Tim, I love your videos and I'd like to submit a video idea:
    How to comprehend with unexpected problems in development?
    Just to give an example, for the last month I've been working on refactoring a .Net Core - mongodb file management system that is using fs for file storage.
    I've encountered everything - learning a new framework (NestJS), migration scripts, cross-support (some dumbasses at work hooked the old file managment system up to a new product, so i had to ensure nothing hits the fan over there), changed api, host os migration...
    And this took A LOT of time. Much more than I expected to make it perfect and it can still improve in my mind.
    So do you have any advice on dealing with stuff like this?

  • @colin-campbell
    @colin-campbell 4 роки тому +3

    Unrelated to the video (sorry but too excited not to share), I start my first software developer position on December 14th! Unfortunately the tech stack is Angular and NodeJS but I’ll still keep an eye on C# developments 😉.
    Thanks Tim for the software engineering practices you’ve taught me throughout the years, it absolutely helped me nail this job.

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

      Awesome! Congratulations! I hope you love it.

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

    Hello Tim, do you have practical experience with the actor model? I have been using Akka.NET in my projects for some time, both in the backend and frontend area (fat clients based on C#/WPF). In my opinion, this is a fantastic runtime for all kinds of .NET applications, of course especially when issues such as concurrency, scalability, redundancy and resilience are important (but not only). Nevertheless, compared to many other topics in the community, surprisingly little attention is paid to this topic, not even here on UA-cam and also not in the context of micro service architectures. It seems to have only been a relatively exotic side issue for many years. Why is that? What is your opinion? A video on this topic would be a great thing! Thank you! Cheers, Felix

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

    Whats your opinion in asp boilerplate or similar frameworks?

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

      They can be great if you know what they are doing and agree with their choices.

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

    Many thanks for your tip, i have the same problem and I'm always deliver my work late and spent too much time while trying to be perfect :( and i can't quit this hobbit

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

      You can do it! I hope my talk helps you get there.

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

      @@IAmTimCorey I hope so, many thanks for you

  • @سعيدأمير-و7ق
    @سعيدأمير-و7ق 4 роки тому

    Man, That came on time ... I just have started a project and I am banging my head in the wall trying to figure out the perfect clean architectural way to do it... that bugged me for the whole day without even starting...
    With that being said, I would appreciate if you can answer this question cuz curiosity is killing me at the moment
    So in a "WPF MVVM with EntityFramework Project":
    in a three-layer architecture we got, Ui ( Consists of View, ViewModel), BL (Models, ... maybe something else) (DA, ...)
    After long research, I found people doing CRUD operations in ViewModel, Which is something I don't understand (some people debate it should be in Model) ... if I want to adjust the data before I save it in the database shouldn't I do that in the BL layer ... and what should be in DA layer in case of EntityFramework... I found the DA layer probably nonexistent cuz EntityFramework does all the magic ... and Also if DA has some Code does it directly give it to ViewModel or to BL First, then BL handles it to the ViewModel?

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

    I'm so glad to hear you are a self-talker developer too 😂

  • @King-Merlin
    @King-Merlin 4 роки тому

    Any good app stores you know of for hosting apps apart from the big three?

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

    Most of the time (not all the time) is useless to teach these topics to beginners because they think they can defy everyone, so they prefer to take the long path and start to really appreciate this information down the road.

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

      Please, say that it is not so! LOL ... I believe its worth sharing, even if just to plant the thoughts for that future you speak of.

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

    11:50 thumbs up

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

    We called that Developer Gold Plating.

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

    👍