"You don't use version control in REAL projects!" (Software developer war stories with Sean May)

Fun Fun Function · Advanced ·🌐 Frontend Engineering ·6y ago

Key Takeaways

Shares war stories about software development with Sean May, including version control

Full Transcript

hello everyone I'm recording this just before I go on vacation and if you're watching this you're about to watch a little summer short a little cutout from one of the live streams that has not previously been shown on YouTube have a nice summer hair ready for like going out into like the five minutes of summer that Sweden provides that's a downside of living in Sweden I'm gonna release one video in the beginning of the week this one and you're also gonna get a second one a little bit later in the week if you've got to be sort of working this summer and learning some react hooks baby you're gonna appreciate this week's sponsor it's Tyler McGinnis let me read you their pitch Tyler McCain has launched their first react course in 2016 and it's now been taken by over 80,000 students with an average rating of 4.8 out of 5 they're brand new react and react hooks courses just launched and will teach you everything you need to know about writing react in 2019 if that is something that is interesting to you use the link in the episode description when you get the course so that they know that you came from here thank you so much Tyler McGinnis now onto that clip what does my day-to-day work look like what is my tech stack or what is your favorite project you've ever worked ooh ooh so I can't necessarily speak about specific things necessarily my my day-to-day work sort of looks like whatever it needs to that there was a there was a call that I had at you know at the end of the day with somebody in another department at my company that said hey this this other highly technical individual who usually does architecture pre-sales had to be at another client can you show up two cities over at 9:00 in the morning and and number this by the way here it is the request for proposal and here is the slide deck that we're using and see what you can do to memorize that and I said of course I can I will see you at 9:30 so my day to day sort of changes based on the day the the current the current project is pretty steady it's a it's a website and I guess we're using Gatsby and a net laugh I for hosting and we're touching ghosts and and a couple of other things that we're integrating with prior to that angular I I've done trainings in angular I've done a little bit of you and then whatever the client is running so there's a client that we had that had some c-sharp c-sharp 2 or C sharp 3 I guess mobile notice 8 oh my god yeah I think that I might go to c-sharp 3 like way back in the day yep that's interesting yes it's how do you deal with when you approach like a very old code base like that like I like I I remember like one time where like I'm I'm a person who is I'm vehemently against rewrites I think that the program has reached for the rewrite the rewrite tool way too fast and just leads you into this that you where you're maintaining two code bases at the same time which is horribly expensive and could possibly not be worse than refactoring the old code base however I ran into one case they there was an absolutely mission-critical little app that process database rows and a in the inner catalog companies it was like the pipeline for like getting from order to the actual printed catalogue this was quite a while ago great it was a little binary like little binary that did this and the source code for it was lost okay but I have the binary so what I did was I just fed it like a ton of different like database rows and I just like re in G like reverse engineered it from that just figure out wrote a unit test for every single thing and then eventually like I just ran it gradually ran it against like the the output files as tests and just figure out like one error by one or until until I had to figure out it like for legacy code project it was the most fun I've ever had it was like solving some kind of obscure game problem was and like yes like gradually it's really satisfying really yep I yeah it all it all depends so some of that reverse engineering but usually when I when I hear rewrite I will frequently feel the urge to rewrite many times yes but the urge comes from usually people baking too much stuff inside of functions rather than outside of functions so if the whole system is engineered in such a way that you've got and if followed by a for loop followed by a switch followed and followed by a for loop and then you have written your code in here then when you're asked to you know modify that oh well okay I'm just gonna copy everything at at this switch case and I'm just going to move that into an if-else and and then rewrite the one line that actually changes in this if case and I've seen a few thirty thousand line long files that that go that way and it's usually at that moment where I feel I should rewrite this and then I do and it turns out that it's five hundred lines of code and thirty thousand lines of I burying the actual code like Ronan asks what do you mean by banking stuff inside of function versus outside of functions what was it like do you feel like that answered your question running or like can we elaborate more on that was that sort of what you explained not racial hmm yeah it's so it extends a little further than just logic cool so it also extends into dependency inversion in general so rather than importing your database into the file that you're using and then not being able to test the file because it only works on the production database you should expect to construct a thing which takes an instance of a database or takes a takes a repository that wraps the database so that you don't have to care that it's a database and I'm not saying that you should do this for we like to do app but when you're dealing in larger enterprise applications where you expect there are going to be a whole lot of people working in this code setting up those those boundaries where you can prove that I pass a test version of this user gator into the service that gets users and the right thing happens versus 200 people have made commits to this 30,000 line file that that calls to the production URL to get users and then transforms it by the time it gets to the react layer yeah yeah it's great uh as long as it works and then like it takes um it's very very hard to hunt down something in that yeah Oh foreplay says at work we had a large legacy job of 1.3 application that our team inherited the deployment took several hours and had to be performed during the night the way it was set up it was not possible to perform a rollback good times yeah oh I love the war stories yeah it was I I had like worked at this consulting company that intern work for a very large beverage organization and they had this this huge deployment thing that like that had in order to like ensure that nothing went wrong and it was kind of like just adding sick like security upon security upon security until it really didn't make sense so they had like a test and then they had a staging and then they are the staging to and then they had then they had production and I think there was something in between those two as well and they had somehow rationalized that there says that this was sensible and we were referring to the deployments system as launching launching the launching the space ship because there's so many insane amounts of steps and there were like there was like these F sync scripts involved and I've had to like get right fast and like wow gif deployments is such an incredible step forward to what what we used to have yep there were and I think all of this ended up speaking to my love of functional programming later down the line but there were a one company that I worked that had three major servers to serve most of the most of the world and so when it deployed it deployed through SCP they would SCP files to each one of these servers and it was to the point where you know you could copy the files from one server to the from wherever you were deploying it to each server but the server's could not under any circumstance come down because we couldn't get them to rebuild successfully and it was at that point before I even joined the company but so there's a fun bug there's a fun bug that happens when you make your server work through only copying files over onto the server which is to say that it doesn't account for any files that you have deleted Oh statefulness yes if it's anything that we have learned from like in the last its I in the last ten years is that the more state you have the the more problems you have about divorce day sure but then again if you don't have any state then our don't have now exactly you're just yeah it's your computer is just churning warm well I mean in my case the lights are giving it a run for its money yeah yeah Ronan says I may or may not have done that SP deployment process back when I was a sysadmin before I really understood anything but I mean like oh boy yeah but I mean it's fine like the industry learns I mean I like I developed things before subversion sort of was a thing like version control reach the industry like around the time when I was a like started to work in professional programming and there was also like subversion which was a huge improvement on top of what sickle sourcesafe now was just so hard like you would check files out and then nobody could move there and like touch them so you have to go over to people and ask them to um like check in there check in the files before you did things yep the earliest form of version control I used was sending out emails to say nobody else touch the index file on production I am editing it right now that's lovely we also had I had a colleague who worked at a mobile phone company that shall remain on and it was consultant there and he had had this tech tech lead there that he was interacting with and this was a tech lead so this was not like some manager person who's not like this was an engineer and this engineer told him very sternly like in a fatherly fatherly kind of fashion is that you don't use version control on real projects he considered because he could see the dark version control to be like this newfangled thing that like it was just this I'm an academic that somebody has decided it's like that people should use you for an illusion of security but in in practice it was just like this X like this extra work that didn't pay off yep so like as an industry we definitely move forward and like find things to find things to constantly make us better and I don't think that we should be ashamed of the people we are I think we should be proud of how far we have become how far we come if that's that's really it it's it's learning and sometimes it's learning through you being the person that burns your hand on the stove and sometimes it's learning through having somebody who's been there saying oh don't don't touch that that that's kind of hot or you know in in worst cases actually the one that I prefer working in these days is okay you can you can touch the stove just don't juggle the chainsaws leave that leave that to me thank you so much for watching don't forget to check out our sponsor Tyler McGinnis link in the episode description really good to react hooks course among other things you watched a little clip from a live stream if we were check out us live you can do so at which dot TV slash fun fun function we're not streaming right now but we will start doing that after my summer break so make sure you go there twitch.tv slash fun fun function and hit that little follow button so that you'll get a notification in the twitch app when we go live next time if you want to watch some more clips showing what fun fun function is about click this playlist here or if you're ready just click Subscribe here if you already sold I am mbj don't miss the clip next week

