How To Be A GREAT Programmer

  Рет қаралды 74,647

Continuous Delivery

Continuous Delivery

Күн бұрын

What’s the difference between great developers and good developers? It’s not about language or tools, it is a collection of other skills and attributes. How to be good at programming is about a lot more than only a good grasp of syntax or an encyclopaedic knowledge of libraries and frameworks. To learn to program well, is something that takes a long time and requires some talent, but the people who are great at it do seem to share some skills.
In this episode Dave Farley, who has worked with many great programmers, describes what he sees as the difference between the people that seem to do a great job and those that don’t. This is about more than only programming tips, but there are some of those here too, and it is not always how we learn to program, it is about how we approach problems and construct solutions that we can live with and evolve over time and how we deal with other people while we are doing it.
-------------------------------------------------------------------------------------
📚 BOOKS:
📖 Dave’s NEW BOOK "Modern Software Engineering" is now available on
Amazon ➡️ amzn.to/3DwdwT3
In this book, Dave brings together his ideas and proven techniques to describe a durable, coherent and foundational approach to effective software development, for programmers, managers and technical leads, at all levels of experience.
📖 "Continuous Delivery Pipelines" by Dave Farley
paperback ➡️ amzn.to/3gIULlA
ebook version ➡️ leanpub.com/cd-pipelines
📖 The original, award-winning "Continuous Delivery" book by Dave Farley and Jez Humble
➡️ amzn.to/2WxRYmx
NOTE: If you click on one of the Amazon Affiliate links and buy the book, Continuous Delivery Ltd. will get a small fee for the recommendation with NO increase in cost to you.
-------------------------------------------------------------------------------------
Also from Dave:
🎓 CD TRAINING COURSES
If you want to learn Continuous Delivery and DevOps skills, check out Dave Farley's courses
➡️ bit.ly/DFTraining
📧 JOIN CD MAIL LIST 📧
Keep up to date with the latest discussions, free "How To..." guides, events, online courses and exclusive offers. ➡️ bit.ly/MailListCD
-------------------------------------------------------------------------------------
LINKS:
Punched Cards ➡️ en.wikipedia.org/wiki/Compute...
-------------------------------------------------------------------------------------
CHANNEL SPONSORS:
Equal Experts is a product software development consultancy with a network of over 1,000 experienced technology consultants globally. They increase the pace of innovation by using modern software engineering practices that embrace Continuous Delivery, Security, and Operability from the outset ➡️ bit.ly/3ASy8n0
Harness helps engineers and developers simplify and scale CI/CD, Feature Flags and Cloud Cost Management with an AI-powered platform for software delivery. ➡️ bit.ly/3Cfx3qI
Octopus are the makers of Octopus Deploy the single place for your team to manage releases, automate deployments, and automate the runbooks that keep your software operating. ➡️ octopus.com/
SpecFlow Behavior Driven Development for .NET SpecFlow helps teams bind automation to feature files and share the resulting examples as Living Documentation across the team and stakeholders. ➡️ go.specflow.org/dave_farley

