What this man says always makes sense. Like how he generalises problems, like having the same problems in your git branches as in your code with concurrency
@AndersBaumann3 жыл бұрын
Making the computer do what we want is no longer a difficult problem. But writing code that is simple and easy to understand tomorrow, in a week and in a year or more: Now that is a difficult problem. And only the best programmers can do that.
@ContinuousDelivery3 жыл бұрын
Yes, that's really what I mean when I talk about working 'incrementally'.
@marcusjenkins3 жыл бұрын
It's a bit like "is playing a great tune on the guitar difficult?". You need to put the hours in, study and need to have some feeling for what's coming out.
@Proactivity3 жыл бұрын
I'm not too concerned about AI making my job redundant anytime soon. If anything, it makes me curious about how it can increase my productivity. The next step to problem solving is coding the solution, which invariably involves frameworking, boilerplate code, and mundane time-consuming elements that don't necessarily require a lot of thought. If I can hand those off to something like GPT and be confident of getting manageable code in return, that's a win. If it can come up with all the ways an application would need testing and implement those tests, even better.
@mmdts3 жыл бұрын
I feel like I agree with a lot of things you say, and I just wish more people in the industry did too! It feels like our interviews, job descriptions, and views on how the job is supposed to be reek of the 60s where the only software developers were computer scientists!
@JorgeEscobarMX3 жыл бұрын
This became one of my favorite channels on youtube. Thanks sir.
@ContinuousDelivery3 жыл бұрын
Thanks
@JorgeEscobarMX3 жыл бұрын
@@ContinuousDelivery Thanks to you sir, what you do on this channels matters a lot to me. I share your views no matter how controversial. I even tried to share those continous integration ideas like "Dont branch, merge to master" is fun to see what people comment on things like why suing Git in the first place may be a good idea.
@Mozartenhimer3 жыл бұрын
I think too many people have gotten into coding without an engineering mindset. Software engineering is exactly that. Engineering.
@hodsh13 жыл бұрын
yeah that would be me... never been able to see myself as an engineer, the term had a lot of negative connotations in my house growing up. my mum always told me never to be an engineer. felt alienating when, in my first job, the title was changed from software developer to R&D engineer - i thought i was just applying to a junior developer position. although maybe i should have seen it coming, as our customers were also engineers, so there was this whole engineering theme going on. i had also been in research previously (physical & theoretical chemistry), and wanted to leave that behind. not because i didn't like the subject matter, but from realising how biased the system is in what kind of research gets published. i've been told that i can code, which requires a certain amount of intelligence, and i love designing projects and solutions to problems. but i can't do any other parts of the job, like reading other people's code or understanding the context of it, or even getting used to the unwritten social constructs surrounding PRs, deadlines and code reviews (i am not great with social conventions in general). my manager said he has no more ideas on how to teach me these things. really not sure where to go in my career from here... maybe the engineering mindset is something i can try and pick up, and become more comfortable with the term and what it means.
@roko5673 жыл бұрын
@@hodsh1 why would the term "engineer" have negative connotations? That's bizarre
@perfectionbox3 жыл бұрын
programming is about abstractions, and most people don't like thinking too abstractly, or they have a low limit to how much indirection and abstraction they can handle.
@VictorAlvarezmx3 жыл бұрын
Pretty interesting these ideas ... the way he explains it... really bright and solid... thanks for sharing your knowledge. Great your books as well.
@theplaymakerno13 жыл бұрын
This man deserves more subscribers. Extremely useful content. Also, he is quite to the point unless. I wish other tech channels adapted his method of delivering content.
@ContinuousDelivery3 жыл бұрын
I appreciate that!
@Glinkis3 жыл бұрын
Unless what?
@albirtarsha53703 жыл бұрын
The hardest part of software is getting 50% through a project and finding out that a newly created framework would make the project easier.
@esra_erimez3 жыл бұрын
The hardest part of being a software developer is naming functions and variables.
@richardbradley36843 жыл бұрын
I agree to a large extent. I often agonise over getting the 'correct' name, and they often want to be very long. I expect if I had the perfect name for a function, an AI routine could then write it for me!
@aurinator3 жыл бұрын
I'm unsure I completely agree with planning UI layout/UX is necessarily "doing it wrong" per se, especially if said input is coming from the UI/UX designer; now, I see what I believe you were getting at I think and agree with it overall, but that one part right at its beginning was one I didn't really completely agree with.
@philmarsh77233 жыл бұрын
Knowledge of software development is the new literacy. Every engineer must learn software development. Such skills vastly increase one's value in any technical field.
@kraazed Жыл бұрын
ChatGPT, sure it can create a simple UI solution. But I would love if I could write something like "please integrate a X payroll, X HR and X ERP systems". Oh and I may need to specify that the API reference material for X ERP is not accurate and non compliant with REST standards for certain endpoints. Making a simple UI is easy, look at all the templates out there. Making a UI work with other systems and handle a wide variety of silly user inputs and business scenarios is the hard part. Great video, especially the part about complexity and unexpected/unessential complexity, I typically use the term complexity vs complicated, one being inate business logic complexity vs the technical complications.
@softwarearchitecturematter44823 жыл бұрын
Software Develop is difficult and exciting for the same reason. We don't know what business problems are coming our way. It could be something very complex which we may have not encountered or solved before. Stack Overflow may not have solution. Business Problem could be very poorly defined or defined at all. You nicely said that agile is the way to handle these kind of complex problems. Each sprint is there to give feedback that we are on right path and right destinations. How many of us will enjoy the job if we are solving the same problems every day.
@robertruzitschka71543 жыл бұрын
Great and insightful video. Thanks, Dave!
@perfectionbox3 жыл бұрын
the hardest thing is keeping your job a secret so friends and relatives don't ask you for help with their computers
@raulcalvomartin29793 жыл бұрын
That’s nice when you are working alone or with someone who doesn’t have expectations and will adapt to your solution. Usually stakeholder will be disappointed if the solution is not what they imagine.
@eggy7943 жыл бұрын
You know you are early when video resolution is straight from the '90
@monad_tcp3 жыл бұрын
6:15 This all means programming languages are all wrong for having a for loop not be a single simple. APL is the only language who got it right but cutting against entropy and compressing information. But it takes real mastery in that.
@ssssssstssssssss3 жыл бұрын
Is software development hard? Depends on the requirements. Some software developers need to do "rocket science" if they are programming a rocket control system. Or know about brain surgery if they are programming a robot to assist a doctor with surgery.
@monad_tcp3 жыл бұрын
rocket control is easier than some user interfaces, because for flying things, the laws of physics don't usually change when the program is running. but with humans, all rules are bets.
@TimSchraepen3 жыл бұрын
Great video as usual. After “people”, I’d have thought you’d go to “making trade-offs”. Love the pinky and the brain shirt
@mhzprayer3 жыл бұрын
Its difficult because no one can estimate how long it will take to build the right code needed to make a customer happy. Because there can be such exponential difference in time required to do two things that seem so similar to a non-developer, which leads to so much pressure, so many lies and intrigue..
@erikvolger56313 жыл бұрын
'What makes developing software difficult is other people' You are so right. If it is clear what needs to be developed a (good) development team can produce some work. But sometimes there is too much interference with the proces from other people or managers. Or too little, that is also wrong. The third thing I see go wrong wasn't mentioned in the video: too much focus on technical details. When developing a simple application, you usually don't need sophisticated libraries and tools like entity framework, autofac and the like. Keep it simple, and plan for upgrades in the future.
@adambickford87203 жыл бұрын
"RAD" tools have been doomsaying development for years; turns out the actual logic isn't that hard. Managing change, coordinating people, trouble shooting, etc are why devs are valuable.
@dgkimpton3 жыл бұрын
I can't help but think the biggest class of "other people" is developers who have gone before us, e.g. people who have written the libraries on which we stand that (despite their best attempts) get us 90% of the way there at the expense of making the last 10% impossible (in this case other people might even be our past selves).
@dlabor19653 жыл бұрын
Thank you very much for talking. :-)
@PhilmannDark3 жыл бұрын
The correct solution for this is: We software developers must produce software like Unix shell commands: Does one thing, does it well. Then we train GPT3 on using those and then end users can use natural language to get GPT3 to pull those bits together in a way that works and solves their problem.
@PhilmannDark3 жыл бұрын
@West The PowerShell is for you. The output of the commands are actual structured data. So tabular data can be fed to a filter and then a "to CSV" output filter. I also wish that would have been invented 40 years ago but, well, that's progress.
@HelloNotMe99993 жыл бұрын
Understanding what a customer wants is the hardest part, largely because they have no idea how to tell their computer from their depression donkey (have fun figuring that out).
@jackoc33363 жыл бұрын
The video says "keep Essential and Accidental complexity separate", but says nothing about how.
@dgkimpton3 жыл бұрын
Pretty much because that's the entire art of software development. Being able to see, isolate, and clearly communicate and record what is essential, in such a way that the accidental is contained, replaceable, and as small as possible is touched on by basically every programming technique. Requirements documents, user stories, acceptance tests etc are all attempting to elucidate what's important.
@jackoc33363 жыл бұрын
@@dgkimpton Basically only is registered the essential stuff, and the accidental not because it is too subject to change.
@ContinuousDelivery3 жыл бұрын
I talk about one approach to this separation here: kzbin.info/www/bejne/m4PbfZmLfrJ9rc0
@Snair15913 жыл бұрын
Wonderful video. Very insightful and have been learning quite a lot from you. Question: the last part of the video you talked about dealing with concurrency and coupling. Through an even driven architecture and asynchronous communication, we can decouple the services/systems and enable concurrency (to an extent at least, like git) right? Would like to know your thoughts on that. I'm still learning, hence the question.
@ContinuousDelivery3 жыл бұрын
Thanks. Yes, event driven systems are our best shot at separating accidental & essential complexity to my mind, I talk about that in more detail, in the context of "Reactive Systems" here: kzbin.info/www/bejne/m4PbfZmLfrJ9rc0 The concurrency & coupling approach for these sorts of systems is down to ideas like "eventual consistency". Where you need two copies in different places to be in-step, you have to add the overheads of coordination (which are nearly always bigger than the costs of doing the work in the first place) and use ideas like RAFT to coordinate copies of state.
@AleksandarIvanov693 жыл бұрын
I am concerned that the time I am now investing learning programming beyond the very basics, is a fool's errand because of the insanely rapid development of AI-assisted coding which make my low-mid level dev skills unnecessary. How valid are those concerns ?
@guineapiig80893 жыл бұрын
At this point in time, not valid at all. The idea of frameworks and scaffolding is an old one, and we've been using scaffolds to quickly build up basic user interfaces and applications for decades now. Most if not all AI implementations so far is to take in natural language, interpret it, and run scaffolding commands to throw up a basic application. What they DON'T do is refactor, improve, iterate, debug, chase a third party vendor for long overdue SFTP credentials, interact with users to figure out how the interface can be improved, plan a strategy on how to take your single tenant application and make it a multi tenanted one, etc etc. In short, AI can only deal with limited domain problems with one track solutions. They cannot deal with the complexities of, well, life. Until skynet comes alive that is. Then we're all buggered.
@ContinuousDelivery3 жыл бұрын
I think that at the point at which AI make our job redundant, we will have bigger concerns, because I think it will take full, general AI, so they will be smarter than us at everything.
Its hard because we need precision A computer is not forgiving at all Humans are not so precise as computers The difficulty is understanding which are the steps Humans build and learn incrementally It is difficult sustain our ability to make chages as we learn more The precision a computer demands is challenging Accidential complexity is that what is neede at using computers and networks to process and store the data Keep essential complexity separate from accidental Concurrency. Events that happen or exist at the same time A piece that is changed for two programmers at the same time is an unsolved problem Coupling. I have created a service that you use Managing coupling in a larger system is crucial to sustain our ability to make progress
@j.j.95383 жыл бұрын
I also doubt GPT3 could work at complex systems. Maybe in the future, but not right now. By the time, GPT is able to understand and work with complex systems, interpret and execute modifications with minimal chance of error... then it's not just developers who are going to go obsolete... all professions will be gone.
@researchandbuild17513 жыл бұрын
A software developers job is to provide solutions.
@llothar683 жыл бұрын
The harde part of software development is that you burn out after some time (and faster than in other industries).
@dafyddrees22873 жыл бұрын
“As a field, we are suffering from a ‘resource curse’: there’s too much money in computing and it dilutes our field with carpetbaggers.” - Lunch with Alan Kay
@EmilNicolaiePerhinschi3 жыл бұрын
right, because like 5 computers and 64kb of memory were enough for the whole world, and only the 400 or 500 programmers that have the patience to deal with Smalltalk or Haskell should suffice ;)
@jojje3000-13 жыл бұрын
AI is also a program, coded by some developers.
@ContinuousDelivery3 жыл бұрын
I think these days most of what we call "AI" is "a program written by a program coded by some developers" 😁
@richbuilds_com3 жыл бұрын
It's a synch. All we do is marshal billions of microscopic bolts of lighting in the blink of an eye to do our bidding ;-)
@Sergio_Loureiro3 жыл бұрын
2:40 The grammar in programming languages is perfectly regular and consistent. Perl: Hold my beer.
@ZapOKill3 жыл бұрын
I'm certain fo... is the start of a variable called foo
@my_temporary_name3 жыл бұрын
This title is too much. It caught me off guard and I spit my coffee when I read it.
@ContinuousDelivery3 жыл бұрын
🤣
@edwinmartens74593 жыл бұрын
Number one cause: They call you AFTER the shit has hit the fan...