Original Description

💛 Learn React Hooks at TylerMcGinnis.com - 25% off this week! http://tmg.funfunfunction.com This is a discussion that took place during the live stream part not previously seen in the full video on TRANSDUCERS. You should watch that as well because Sean is a very good tutor! 🎥 Full Video: Transducers https://www.youtube.com/watch?v=xcGbhU_DtRg 💛 Sean May on Twitch https://www.twitch.tv/theoryinmotion 💛 Follow on Twitch and support by becoming a Subscriber We record the show live Mondays 7 AM PT https://twitch.tv/funfunfunction 💛 Fun Fun Forum Private discussion forum with other viewers in between shows. https://www.funfunforum.com. Available to patron members, become one at https://www.patreon.com/funfunfunction 💛 mpj on Twitter https://twitter.com/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: https://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: http://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: http://wallaby.funfunfunction.com 💛 FUN FUN FUNCTION Since 2015, Fun Fun Function (FFF) is one of the longest running weekly YouTube 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 tutor
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Fun Fun Function · Fun Fun Function · 0 of 60

← Previous Next →
1 Higher-order functions - Part 1 of Functional Programming in JavaScript
Higher-order functions - Part 1 of Functional Programming in JavaScript
Fun Fun Function
2 Map - Part 2 of Functional Programming in JavaScript
Map - Part 2 of Functional Programming in JavaScript
Fun Fun Function
3 Reduce basics - Part 3 of Functional Programming in JavaScript
Reduce basics - Part 3 of Functional Programming in JavaScript
Fun Fun Function
4 Destructuring: What, Why and How - Part 1 of ES6 JavaScript Features
Destructuring: What, Why and How - Part 1 of ES6 JavaScript Features
Fun Fun Function
5 Reduce Advanced - Part 4 of Functional Programming in JavaScript
Reduce Advanced - Part 4 of Functional Programming in JavaScript
Fun Fun Function
6 Closures - Part 5 of Functional Programming in JavaScript
Closures - Part 5 of Functional Programming in JavaScript
Fun Fun Function
7 Too many tools and frameworks!
Too many tools and frameworks!
Fun Fun Function
8 Currying - Part 6 of Functional Programming in JavaScript
Currying - Part 6 of Functional Programming in JavaScript
Fun Fun Function
9 Recursion - Part 7 of Functional Programming in JavaScript
Recursion - Part 7 of Functional Programming in JavaScript
Fun Fun Function
10 Promises - Part 8 of Functional Programming in JavaScript
Promises - Part 8 of Functional Programming in JavaScript
Fun Fun Function
11 Staying relevant as a programmer
Staying relevant as a programmer
Fun Fun Function
12 Factory Functions in JavaScript
Factory Functions in JavaScript
Fun Fun Function
13 Composition over Inheritance
Composition over Inheritance
Fun Fun Function
14 Software needs to be better - FunFunFunction #1
Software needs to be better - FunFunFunction #1
Fun Fun Function
15 Unit testing: How to get your team started - FunFunFunction #2
Unit testing: How to get your team started - FunFunFunction #2
Fun Fun Function
16 Straight-line code over functions - FunFunFunction #3
Straight-line code over functions - FunFunFunction #3
Fun Fun Function
17 Clojure - FunFunFunction #5
Clojure - FunFunFunction #5
Fun Fun Function
18 The growth stages of a programmer - FunFunFunction #6
The growth stages of a programmer - FunFunFunction #6
Fun Fun Function
19 5 tips to quickly understand a new code base - FunFunFunction #7
5 tips to quickly understand a new code base - FunFunFunction #7
Fun Fun Function
20 Semicolons cannot save you! - FunFunFunction #9
Semicolons cannot save you! - FunFunFunction #9
Fun Fun Function
21 Functors - FunFunFunction #10
Functors - FunFunFunction #10
Fun Fun Function
22 Functors: I was WRONG! - FunFunFunction #11
Functors: I was WRONG! - FunFunFunction #11
Fun Fun Function
23 Questions and Answers - FunFunFunction #12
Questions and Answers - FunFunFunction #12
Fun Fun Function
24 Streams - FunFunFunction #13
Streams - FunFunFunction #13
Fun Fun Function
25 Prototypes in JavaScript - FunFunFunction #16
Prototypes in JavaScript - FunFunFunction #16
Fun Fun Function
26 Fast or Flexible? - FunFunFunction #17
Fast or Flexible? - FunFunFunction #17
Fun Fun Function
27 Coders are herd animals - FunFunFunction #18
Coders are herd animals - FunFunFunction #18
Fun Fun Function
28 Weekend Kubernetes Shenanigans - FunFunFunction #19
Weekend Kubernetes Shenanigans - FunFunFunction #19
Fun Fun Function
29 Monad - FunFunFunction #21
Monad - FunFunFunction #21
Fun Fun Function
30 Moar Weekend Shenanigans - FunFunFunction #23
Moar Weekend Shenanigans - FunFunFunction #23
Fun Fun Function
31 Questions and Answers - FunFunFunction #24
Questions and Answers - FunFunFunction #24
Fun Fun Function
32 Losing motivation - FunFunFunction #25
Losing motivation - FunFunFunction #25
Fun Fun Function
33 LONGEST KUBERNETES SHENANIGANS! - FunFunFunction #26
LONGEST KUBERNETES SHENANIGANS! - FunFunFunction #26
Fun Fun Function
34 Fast code is NOT important - FunFunFunction #27
Fast code is NOT important - FunFunFunction #27
Fun Fun Function
35 Pair Programming a Facebook Messenger Bot - FunFunFunction #28
Pair Programming a Facebook Messenger Bot - FunFunFunction #28
Fun Fun Function
36 Writing unit tests for personal projects? - FunFunFunction #29
Writing unit tests for personal projects? - FunFunFunction #29
Fun Fun Function
37 Let's Code a Pomodoro Button - FunFunFunction #30
Let's Code a Pomodoro Button - FunFunFunction #30
Fun Fun Function
38 What editor do you use? - FunFunFunction #31
What editor do you use? - FunFunFunction #31
Fun Fun Function
39 Arrow functions in JavaScript - What, Why and How - FunFunFunction #32
Arrow functions in JavaScript - What, Why and How - FunFunFunction #32
Fun Fun Function
40 Is Programming Art? - MPJ's Musings - FunFunFunction #33
Is Programming Art? - MPJ's Musings - FunFunFunction #33
Fun Fun Function
41 Generators in JavaScript - What, Why and How - FunFunFunction #34
Generators in JavaScript - What, Why and How - FunFunFunction #34
Fun Fun Function
42 Haskell Basics - FunFunFunction #35
Haskell Basics - FunFunFunction #35
Fun Fun Function
43 Haskell - Baby's first functions - FunFunFunction #36
Haskell - Baby's first functions - FunFunFunction #36
Fun Fun Function
44 Is Big O relevant to you? - Q&A Part 1 - FunFunFunction #37
Is Big O relevant to you? - Q&A Part 1 - FunFunFunction #37
Fun Fun Function
45 How much are you allowed to Google? - Q&A Part 2 - FunFunFunction #38
How much are you allowed to Google? - Q&A Part 2 - FunFunFunction #38
Fun Fun Function
46 Haskell lists - FunFunFunction #39
Haskell lists - FunFunFunction #39
Fun Fun Function
47 var, let and const - What, why and how - ES6 JavaScript Features
var, let and const - What, why and how - ES6 JavaScript Features
Fun Fun Function
48 Why are some programming languages popular? - MPJ's Musings  - FunFunFunction #41
Why are some programming languages popular? - MPJ's Musings - FunFunFunction #41
Fun Fun Function
49 Does a developer need to be nice? - MPJ's Musings - FunFunFunction #42
Does a developer need to be nice? - MPJ's Musings - FunFunFunction #42
Fun Fun Function
50 bind and this - Object Creation in JavaScript P1 - FunFunFunction #43
bind and this - Object Creation in JavaScript P1 - FunFunFunction #43
Fun Fun Function
51 Examples of this and bind - Object Creation in JavaScript P2 -  FunFunFunction #44
Examples of this and bind - Object Creation in JavaScript P2 - FunFunFunction #44
Fun Fun Function
52 Prototype basics - Object Creation in JavaScript P3 - FunFunFunction #46
Prototype basics - Object Creation in JavaScript P3 - FunFunFunction #46
Fun Fun Function
53 Separation of concerns RANT - MPJ's Musings - FunFunFunction #47
Separation of concerns RANT - MPJ's Musings - FunFunFunction #47
Fun Fun Function
54 Cellular Automata - Pair Programming - FunFunFunction #49
Cellular Automata - Pair Programming - FunFunFunction #49
Fun Fun Function
55 The 'new' keyword - Object Creation in JavaScript P4 - FunFunFunction #50
The 'new' keyword - Object Creation in JavaScript P4 - FunFunFunction #50
Fun Fun Function
56 __proto__ vs prototype - Object Creation in JavaScript P5 - FunFunFunction #52
__proto__ vs prototype - Object Creation in JavaScript P5 - FunFunFunction #52
Fun Fun Function
57 Unity game pair programming - Let's code - FunFunFunction #53
Unity game pair programming - Let's code - FunFunFunction #53
Fun Fun Function
58 Throw out your tools - MPJ's Musings - FunFunFunction #54
Throw out your tools - MPJ's Musings - FunFunFunction #54
Fun Fun Function
59 Unit tests vs. Integration tests - MPJ's Musings - FunFunFunction #55
Unit tests vs. Integration tests - MPJ's Musings - FunFunFunction #55
Fun Fun Function
60 Object.create - Object Creation in JavaScript P6 - FunFunFunction #57
Object.create - Object Creation in JavaScript P6 - FunFunFunction #57
Fun Fun Function

Related Reads

📰
React Introduction
Learn the basics of ReactJS and how to build dynamic user interfaces with this popular JavaScript library
Dev.to · Karthick (k)
📰
Why SnapDOM Beats html2canvas for DOM-to-Image Capture
Learn why SnapDOM outperforms html2canvas for DOM-to-image capture and how to use it in your frontend projects
Dev.to · Juan Martin
📰
I built 42 landing page templates as single HTML files (no npm, no build step)
Learn how to create simple landing page templates as single HTML files without relying on npm or build steps, and why this approach matters for efficient web development
Dev.to · Segcam spa
📰
Part 7B — Section 2 — React Event Handling Explained: Forms, Event Object & User Input.
Learn React event handling for forms and user input to improve your frontend skills
Medium · JavaScript
Up next
Elementor Angie Ai Plugin Tutorial
Quick Tips - Web Desiign & Ai Tools
Watch →