What Is A Software Engineer? | Craftsmanship Movement Was A "Step Backwards"

Sdílet
Vložit
  • čas přidán 11. 05. 2024
  • Are you a software engineer or a craftsman (craftsperson)? Dave is joined by Emily Bache to talk about their thoughts on the engineering vs craftsmanship debate.
    You can listen to the full episode HERE ➡️ open.spotify.com/episode/6UYb...
    -
    Emily's CZcams Channel, show your support and subscribe HERE ➡️ / @emilybache-tech-coach
    -
    🗣️ THE ENGINEERING ROOM PODCAST:
    Apple - apple.co/43s2e0h
    Spotify - spoti.fi/3VqZVIV
    Amazon - amzn.to/43nkkRl
    Audible - bit.ly/TERaudible
    -
    🙏The Engineering Room series is SPONSORED BY EQUAL EXPERTS
    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
    -
    #softwareengineer #softwaredevelopment
  • Věda a technologie

Komentáře • 56

  • @7th_CAV_Trooper
    @7th_CAV_Trooper Před 16 dny +32

    I have never, in 30 years, seen any activity remotely approaching engineering in the software industry. We are a field of rules of thumb and anecdotes. The best we can achieve is the title of craftsman - someone who applies rules of thumb to the construction of artifacts. Even this discussion presented by CD is more about the "feels" than anything evidence based. The statement, "I don't want to be called a craftsman," reminds me of George Costanza's utterance, "I always wanted to SAY I'm an architect."
    What's in a word? My job title is Architect, so I get job LinkedIn notices from companies that design buildings. Many years ago, when I told my grandmother I was going to school to become an engineer, she said she never knew I wanted to drive trains.

    • @robinbennett5994
      @robinbennett5994 Před 16 dny +6

      Agreed, IMHO the primary characteristic of engineering is applying science, maths and experimental data to problems. There are a few people doing that, but most of us just use a few basic rules of thumb to decide between competing technologies. Producing polished, well fitting, maintainable code seems a lot more like craft.
      Back when I was studying engineering, I was doing differential calculus 90% of the time, but I've never needed it as a professional programmer.

    • @rtothec1234
      @rtothec1234 Před 15 dny +3

      Always found it weird you could do a few months bootcamp and call yourself an engineer. But there’s little planning and speccing being done. Most _junior engineers_ just seem to copy and paste code from Google and they rarely evolve.

    • @qdeqdeqdeqde
      @qdeqdeqdeqde Před 15 dny

      we can call ourselves engineers. a good explanation why czcams.com/video/CmIGPGPdxTI/video.html (chapter: are we really engineers?)

    • @mecanuktutorials6476
      @mecanuktutorials6476 Před 15 dny +3

      There are products like rockets, industrial equipment, automotive, medical devices, etc. that involve software. In these sorts of applications, there is certainly engineering involved including risk analysis and extensive testing until the product can be productized and sold. However, these are not Computer Science or Information Technology applications; the software is a means to an end in these sorts of products.
      In IT applications meanwhile, there is a Wild West of abstract over complicated thoughts poorly translated into obfuscated code that is completely non-standard and ever growing in complexity for absolutely no clear use cases or reason for being. Then baboom, there are people relying on it for their own stuff at which point (shrug!) hire more people to keep the charade going.
      I really think the root of all evil is just the time pressure of having a MVP to sell. You can’t really do engineering on software because it’s a logical and organizational exercise for a project that gets started long before anyone knows what solution is being built. Codebases start off trying to support everything and eventually degrade because of constant pivoting and chaos.

    • @7th_CAV_Trooper
      @7th_CAV_Trooper Před 15 dny

      @@qdeqdeqdeqde I don't know. He told a story about a guy who worked at Boeing. There's no engineering taking place there anymore.

  • @dlroWolleH
    @dlroWolleH Před 16 dny +7

    Who gaf. Do what you love and get paid. The only thing that matters is the impact you make with software, and the value it adds to your own life.

  • @wsollers1
    @wsollers1 Před 16 dny +6

    There is little engineering in software outside of the biggest/most advanced shops. We have no national/international guidelines and rules. We arenot nearly as rigid as we should be when bringing in random third party dependencies. We do not hold our vendors to account for failures or bugs. We are do not take accountability for our bugs etc. Engineering isn't a creative field. Engineering is about applying tried and true guidelines. Engineering research can be creative. But no one builds an X on the hopes and wishes it doesn't break.

  • @jeffryb
    @jeffryb Před 16 dny +8

    The word you want in this discussion, and haven't hit upon due to limited scope in conceptualization of "craft," is design.

    • @robinbennett5994
      @robinbennett5994 Před 16 dny

      That's true - the important difference between the average programmer and the average brick layer or carpenter is that the programmer spends a lot more time making decisions about the structure of the thing they're building. I'm not sure that helps to decide whether it's engineering or craft though, maybe design is orthogonal to both?

  • @chudchadanstud
    @chudchadanstud Před 16 dny +17

    Why not both? It literally doesn't matter.

    • @kayakMike1000
      @kayakMike1000 Před 16 dny +1

      Would you expect the same result between a craftsman and an engineer if you built, say... A work desk? An engineer would likely give you something extremely plain according to exact specifications... A craftsman would produce something far more visually appealing with extras beyond specs that may include, drawers, organizers, stained wood, and all sorts of features largely based on his experience with desks he has built before.
      Engineering stays exact to specifications, while craftsmanship lends towards coloring outside the lines.

    • @kayakMike1000
      @kayakMike1000 Před 16 dny

      Ooh.. now imagine the original specs did not mention, say any drawer features...
      The engineer finished way faster than the craftsman, that extra feature takes the craftsman some extra time.
      Now imagine the specs mention something around drawers or storage space. Maybe after revision, the craftsman finds his drawers are adequate and the client is happy. The engineer has to update his design, but he turns it around fast by plugging in a cheap filing cabinet under the right side of the desk.
      If the craftsman discovered that his drawers didn't meet the expectations... He would have to redesign the whole desk, perhaps even use different materials ...

    • @chudchadanstud
      @chudchadanstud Před 16 dny +6

      @@kayakMike1000 It literally doesn't matter. I get given a job, I do it. If there's a spec, great, if not, we try to get one done to the best of our ability or we mock and test until everyone's somewhat happy.
      The thought of craftsman vs engineer doesn't cross my mind nor does it affect my work ethic.

    • @foo0815
      @foo0815 Před 16 dny +2

      Of course both. And even more, I'd include "science", too. Depending on the task, you may apply all three.

    • @acmhfmggru
      @acmhfmggru Před 15 dny +1

      ​@@chudchadanstudwhat if you didn't actually make things and instead just talk in circles online about making things? don't you see how the ego boost is necessary in such cases? have some empathy! 👼🏿

  • @THEMithrandir09
    @THEMithrandir09 Před 16 dny +16

    You guys lost the plot. Maybe you should reread the pragmatic programmer and recontextualize this discussion. There are often many ways to solve the same problem, a mathematician would argue infinitely many ways, craftmanship among other things is coming up with rather arbitrary rules and assumptions most people share to e.g. make code more maintainable. And if you think pair programming is a good idea, you're also a craftsman, that's how craftsmen and women were taught for ages.

  • @EvilTribble1
    @EvilTribble1 Před 16 dny +5

    Bit plumbing is so high failure that it would be an embarrassment to call most software "engineered"

  • @damymetzke514
    @damymetzke514 Před 16 dny +3

    This seems to be more about association, and the question is a linguistic one. To me craftsmanship is about a few things, mostly creation and application. Both of which apply to engineering. To me, engineering is a more specific version of craftsmanship. I've had the pleasure of working with civil engineers at my current job, and to me it's just another form of creation and a craft. I think the reason why programming is special in this is because it's deceptively less theoretical compared to other forms of engineering for most people, I consider some code to even have artistic value in a sense. Although the audience for this "art" is quite narrow compared to more common forms of art. In the end programming is on a spectrum, from having very strict design requirements to having full freedom. And I think the more you go to the free side of the spectrum the more it looks and feels like craftsmanship. To me it seems your perspectives are ones that relate more to the restrictive side of programming, which is completely fine and understandable, but if I'm right not representative of programming as a whole.

  • @bc4198
    @bc4198 Před 16 dny +2

    Maybe it's just me with this take, but from a reductive / arbitrary / mundane American university-to-job pipeline POV, I think craft vs. engineering was used as a proxy for "Does this job require a degree that included calculus?"

  • @sustainableCode
    @sustainableCode Před 15 dny

    The interesting aspect of 'Engineering'-ensuring that an app is robust, secure, scalable, and meets all technical specifications-is that it inherently relies on 'Craftsmanship.' Attention to detail, crafting tailored solutions, maintaining high code quality, and focusing on user satisfaction are indispensable for achieving these engineering goals. Therefore, the notion that engineers do not engage in craftsmanship can be misleading.
    While terminology preferences vary-for instance, preferring specific professional titles like 'Informatics Engineer' over general terms like 'developer'-it's essential to recognize that both craftsmanship and engineering are fundamental to the success of software development.

  • @Drew399
    @Drew399 Před 13 dny +1

    Can we get the full episodes on CZcams? Having CZcams premium and not having full podcast is a bit sad 😔

    • @qdeqdeqdeqde
      @qdeqdeqdeqde Před 12 dny

      the audio podcasts are available, video would be nice

    • @ContinuousDelivery
      @ContinuousDelivery  Před 11 dny +1

      Thanks for the feedback. We got lot of feedback that peoples on YT preferred the clips and full episode on podcast 🤷🏻 But the full length videos are published on our Patreon page if that's of interest bit.ly/ContinuousDeliveryPatreon

  • @brownhorsesoftware3605
    @brownhorsesoftware3605 Před 16 dny +4

    For me, software is like Janus, the Roman god of beginnings and endings, with two faces: one looks to the machine, the other looks to the person. The face looking to the machine is an engineer. The face looking to the person is a writer. (Looking to (not at) as in 'in service of'.) The material of software engineering is logic.

  • @sciros
    @sciros Před 16 dny +2

    Me, I only write ARTISANAL software.

  • @ulrichborchers5632
    @ulrichborchers5632 Před 14 dny

    What we do is programming. That is a profession on its own and it is around since decades. We are not engineers, we are not craftsmen, as we are not salespersons and we are not artists. We do programming aka software development, and usually for a living.
    Software development comes with its own challenges, while it can involve several skills and activities, which are also helpful in other professions: Creativity, planning, experimenting, measuring, reasoning, testing, communication (between humans) and so on. These are human skills and activities, not attributes of a specific profession. This should not be confused. A rigid view of the world does not reflect its very nature and not our own.
    So we usually do programming for a living and that is all there is. The hardware which we are programming is completely deterministic. We make sure by excluding randomness with checksums. Measurement and reality checks are deeply integrated into the core of our hardware. The basic building blocks of our profession are very obvious, there is no room and no need for philosophical controversy because of the fundamental principles of what we do for a living. We are not philosophers.
    So of course we have to build a scientific approach and reality checks into what we create on top ("engineering") when we are interested in results, by thinking and acting in a goal-oriented way. To deny that is just obviously careless.
    Of course it helps to strive for software to be "well-crafted". What that means may depend on the particular goal, while a well-structured piece of software seems to be more helpful than a chaotic approach. This is just obvious and not a contradiction at all. The universe will have evaporated into nothingness some day, going from order to entropy and beyond. Order is what is needed to resist that a little longer. That insight can and should be applied to software, too.
    Everyone can establish or become a member of an organization of professionals in particular field. That is a good thing. Call it a "guild", why not. Other professions have that as well. Just do not impose a certain definition upon others by excluding a scientific view of the world. Complete your personal view of the world and go beyond an over-simplified claim, which may even be a good one but not enough by itself. And there is always change. We do not need prejudice against an objective aka scientific view of the world. That is just from the past.

  • @brownhorsesoftware3605

    I think you might be using craft in a very specific way rather than in its more general use to describe something one practices to get better at. Such as 'writing is a craft'. I find the comparison to childhood creations off the point. Software is so ephemeral that it works like a mirror- descriptions of it often illuminate the describer more than the described. So, since my my major was literature, I have always treated software development like any other writing assignment. And that has worked very well.

  • @SteveKuo
    @SteveKuo Před 16 dny +1

    I agree with both of you Dave and Emily on a lot of the items that you bring up. However to me in order to be called an Engineer I feel there needs to be a regulatory body or licensing aspect to the title. Much like other Engineering occupations. Until there is regulatory or licensing requirements it really is just code craft. It would be awesome to have some sort of regulatory organization that would allow for developers to get a standardized score for something instead of mistakenly applying domain expertise and tenure for the measure of "how good one's programming skills are".

  • @higorgranzoto2416
    @higorgranzoto2416 Před 19 hodinami

    Great topic. What about a similar one on software architect role, job or function?

  • @nathanturner6091
    @nathanturner6091 Před dnem

    I think of town planning as a better analogy to software development.

  • @Ged
    @Ged Před 14 dny

    I'd be curious to hear what you think of the book "Software Craftsmanship: A New Imperative" by Pete McBreen and Mike Hendrickson (forward by Dave Thomas). I like their approach to guiding one's own personal development as a programmer, and his notion that educating new programmers should look more like apprenticeship than credentialing, but that could be my own biases as a self-taught programmer showing through. I don't think craftsmanship and engineering are mutually exclusive but rather complementary. Anyway, thanks for the interesting conversation.

  • @StylinEffect
    @StylinEffect Před 14 dny

    What are your thoughts on backlog refinement? Need the whole dev team to have a meeting every Tuesday / Thursday to groom the backlog?

  • @alekseykostyuk3806
    @alekseykostyuk3806 Před 16 dny +12

    Craftsmanship became popular among programmers, when Robert C. Martin made it popular. Back then we had bunch of coders\proprammers\developers, but not engeniers. Being craftsman ment that you value principles, which Uncle Bob brought - SOLID, Clean Architecture, TDD, etc. It has nothing to do with "romantics"... It was a way to differentiate from the common crowd who does not care about the quality as much. In fact it's the same as engeniering you are talking about. Exactly the same what Dan North did to TDD by using BDD.

    • @MrRwilczek
      @MrRwilczek Před 15 dny

      I completely agree. Software Craftmanship never had the flavour of artistry (at least not in the way Robert C. Martin put it), but focused on a professional approach (Clean Code - Clean Coder). It's not so much about making violins or tables as it is about making tools. And to make a hammer, you don't have to do a lot of scientific research, nor do you have to be overly creative. You simply apply the principles that have proven to work well to create a useful hammer. Perhaps Martin would say that in your spare time you should be both a creative artist and a scientific researcher in order to get better, practise and learn. On the other hand, if you are paid to perform on stage, you'd better be a craftsman.
      Neither a dilettante, nor a scientist, nor an artist.

  • @kmac499
    @kmac499 Před 14 dny +1

    I have to disagree mightily here..
    Engineers have a thorough understanding of their area of knowledge from first principles and are primarily designers.
    Craftsmen have experience and a visceral feeling for their chosen medium and are primarily makers.
    Both are creative and innovative..
    As a wise man once told me, anyone can understand how to lay bricks, few can lay them fast enough to make a living

  • @_urbanmonk
    @_urbanmonk Před 14 dny +2

    Both people in the video are completely wrong. Software IS art not engineering. Here’s the proof. Ask 5 structural engineers to engineer a bridge and you get the same more or less bridge in terms of load, materials, tolerances, etc. Because there are maths involved based on physics and the limits of raw and engineered materials. Ask 5 software “engineers” to write a program and you will have completely different programs and hence interpretations of the requirements. Real engineers aren’t creative they have to adhere to limits of physics for both safety and functionality. When a civil engineer designs something that won’t work because of the limits of physics, they don’t just invent a new molecule or bend the laws of physics they must conform. When a software engineer can’t express what they want in a language they just invent a new one so they can. Perl, node.js, Java, Haskell, LIsP, and dozens of other languages are testimony to the art of software and not the engineering.

  • @logiciananimal
    @logiciananimal Před 15 dny

    I think the tension between craft and (aspirationally) engineering for software is found even in other media. I remember the cartoons that came with the Metrowerks CodeWarrior products in the 1990s. CodeWarrior (IDE, compilers, etc.) had these cartoons of a factory worker - manually creating giant CDs by hand. Metrowerks was so small I wonder if one of their developers (and making dev tools no less) was involved. I do know there was an open secret that the character was named "Arnie", after the movie star everyone knows about.

  • @johnforrest695
    @johnforrest695 Před 12 dny

    Over my career I have swung on both sides of this debate. I think there are elements of the industry that are arguably in the bracket - to be honest down in the system, near the hardware and similar embedded systems. However for most of us, I think craftsman (ignoring the lack of gender neutral name) really is more appropriate. Perhaps though it is our model of what a craftsman is that causes us to reject it. I think the nearest we are is to the medieval stonemasons who build cathedrals. There was a standard approach they could alter based on there own and "customer" preferences, as well as site specifics. They worked in teams - it was not a one or even two person operation. Basically there was heuristic knowledge of what (usually) worked and that most would follow. Every now and then, someone would have an idea on an improvement. Sometimes it worked. Generally what they built stayed up but it was based on experience. Compare to now where there would be architects who would design it but would consult structural engineers who would probably generate a model the system but least do lots of calculations based on scientific knowledge of the materials etc. Different engineers, with different skills, would actually build the thing. In our approach we are much nearer the medieval masons than the structural engineers.

  • @kayakMike1000
    @kayakMike1000 Před 16 dny

    Well... Just thinking about my wood working, I am quite good at mitered spline joints and I enjoy making them. They're really strong and I use them all the time... I use 'em even when it makes no real difference...

  • @TheBunzinator
    @TheBunzinator Před 16 dny

    I'm really torn between the two, though I definitely lean towards engineering. We really need a term that encompasses the two.

  • @edgeeffect
    @edgeeffect Před 15 dny

    I grabbed hold of "software craftsmanship" when the idea first arrived. I was trying to convince small businesses that the custom applications I could provide were superior to the fragile Excel solutions that my competitors offered... I even tried to join The Guild of Master Craftsmen.

  • @NextIncrement
    @NextIncrement Před 15 dny

    Interesting perspective! I would say the craftsmanship manifesto is more informative about what that movement was about, and maybe the name wasn't the best.

  • @MisFakapek
    @MisFakapek Před 16 dny

    I see no problem in romantizicing. I believe in a term equality between "well engineered" and "well crafted" when it comes to software engineering. Semantics matter here, software development is very opinionated, rarely scientific. Code Readability and good design has little to do with science and a lot to do with craftsmanship. I know some people frawn upon concept of beautiful software but pursue of elegance feels just right to me. I'm not alone. Leave me alone with my craft that you consider "just engineering".

  • @johnvonachen1672
    @johnvonachen1672 Před 16 dny

    If the problem you are trying to solve is one you are not familiar with then it takes engineering. That means coming up with a solution that satisfies n number of design criteria simultaneously, like time to market, optimized for memory use, good user experience, extensible, etc. If you are solving a problem that others have already solved and you know how they solved it then it’s craftsmanship. Art is taking advantage of accident in order to create something only you the artist have the final word on. Another person, not the artist, cannot point a finger and say the artist made a mistake. I mean they could but it would not make sense. Whereas with craft there are rules or limitation, stipulations. Make model airplane out of matchsticks. It makes more sense to point a finger at it and say they made a mistake. This one matchstick is not aligned like the others. Craft is more easily repeatable. Engineering is simply that you have a list of design criteria and you are solving a problem with all those in mind. Every decision has every design criteria in mind.

    • @7th_CAV_Trooper
      @7th_CAV_Trooper Před 16 dny

      If you're not familiar with the problem then it takes exploration. That's more like science than engineering. Engineering != exploration.

  • @riccardo-964
    @riccardo-964 Před 16 dny

    Totally agree with Emily. Engineering != Art. Perhaps a bit wasteful discussion, but nonetheless something to talk about.

  • @godeketime
    @godeketime Před 15 dny

    I have met software engineers, because I worked in aerospace, but 99% of those who call them selves such are just stealing valor. Software engineers working under a licensed professional engineer with liability insurance to sign off on the systems design and architecture, sure, you pass the gate and are engineers. If you don't know what licensed means or why liability insurance is involved, you are not an engineer.

  • @Vortran
    @Vortran Před 12 dny

    With innate motivation to build ood softwae, why is so much software pure garbage?

  • @martinkristensen5142
    @martinkristensen5142 Před 16 dny

    Could I have engineering done by craftsmen?

    • @7th_CAV_Trooper
      @7th_CAV_Trooper Před 16 dny

      I'm building a home. There's an architect, some engineers, carpenters, plumbers, roofers, electricians, etc. I'm 100% sure the plumber will not be performing any structural engineering calculations. Maybe he's capable, but that's not what I'm paying him for.

  • @srinivaschillara4023
    @srinivaschillara4023 Před 15 dny

    Why do you/we have to break our heads so much about craft vs this-that-or-the-other? You think engineering is the height of human creativity, really, how self congratulatory... and software engineering? But otherwise I agree with all else in this episode.

  • @jamesdoescode
    @jamesdoescode Před 5 dny

    If you're writing code for medical devices or anything like that where lives are at stake, then sure, lets get the engineers involved. But that's not what the vast majority of us are doing. In my job, I think I'm certainly much more like a craftsman than an engineer. Also, I dislike how much you seem to be talking down on the idea of crafts, sure your granddaughter might do some crafts, but to say that's on the same level as a plumber, electrician etc is just ridiculous.

  • @acmhfmggru
    @acmhfmggru Před 15 dny

    this is pretentious and fart sniffing. this is all about ego, and no one who is a serious person has time for that noise.