Learn rapid prototyping ⚡

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
as I've grown as a software developer I've learned that there's value sometimes in not writing perfect code I want to talk about rapidly prototyping software let's start with a y which I think boils down to that you're unsure of something and rather than commit to that thing that you're uncertain about and find out later that you've wasted a bunch of time and effort that you set out to rapidly prototype it so you could test an idea out that idea could be something as small as a chunk of code or as big as a feature or an entire product and if your prototype is successful then there's obvious value in that that you could take your prototype into a product but even if it quote unquote fails there's still value in that for one it's called rapidly prototyping so you'll be rapidly failing instead of slowly failing and you'll save time in that sense but also maybe you set out with a bunch of different ideas and you tested one of them out and it doesn't work well now you know that idea won't work and you could go try one of the other ones that you had to begin with or maybe you didn't have any ideas to begin with the Prototype probably shed some light on the path to success for you in that sense whether you succeed or you fail I think rapidly prototyping could be a win so why not always do it and I think it comes down to that you don't always question everything you do if you have to second guess every assumption you make you'll probably not make any progress so if you're reasonably certain about how to proceed you should probably just proceed the last thing I wanted to mention about why you should rapidly prototype is that if you are successful at it you've got a literal proof of concept you now know that something will work but there's also the mental aspect of proving to yourself that you can do something a lot of pieces of software are big they're complex and by biting off a portion of that and proving to yourself you can do it you might might be more motivated to continue as for how to rapidly prototype it's not really a step-by-step guide it's more of a philosophy I've written some guidelines here that I find helpful for one I treat my code AS throwaway because of the next aspect here which is to violate any possible coding principle in the name of speed there are lots of things that we keep in mind when we're writing good software proper abstractions not repeating yourself fixing bugs writing test these are things you can throw out the window completely because you need to gain that speed from somewhere in Rapid prototype and it's generally quality how you're going to do it so this doesn't just apply to coding it can also apply to your user interface any assets that you use rather than try to come up with the best possible user experience just slap a bunch of inputs and buttons on a page and call it a day same thing with assets just use placeholders or mock something up yourself and just try to get to the meat of the Prototype once you do have a prototype ready figure out did it meet your goals did it test that idea that I had at the beginning and maybe you got mostly there I I don't think it's a good idea to stick with the protot type because it's supposed to be throwaway code but if there's another 10% you need to do maybe a couple hours or another day maybe there's some user feedback you got you could iterate on the Prototype and still see if it's going to meet the needs and then essentially just repeat this Loop a couple of times not too much because the code quality is going to be pretty low then once you're done and you're pretty happy with it it's time to reincorporate it into your product and because I said that this is throwaway code I think this really means recreating that code and putting it into your product you might encounter some challenges as you try this out I certainly did and I written some of these here that I've encountered but then there are also ones that I predict you might encounter and I've got mitigations for those too this first one is certainly a difficulty for me which is wanting to write good code even though I'm rapidly prototyping it feels bad to me to ignore a bug or to hardcode a value or to copy paste blocks of code and yet that's how we gain speed by doing this so I've written this little mantra for myself which is I am purposely cutting Corners if I didn't I might be wasting a bunch of time and effort and I have to say this to myself as silly as it sounds because otherwise I think why am I doing this what if this code ends up saying the product I need to remind myself I'm rapidly prototyping the Second Challenge is that you might be addressing future requirements not requirements you have right now and I think this is a problem in any kind of software whether you're rapidly prototyping or not it's natural to want to predict what your customer or client might want but maybe that's functionality that goes unused and maybe you spent a bunch of time coding something that isn't really in need so when you rapidly prototyping it's very important to limit your scope limit your focus make sure you've got a very narrow vision of what needs to be done the next challenge is that the Prototype might get to be too large bad code is fine in small quantities and when you're rapidly prototyping the kind of time frame we're talking about here is on the order of days usually and a code base you write over the course of two or three days can probably stay entirely in your head but as you expand into weeks or months it's easy to forget what you've done a week ago or a month ago so I think it's okay to keep the code quality bad as long as the Prototype is not very large so again we have to limit this scope and focus and maybe try to cap your development at a couple days if you've ever participated in a hackathon or a game Jam they tend to do this in the rules of the contest itself they usually say two days or three days that's all you get to work on this it's a pretty good Focus for a rapid prototype the next challenge is that your prototype may not represent your final product you've cut so many corners you've used placeholder UI and assets and now you put it in the hands of customers and they're confused by it or they don't understand what's going on at that point your prototype is not serving a need anymore so I think it's good ahead of time to say here's what my goals are and try to make that objective I think this is really hard when it comes to games because what makes a game fun is sort of intangible there sound effects and music and the right assets and animations and particle effects and all these sorts of things that add to the experience and it's hard to say which one of those or which ones of those are necessary so with your prototype try to limit the scope try to come up with what you're accomplishing ahead of time so that you can evaluate it properly at the end of it the final challenge here is that you might want to reuse your prototype code and I've said repeatedly that it should be throwaway code that you should just get rid of it and you might say well what if I just review it at the end and I think depending on how much prototype code you generated it could be hard to review it all in one chunk and remember what assumptions you were making at the time so I find it's best to just totally throw it away and the ways I've accomplished this in the past I've actually written my prototype in a different language for my product so that I can't just copy paste it in or I've done it in a separate repo entirely so that I can't just make a poll request to it I think the biggest takeaway is that not all code needs to be perfect I see a lot of content out there that says here's how you can improve your code quality or here's a design pattern that you should learn and that's great there is certainly a place for that but sometimes we just need to test something and if you don't know if an idea is going to work writing high quality code will just slow you down in the process and you might end up throwing it out anyway at the end so this is another tool in your tool belt that you have rapidly prototyping just keep your focus narrow cut every corner you can and throw the code away at the end as always I hope you enjoyed the video hope you learned something from it and thank you very much for watching
Info
Channel: Adam Learns
Views: 376
Rating: undefined out of 5
Keywords: software, rapid prototyping
Id: C_yFe72S3-k
Channel Id: undefined
Length: 6min 33sec (393 seconds)
Published: Wed May 08 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.