Пікірлер: 182
@Sergio_Loureiro
@Sergio_Loureiro 2 жыл бұрын
1. Code As Communication 2. BE CAUTIOUS of Frameworks 3. CODE IS DESIGN 4. QUALITY OVER FEATURES 5. Software Development is a Social Activity 6. AVOID CODE OWNERSHIP 7. Work in small steps
@fastdodo
@fastdodo 2 жыл бұрын
cheer up
@arwahsapi
@arwahsapi 2 жыл бұрын
Bump
@pinguwien
@pinguwien 2 жыл бұрын
8. Work scientifically: Write a hypothesis - e.g. as an automated test. Then prove this hypothesis right or wrong. Then (this is important!) meditate about "Does my hypothesis suck?" - Repeat.
@ytlongbeach
@ytlongbeach 2 жыл бұрын
@@pinguwien i work more creatively and prefer to write the solution and then the tests second. I learn what to test while writing the solution, and don't have to guess and then iterate.
@gabrielvilchesalves6406
@gabrielvilchesalves6406 2 жыл бұрын
@@ytlongbeach have you tried the alternative to understand its benefits? I juggle between both, but I know that when I'm "just" writing the solution it feels that I don't fully understand the problem, even if I write a test after it. Then I know that my skill for writing tests first is not sharp enough yet. I still want to find a way to do that exploration through tests and not through solutioning, I'm sure I've read something like that from Bob Martin. BTW, any tips on that, Dave?
@nsicolo
@nsicolo 2 жыл бұрын
1. Good programmers spend time and effort in making their code clear. 2. Frameworks are not the core of our skills as professional software developers. Treat frameworks with a degree of care. 3. Design is the choices we make everyday when we write good code. 4. It is the shapes of the solutions that we create what really matters much more than the technologies we choose to implement those shapes. 5. Software development is a social activity. Good developers are also good comunicators: they can express an idea clearly, they can describe complex ideas to other people clearly. Collaborate with people. 6. Great developers are free with their ideas and usually open to having them criticized. 7. Make progress in small steps.
@sergeixtc
@sergeixtc 2 жыл бұрын
I gifted myself your new book for Christmas, hope it arrives before the holidays. Really thx for sharing your knowledge.
@not-a-doctor
@not-a-doctor 2 жыл бұрын
On a sidenote: I see a lot of nice typography and pretty animation work on the newer videos - good job on the design! Looks very good, keep it up!
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thank you very much!
@amitev
@amitev 2 жыл бұрын
And Dave's t-shirts are always awesome!
@nasrail2081
@nasrail2081 2 жыл бұрын
❤️
@justinbehnke8724
@justinbehnke8724 2 жыл бұрын
Working in small steps is my favorite on this list. It’s so hard to see the value in the moment, but when you look back on hours of work done and zero time spent debugging, to me that’s a very special feeling.
@TimSchraepen
@TimSchraepen 2 жыл бұрын
One that might be missing is having an eagerness to learn. That is learn about the problem your users are facing and why it matters to them, but also to learn about new technology and softskills like how to give good feedback. One could say that this skill is incorporated in other items you mentioned, but I thought it’d be worth mentioning more explicitly.
@AI-xi4jk
@AI-xi4jk 2 жыл бұрын
Let’s not also forget that great programmers don’t have to know everything, but they have developed an ability and grit to dig into the problem, understand why something doesn’t work and come up with a solution while learning about this new topic on the way. Many programmers don’t become great because when they face a hard problem they either look for someone to solve it for them, look for a framework or even worse some kind of workaround. In the end they avoid tackling hard staff and never improve their skills. I think it’s not so much about knowing some language or framework but more about the aptitude. We always have to solve new problems, otherwise we would be just copy pasting code and calling it done. To come up with a great solution you need to not only to think how to make it work but also how it might fail. In the end every team hopefully has at least one person who can always figure out the answer even if he never faced that problem yet. Even greater programmers will communicate their process and decisions to the team to keep the information flow at the right level, be realistic with stakeholders and help others learn.
@ian1352
@ian1352 2 жыл бұрын
Part of solving problems in reality is using an existing solution or working around the problem. The first thing to do when encountering a hard problem is to find out if someone else has already solved it. Doing it yourself might serve as an interesting challenge, but not everyone has unlimited time and money to do it instead of spending time on solving something else. Probably something that is not hard programming, but more important to the outcome.
@TheJacklwilliams
@TheJacklwilliams 2 жыл бұрын
Thanks Dave for leading these types of discussions and hopefully, us in a good direction. I ordered your book as well and can't wait for it to arrive. I've got 30 years in the business, my next chapter is coding/dev and will be the way I go out. I've danced around it, did some dev about 15 years ago before getting snagged on a completely unrelated paradigm (wish I stayed then). However, I know fundamentally learning syntax and language is but a small part of the job. I see it as an iceberg, with the choice of language being the part above the water... Great channel, incredible lessons. Thank you for sharing.
@LaksithaRanasingha
@LaksithaRanasingha 2 жыл бұрын
Thanks for listing these valuable skills in a succint way Dave. I think the ability to translate deep, abstract or ambiguous technical details to non-technical folks (as something easy to comprehend) is a super important skill. I've seen some developers do it by bringing simple examples and mixing with wit/jokes to make non-tech folks more engaged and they grasped it. That could be an extension/part of to the skills "code as communication" and "software development is a social activity" .
@JDLuke
@JDLuke 2 жыл бұрын
Liked for shirt. Now it's time to watch what will undoubtedly be a clever combination of stuff I've known for 35 years plus some insights I haven't considered. I always enjoy your videos, Dave. Your approach codifies and helps me enhance my own and I like that.
@jonathanaspeling9535
@jonathanaspeling9535 2 жыл бұрын
Awesome! Good way to close out the week! Appreciate all the thoughts shared
@KulaGGin
@KulaGGin 2 жыл бұрын
Thx for the book, going to read it. One of those rare cases, where the video is made not just to promote a book, but a genuine video on the topic and a genuine reference to the book, because it matters. Got to read Robert C. Martin books the same way.
@MrStefanica
@MrStefanica 2 жыл бұрын
Very useful! I liked the argument that design is part of the every day's work, also about thinking in terms of shapes. Dave, you are adorable in this t-short! Thanks a lot!
@TinBryn
@TinBryn 2 жыл бұрын
On point 2 (Be cautious of frameworks), I find a great way of dealing with this is an application library model, rather than build your application within a framework, you just have simple calls to your actual implementation which is somewhere else. Yes the framework is still in control and at the top of the application, but that top is small and probably fairly trivial and replaceable. Although often times frameworks are meta-programming eager and even moving **my** code behind a function call will break the framework. Anything that prevents me from breaking up **my** code how I like gets a hard no from me.
@unicastyourself2
@unicastyourself2 Жыл бұрын
"Programming as a social activity". This is so true. For example, after you've been working some time with microservices and especially if you can explore the landscape, as you cross urbanized areas, wild jungles, derelict, abandoned neighborhoods, both brutish and elegant forms of order, war zones, factories and playgrounds - in fact the absolute opposite of a clock's internals - and learn about (or mostly recognize) the inhabitants communities, it's hard not to end up looking at your job as a form of anthropology or sociology. You get a live reminder about the inherent violence of Nature, even if, just as in physical landscapes, sometimes in the middle of nowhere, you find a flower. It's interesting to observe that we conceive these virtual worlds in the image of the societies we live in, not necessarily as the one we would like to be a part of. This makes us more slaves than masters I guess. In any case, I.T. is no form of escapism !
@udishemesh4171
@udishemesh4171 Жыл бұрын
Thanks for your videos! This one resonated very well.
@esra_erimez
@esra_erimez 2 жыл бұрын
I finished your book, and just received the book you wrote with Jez. It i filled with the anecdotes and details I was hoping for.
@xybersurfer
@xybersurfer 2 жыл бұрын
this resonates with me. it makes me even more interested in your new book. i'm not sure whether i should wait for some reviews
@florinakermann7593
@florinakermann7593 2 жыл бұрын
Hej Dave, Really enjoy your videos, thanks a lot for all the great content. Incase you run out of ideas on what to talk about: Recently I opened small pull request to apache kafka and I was really suprised to see so many flaky tests in the code base. I guess it is only natural that integration tests are hard to get right when testing a distributed system like kafka. With so many contributors it might not be possible for the gate keepers to spot every flaky tests in a pull requests. How could such a large open source project avoid such issues with minimal overhead?
@davidteague3849
@davidteague3849 2 жыл бұрын
Planning for change in your code is the highest goal if you ask me. There are many ways to achieve this. Replaceability techniques e.g. factory method right through to data driven systems. Teasing out change cases from your users is key. If they are unsure, look to the past for pointers about cyclic behaviour in their business
@giganetom
@giganetom 2 жыл бұрын
Excellent video. Very well put. Thank you.
@fede77
@fede77 2 жыл бұрын
Great video (and t-shirt!!) as always
@mikesurel5040
@mikesurel5040 2 жыл бұрын
Gonna share this one far and wide. Thanks, as always, Dave
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Awesome, thank you!
@ZijZijnZijnZoons
@ZijZijnZijnZoons Жыл бұрын
Well done Dave! Very solid advice.
@sriluxman
@sriluxman 2 жыл бұрын
Love your t-shirts
@justice7ca245
@justice7ca245 2 жыл бұрын
Yeah Dave you're going to have to start sharing where you're buying these lol
@BeyondtheBounds
@BeyondtheBounds 2 жыл бұрын
@@justice7ca245 I'd be broke if he opened up a store of the shirts he wears.
@moonfiend9259
@moonfiend9259 2 жыл бұрын
So so helpful. thank you!
@galyedidovich
@galyedidovich 2 жыл бұрын
Truly great points! Every great developer I've known attends at least some, if not all, of those points.
@amitev
@amitev 2 жыл бұрын
This is the channel that I recommend the most to my junior fellows. Thank you very much for the great work, Dave!
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thanks for sharing my content!
@jordanweir7187
@jordanweir7187 2 жыл бұрын
The point made at about 11:35 is a really interesting one that I never thought about, it's like a good time investment to go for quality because all the time its live one day will be time where it's benefiting from the quality that was put into it initially
@DineshkumarPuli
@DineshkumarPuli 2 жыл бұрын
Dude! Cool shirt!!!! Content is awesome as always!
@Kitsune_Dev
@Kitsune_Dev 11 ай бұрын
Key points: Communication: The speaker emphasizes that coding is about communicating with other people rather than just computers. The readability of code is important as it saves time and money in the long run. Good programmers spend time making their code clear and communicative. Frameworks: The speaker cautions against relying too heavily on frameworks, as they can be ephemeral and may require significant rewriting if the framework changes or if the developer decides to switch to a different one. It's better to use frameworks that ask less of your code and allow you to retain full control over the programming model and structure of your code. Design: Good design is fundamental to coding and the choices we make when designing our systems help us compartmentalize problems and manage complexity. The speaker emphasizes the importance of focusing on the information we are dealing with and how we choose to apply organizing principles to the code we write. Quality over Features: The speaker emphasizes the importance of quality over features and the practicality of retaining the ability to make effective and efficient changes over the long term. He recommends adopting incremental approaches like continuous delivery and agile development to prioritize change after the first release. Communication in Software Development: The best software developers are good communicators and can express complex ideas clearly to others. If someone struggles to express their ideas clearly in conversation or diagrams, they may also struggle to write good code. Collaboration: The speaker emphasizes the value of teaching others and learning from their experiences, as well as collaborating with others on tasks and bouncing ideas off of them. He advises against becoming too attached to one's own ideas and being open to criticism. Small Steps and Test-Driven Development: Great programmers are able to hold complex ideas in their heads and make progress in small steps. The speaker discusses the importance of working in small steps and using test-driven development to make small changes and refactor code. Continuous Learning and Refinement: The speaker emphasizes the importance of continually exploring and refining solutions. He invites readers to share their own suggestions in the comments.
@Viertelhund
@Viertelhund 2 жыл бұрын
One skill I've grown fond of (in the field of "coding as communication") is the ability of "thinking stupidly". If you can step back from the code, you have just written and can look at it, as if you knew nothing about the project (or were fast forwarded two months), you can discover parts of the code, you and everyone else would have big trouble to understand later on.
@anonymousyoutube7259
@anonymousyoutube7259 Жыл бұрын
I'm very good at thinking stupidly. Maybe too good. ;)
@shlionz
@shlionz 5 ай бұрын
This is gold Thank you. I am learning to be one.
@Yxcell
@Yxcell 2 жыл бұрын
Hello, Dave. Thanks for the thoughtful video(s). It gave me a lot to think about in how I approach software development. At 6:38 you mentioned that you prefer lightweight frameworks that don't impose their design/architecture too much on the developer. Would you mind sharing a few examples of which kinds of these frameworks you tend to use? I'd like to explore them and try them out to get a feel for them. Thanks again!
@Sergio_Loureiro
@Sergio_Loureiro 2 жыл бұрын
I thought the exact same thing at that point of the video!
@FlaviusAspra
@FlaviusAspra 2 жыл бұрын
I'm not Dave, but I have similar views so here it goes Light frameworks is just his personal preference, it doesn't mean that you cannot do the same thing with any framework. It's a matter of how you structure your journey, but either way, the goal is the same: to be in full control of your architecture and design at all times. The way you do this is by using only things you truly understand from your framework. If the framework is bigger, then you have to restrain yourself from using more features from it right at the beginning. With lightweight frameworks, you can move more freely. That being said, staying in control with any framework is rather an easy, mechanical task, once you get the hang of it. Most frameworks provide tutorials and templates on how to structure your projects with it. DON'T DO THAT! Instead, get a working example first until you learn a little bit of the framework, then remove it and start from scratch. Then do the directory layout for what will be a hexagonal architecture. It's like this: src/Domain/ src/Plugin/Ui/ Then do everything you can to contain the framework in that directory, and all your domain in Domain. Easy cheesy really. Make sure the domain is free of any libraries or frameworks. When necessary, introduce pure fabrications in the Domain as interfaces, and invert dependencies. Mechanical, simple, agile. You just use the framework as a (yet another) library.
@caleb5688
@caleb5688 2 жыл бұрын
This is the only point that I wasn't totally sold on. One example might be React vs Angular. React is less opinionated while Angular pushes it's way of doing things on you. But the flip side is that React doesn't provide nearly as many features. So what often happens is React teams spend more time researching JS libraries to prop up what React is missing. One might argue the complexity added through maintaining this outweighs the benefits of a less opinionated framework. I'm also not sure if a framework's updates forces your app to change. If there is a breaking change, don't update. And if something fundamental changes (like browser API becomes radically different) then you would have had to update your app in any case. There's a lot of wisdom in being cautious of frameworks, but like he said, the power of frameworks is often how they limit us, not how much freedom they provide
@midoevil7
@midoevil7 2 жыл бұрын
@@caleb5688 I think this more relatable to backend software which implements calculations or business rules, calculating taxes or hr rules for example, it makes more sense to isolate this business logic away from your framework parts, for example backend frameworks can give you several ways to access database , and those ways can differ based on framework, so, if the database access code was baked inside the business logic, things will get ugly if you need to change the framework, and you can't just reuse those business rules without taking the framework along with it. But for frontend and even some types of backend application I think it is mainly "wiring and routing" the data, which is mainly done by the framework, so, there is usually little to be isolated.
@nicositio54
@nicositio54 2 жыл бұрын
I think this is a good rule of thumb : if a framework forces you to extend/inherit its classes too much, is a red flag. Instead, if the framework asks you to implement interfaces is a good sign. Sometimes is hard to tell, because it could be that Implementing interfaces is what the framework really needs, but it also provide some base classes you can inherits for convenience. I think the first time I realized this was when I compared hibernate with a active record library.
@MrGeordiejon
@MrGeordiejon 2 жыл бұрын
YAATS - we love acronyms Yet Another Amazing T-Shirt
@simonolofsson7488
@simonolofsson7488 2 жыл бұрын
Little did I know this video hit literally at home for me, as an author of an Open Source framework for chatbots called Pyttman. Amazing how you made excellent points as to how locking in users isn’t the real goal with creating a pattern and constraints, but becomes a side effect of offering APIs which fails fast. I’m currently working on offering lighter options for situations where leveraging the Django-like pattern isn’t necessary or desired by the developer. This video just made me realize how important that is.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thanks, glad you found it helpful.
@nicolabombace2004
@nicolabombace2004 2 жыл бұрын
10:59 Dave: "Wave your hands around". Italian Me: "That will-a be easy-a"
@PeterManger
@PeterManger 2 жыл бұрын
Brilliant. I think you've possibly missed "growth mindset". The best I've seen are constantly learning and apply the TDD try, test, repeat methodology to many aspects of their career/craft.
@ian1352
@ian1352 2 жыл бұрын
That term has become an annoying cliché.
@TjSpoonManJacques
@TjSpoonManJacques 2 жыл бұрын
I love these lectures - I'm learning so much from you.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Glad you like them!
@ashotjanibekyan4163
@ashotjanibekyan4163 2 жыл бұрын
Thanks for teaching us the Jedi ways, master Dave! btw, I must admit that I'm jealous of your T-shirts :D
@michaeljones7674
@michaeljones7674 2 жыл бұрын
The article requested at 12:33 appears to be the below Published: December 1996 Social patterns in productive software development organizations Brendan G. Cain, James O. Coplien & Neil B. Harrison Annals of Software Engineering
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thank you.
@conw_y
@conw_y 2 жыл бұрын
Excellent advice.
@hdinizribeiro
@hdinizribeiro 2 жыл бұрын
Hello, Dave. Another great video! Thank you so much for sharing your thoughts. What you think about learning algorithms and data structures? Many big tech companies demand that in their interviews. I always criticized this way of evaluating a developer, because it reduces our capacities into one skill that seems to be less important compared to what you mentioned in this video. I'd be really amazed to hear your opinion!!
@ian1352
@ian1352 2 жыл бұрын
That method of interviewing reflects the fact that no-one has figured out a good way to interview programmers. Because it provides a fairly simplistic black and white measure it is attractive to companies. The problem with it isn't only that it doesn't reflect the work programmers really do, but that it is quite simple to game. Everyone I know spends some time practising and studying before they go to interviews. They're all good programmers, but such studying even allows people who can barely programme to get through a technical interview. A far better method I have encountered occasionally is one where the interviewer gives a problem to solve and then you work together to come up with a solution. I have even experienced an interview in which I had no idea how to solve the problem they posed, so the interviewer wrote out a possible solution. Then we talked about. I asked questions about why they had done certain things and started having ideas about other options. That's how real programming works in a team
@amitev
@amitev 2 жыл бұрын
Dave, many projects end their life because they get outdated in terms of technology, legacy in terms of understanding of the code (one of the reasons is lack of gut tests). Do you have a video or do you plan a video to teach us how to keep the software relevant from a technical perspective (why not even from a business) in order to keep attracting programmers to work on it?
@stephenpaul7499
@stephenpaul7499 2 жыл бұрын
I think it is worth mentioning that one argument FOR frameworks is that they do impose certain limitations on what team members my try to do. We are all naturally curious and often try to bend the rules of what is possible. I've seen some really scary stuff written by others and myself. Like everything we do, there are no clear cut answers. There are tradeoffs. Personally, I would rather use a mature framework, however I agree that we should start layering our code so that sections of it can be transplanted, whole sale, into the next framework, when the time comes.
@ian1352
@ian1352 2 жыл бұрын
I'm also in favour of programming languages that put restrictions on the programmer. I've almost never needed the ultimate flexibility that some programming languages offer, but in my experience code can certainly benefit from forcing everyone into picking from very limited ways to do something. When we use frameworks we do try to have a layer that deals with the framework, but ultimately we view frameworks as a time and money saver now and if some future time should come when we need to change frameworks we'll deal with it then. The one thing I have experienced though is frameworks that impose such a burden to use that they end up costing more to use than just writing everything yourself. Unfortunately sometimes this is only discovered once it has been in use for a while.
@ddichny
@ddichny Жыл бұрын
I've often said that the main difference between a good programmer and a great programmer is that a good programmer will think of a way to code a solution to the problem and do that, while a great programmer will think of ten ways to code a solution to the problem and choose the one that best fits the needs of the task (which includes weighing criteria such as readability, efficiency, maintainability, etc.) Think beyond your first idea. Also, when interviewing programmers, my favorite question is a casual, "how did you get into programming as a career?" The people who give some form of the answer "I just f***ing love to program" have always been the greatest programmers, with the best appreciation for the art and science of quality coding.
@lcirocco
@lcirocco 2 жыл бұрын
Enjoying these videos immensely, and to be honest, coveting your t-shirts, are they single source or just from web surfing in your down time? **Re the social aspects of coding** : I think we all need to appreciate better that *_'Normal is a distribution'_* (from a poster at a University campus). Ultimately you have to find your tribe and being in the tails of neurological function distribution doesn't mean you're alone there. Probably marks you for having something unique to contribute in the right sort of team; you just have to go looking even if like me just playing on the wing, you'll get there.
@optimalchoice270
@optimalchoice270 2 жыл бұрын
Brilliant ! I ordering you newest book today.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Hope you enjoy it!
@jeffengebretsen
@jeffengebretsen 2 жыл бұрын
I just barely stumbled upon your channel. Maybe it's confirmation bias but I like what your saying 😉. I'm going to recommend your book for my team to go through together.
@lovelyman6210
@lovelyman6210 2 жыл бұрын
that's a ligthing video , thank you. Also The t-shirt is awesome. how can we also have it ? Thanks.
@jenamazin2194
@jenamazin2194 2 жыл бұрын
You are the best code mentor!
@dosomething3
@dosomething3 2 жыл бұрын
wow 😮. an absolutely incredible video.
@NachtmahrNebenan
@NachtmahrNebenan 2 жыл бұрын
Thank you for the "causious of frameworks"! I struggle with projects trapped in structure, having depencies down to the last bit of code. Enhancing, restructuring or migration is really hard. It's also extremely expensive in the long run. And uses Log4J! 🤣
@rafaelorbolato
@rafaelorbolato 2 жыл бұрын
Dave, where do you buy your t-shirts?
@slbtz
@slbtz 2 жыл бұрын
For me, the "framework skepticism" is probably the number 1 indicator of mature developer expertise. For a reason that I still do not understand, many otherwise talented developers get attached to a particular framework and/or language and end up equating "high quality" with "high level of framework adherence". According to this view, the more a piece of code "uses the framework", the better it is. At the same time, this view considers that most problems: bugs, lack of quality, bad code, etc. arise from an inability to "use the framework to its 100% potential". Developers operating in this frame of mind often make the mistake of bending their code design to the constraints of the framework which is precisely the wrong thing to do. Ultimately, the goal of any software development project is to solve a business problem, and not to "program in a framework", so it really should be the other way around: elevate the business problem to the forefront, and use frameworks, libraries and tools to support the central design, but keep them at the edges of the system. This is why the "ports and adapters" (or hexagonal) architecture is so good: it puts the business problem at the centre and pushes away the frameworks, database access libraries and all other external concerns at the edges. Thus, a very simple test to figure out if a developer is mature is to ask them if they like the hexagonal architecture. If they answer "yes", then you're most likely dealing with a pro.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
💯😎
@mintcar
@mintcar 2 жыл бұрын
I have been guilty of complaining about bespoke solutions to problems that have a standard solution within a framework. There's some benefit to following conventions and to utilize the tools that you already bought into when choosing a framework. I like the points about portability and keeping as much of the code as possible platform agnostic, but that comes with some added responsibility to make sure the solution works well within the framework and that it is either obvious or well documented. Doing things your own way may be the better choice, but I think that it necessarily leads to a higher risk for bugs simply because you opt out of using a solution that is already being tested by countless people. What I'm saying is it needs to be paired with a quality mindset.
@RedBeardedRabbit
@RedBeardedRabbit 2 жыл бұрын
Heavy-handed frameworks... the bane of my development life. The "Inversion of Control" (if I may use the term) by such Frameworks seems to cause more problems than it solves: 1. Getting started - requires (IMO) an unreasonable amount of pre-requisite knowledge about the Framework's "magic" ... 2. "Magic" - way too many things just happen by "magic", usually in a way that's non-standard to typical programming - until they break and then ... 3. Debugging & testing - usually Slow, and difficult to navigate and fix because ... 4. Configuration instead of code, and mysterious framework control - Flow of control is often required in obscure XML or YML or other configurations instead of code, where it could have been more easily navigated using IDE tools, debugged, understood, compile-time checked, etc.... Maybe I'm wrong about some of these points; and maybe all the costs, added up, are still out-weighed by the benefits - I certainly don't have data to prove it either way - but it sure doesn't feel like it a lot of the time.
@alkalomadtan
@alkalomadtan 2 жыл бұрын
When people start to think about techs instead of design - is spot on. Most, even (pseudo-)professional people value frameworks and tech knowledge more than understanding and analysing the logic first.
@sibonelongobese8639
@sibonelongobese8639 2 жыл бұрын
Good content Dave as always. 'Code is design', do you mean always follow domain driven design when coding? I believe this will also eliminate clutter and make your design almost mimick a functional programming architecture of some sort
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
That isn’t what I really meant, but it is true of my own code. What I really meant was coding is much more than syntax, it is about the structures that we create that help us to understand whats going on, and find our way around. In a similar way to the fact that writing is more than only spelling words correctly. Good developers are always thinking about how they organise their code, what goes where.
@sibonelongobese8639
@sibonelongobese8639 2 жыл бұрын
@@ContinuousDelivery thanks for clarifying. 🙂👌🏽
@bra5081
@bra5081 2 жыл бұрын
What do you mean by DDD eliminates clutter?
@sibonelongobese8639
@sibonelongobese8639 2 жыл бұрын
@@bra5081 exactly that bro, I perceived that Dave was talking about DDD since i think when you use it you eliminate writing what is called spaghetti code. Your code is clear in terms of naming variables and functions and also its purpose, I think a DDD approach assists in this regard. Perhaps my high level understanding of this concept is different from other ppl🙂
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
@@bra5081 I can give my answer to that. DDD aims to model the problem and so makes you think about separating the core behaviour of your system (its essential complexity) from the stuff that is necessary because it runs on a computer (its accidental complexity) so the code that is to do with order processing or flying your spaceship only focuses on that and the code that stores stuff in files or displays stuff on screens only does that. So each is less "cluttered" with other things that aren't its real focus. I talk about these ideas in more3 detail in my new book in the chapters on Modularity and Cohesion, including some code examples.
@florianfanderl6674
@florianfanderl6674 2 жыл бұрын
This is so true.
@zeufack3838
@zeufack3838 2 жыл бұрын
Am in love with your t shirt :)
@FizzyMcPhysics
@FizzyMcPhysics 2 жыл бұрын
Your first point, Code as Communication, is also my number one priority! If I can make the code readable enough, then I can reduce the need for comments. A pet hate of mine is variable/function/class/etc. names that have been abbreviated to the point of incomprehensibility. Maybe shortening names saved on bytes in the very old days, but it's pointless now! Stop being lazy and type out names using whole words! Another one for me is to write for legibility and maintainability, rather than speed. I'd often see a solution on Stack Overflow they thought was better because it was faster. I didn't care if my macros took 3 minutes to run instead of 2, they still saved someone a whole afternoon of work.
@harag9
@harag9 2 жыл бұрын
I agree, I've seen in the past loads of pointless commends in code e.g. //refresh the window.... Code line follows is "window.refresh();" -- Why the comment? the code tells you exactly what it's doing.
@jl_woodworks
@jl_woodworks 2 жыл бұрын
"...unless you're doing something weird with quantum computers..." lmao Nice line. Quantum computers are, indeed, weird.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Yes, the ideas certainly scramble my brains.
@stojadinovicp
@stojadinovicp 2 жыл бұрын
@Continuous Delivery: Please add chapters for easier sharing
@conw_y
@conw_y 2 жыл бұрын
I would question you a little about “code ownership”. Not advocating disallowing others to touch code. But just that in many teams I feel there should actually be more emphasis on responsibility and perhaps a kind of ‘custodianship’ of code. It goes hand-in-hand with treating software as an investment. People will probably care more about that which they are invested in and where they have “skin in the game”.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
I agree, but I think it functions best at the level of teams rather than individuals. The kind of "code-ownership" that I think is wrong is what I describe people who think their code is precious and won't change it themselves and won't allow others to change it. Great programmers, in my experience, treat code as "our best guess so far" and if anyone comes up with a better idea are pleased to change the code to reflect it.
@conw_y
@conw_y 2 жыл бұрын
@@ContinuousDelivery You’re absolutely right, thanks.
@serobification
@serobification 2 жыл бұрын
About "Avoid ownership": In a recent job interview I was asked "You've been talking a lot about what *we* did so far. But what exactly did *you* do?" To me code is a team work.
@michaelslattery3050
@michaelslattery3050 2 жыл бұрын
The approach to frameworks sounds like Hexagonal Architecture (or Clean A.). Working in small steps is huge, and I need to do better at that. Most of the rest is Agile manifesto stuff.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Yes, hex architecture is a good take on this.
@reisvc
@reisvc 2 жыл бұрын
Pair coding is great, problem is when colleagues’ attention is always drifting away.
@thejedijohn
@thejedijohn 2 жыл бұрын
Great information, but the background is both distracting and causes motion sickness to those of us who have a sensory input sensitivities.
@gamer-gw9iy
@gamer-gw9iy 2 жыл бұрын
Where could I practice coding with others?
@NicusorN5
@NicusorN5 2 жыл бұрын
Cool stuff
@markemerson98
@markemerson98 2 жыл бұрын
is the kindle version of Modern Software Engineering readable on iOS ?
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Yes.
@javaguy5783
@javaguy5783 Жыл бұрын
That tee shirt is awesome!
@SanjinDedic
@SanjinDedic Жыл бұрын
You need to have a t-shirt store I would buy all of them!
@gdr189
@gdr189 2 жыл бұрын
I think it was a google study regarding 'best developers are good communicators'.
@istovall2624
@istovall2624 2 жыл бұрын
Fantastic video
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thanks! 😃
@leftoverture1976
@leftoverture1976 Жыл бұрын
Thanks Dave, very helpful! I have been working with Drupal based solutions, open-source and flexible, but I think the learning curve is steep, at least to me.
@ContinuousDelivery
@ContinuousDelivery Жыл бұрын
Glad it was helpful!
@richardcoppin5332
@richardcoppin5332 2 жыл бұрын
One thing that scares me most in any project is the lone developer - even if that developer is me.
@aodiogo
@aodiogo 2 жыл бұрын
I wonder if you think that the Spring framework fits into his definition of what a good framework would be.
@AI-xi4jk
@AI-xi4jk 2 жыл бұрын
Definitely not. It makes lots of assumptions and limitations on what and how you can do. It’s also based on magic rather than solid principles. My friend has to work with it and he keeps bringing these shortcomings to me every time. To really understand why Spring is so bad see how Functional Programming solves problems with well understood, decoupled and flexible patterns and compare to how spring bakes in some magical limited inflexible features. Cheers
@banatibor83
@banatibor83 Жыл бұрын
Uncle Bob said that we should avoid frameworks in the heart of our software. This resonates with what Dave said about frameworks.
@ruixue6955
@ruixue6955 Жыл бұрын
4:03 be cautious of frameworks
@KibbleWhite
@KibbleWhite 2 жыл бұрын
14:46 - Currently I'm a lone -"genius"- individual -"hacking"- programming away in a darken room
@queenstownswords
@queenstownswords 2 жыл бұрын
"Avoid Code Ownership" - now THAT is a great slogan to wear on a t-shirt!
@SzybkiTom
@SzybkiTom 2 жыл бұрын
Nice shirt!
@PaulSebastianM
@PaulSebastianM 2 жыл бұрын
This video convinced me to buy your book.
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thank you!
@PaulSebastianM
@PaulSebastianM 2 жыл бұрын
As much as I am a fan of the Aliens and AvP universe, that T-Shirt scares me.
@dafyddrees2287
@dafyddrees2287 2 жыл бұрын
We are always racing to learn shiny, new expiring assets…
@distinguishedmoments2277
@distinguishedmoments2277 2 жыл бұрын
Another great Tshirt
@gamer-gw9iy
@gamer-gw9iy 2 жыл бұрын
How can we measure code readability?
@konstantinnesterov8868
@konstantinnesterov8868 2 жыл бұрын
Let your colleague from another project read it.
@jonathanstuckey7110
@jonathanstuckey7110 2 жыл бұрын
Wtf’s per minute
@moutasim_ayoubi
@moutasim_ayoubi Жыл бұрын
14:10 always happen to me 😆😆
@Msyo_Jaber
@Msyo_Jaber Ай бұрын
Think ❤
@chakala2149
@chakala2149 2 жыл бұрын
Hello Mr Dave Farley, please bring back the old gingle.
@olly-holmes
@olly-holmes 2 жыл бұрын
Nice to hear a positive video title
@ContinuousDelivery
@ContinuousDelivery 2 жыл бұрын
Thanks, it is a tricky line to walk for KZbinrs, we get more views if we choose click-baity thumbnails and titles, but maybe send the wrong message to people looking for serious content. For an educational channel, like this one, we have to "play the YT game" to some extent, assuming that we want people to see our content, but we also don't want to be misleading. We try to walk the line between these two, and are willing to accept a certain level of compromise on how "click-baity" our titles are, as long as they accurately represent the content of the episode, but also we try to make sure that the content is interesting and useful, and never only sensational.
@NocturneSMT3
@NocturneSMT3 2 жыл бұрын
Cool shirt.
@aldosilva6
@aldosilva6 2 жыл бұрын
Mouseless is a good one too.
@MrAbrazildo
@MrAbrazildo 2 жыл бұрын
8:43, this mistake I don't make. If I worked alone, I can even describe the project from a high to low level, in different "layers". 9:23, ideally, code should always follow the best design. In practice, however, code influences back the design. This is faster development, but has a cost. I use to have my overall design near intact by the code, despite often undesired splitting classes for better access control, number/types of f() parameters, and so on. 9:44, particularly to the internal design of f()s, I don't see that much of an issue. If variables or small arrays are created and destroyed inside it, and a bug arises from them, even if complex, the region is "fenced" in that f(). So design won't be a problem: it won't require to understand messages, data flow, and others. 13:32, I use to write pages describing ideas, reports, failures, and sort of. 15:06, the vague guess of billionaire companies taking my code for free, to make $$, makes my alien try to break out from my chest.
@ahmadkhudai
@ahmadkhudai 2 жыл бұрын
Sir, if possible, please put timestamps in your videos.
@jimhumelsine9187
@jimhumelsine9187 2 жыл бұрын
I like to be involved in the framework, but not committed to it. I think this is one area where Hexagonal Architecture/Ports&Adapters shines. I featured it in a presentation queued to Vendor Lock In here: kzbin.info/www/bejne/l5LcnWl8rtiNlbc
@cassianofranco3082
@cassianofranco3082 2 жыл бұрын
And that is how a GREAT Developer looks in his 30s
@GalaxyCat001
@GalaxyCat001 2 жыл бұрын
This video should have a timestamped breakdown of the 7 steps as part of its main comments and not left to a viewer to do :(
@chefbennyj
@chefbennyj 2 жыл бұрын
... and I love that shirt.
What All New Software Developers Need To Know
27:46
Continuous Delivery
Рет қаралды 132 М.
How To Estimate Software Development Time
16:47
Continuous Delivery
Рет қаралды 164 М.
Eccentric clown jack #short #angel #clown
00:33
Super Beauty team
Рет қаралды 15 МЛН
1🥺🎉 #thankyou
00:29
はじめしゃちょー(hajime)
Рет қаралды 38 МЛН
Cute Barbie gadgets 🩷💛
01:00
TheSoul Music Family
Рет қаралды 68 МЛН
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 72 МЛН
What It Takes To Be A Software Engineer
17:54
Continuous Delivery
Рет қаралды 30 М.
How to -10x Engineer Correctly
22:22
ThePrimeTime
Рет қаралды 473 М.
Why Pull Requests Are A BAD IDEA
19:13
Continuous Delivery
Рет қаралды 223 М.
How To Get Ahead of 99% Of Developers
13:00
Web Dev Cody
Рет қаралды 130 М.
What Software Architecture Should Look Like
19:13
Continuous Delivery
Рет қаралды 81 М.
The Most Legendary Programmers Of All Time
11:49
Aaron Jack
Рет қаралды 514 М.
Is This Why You’re Bad At Programming?
20:09
Continuous Delivery
Рет қаралды 84 М.
Samsung Android Mobile Battrey
0:39
Gaming zone
Рет қаралды 342 М.
😱НОУТБУК СОСЕДКИ😱
0:30
OMG DEN
Рет қаралды 2,3 МЛН