Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
CODE PROJECT For Those Who Code
  • Home
  • Articles
  • FAQ
Community
  1. Home
  2. The Lounge
  3. Software Engineering: Do You Concur?

Software Engineering: Do You Concur?

Scheduled Pinned Locked Moved The Lounge
learningjavajavascriptcomalgorithms
15 Posts 8 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • raddevusR raddevus

    I just added the book, Modern Software Engineering: Doing What Works to Build Better Software Faster[^] to my bookshelf & began reading it last night. I am so amazed by this clear, clean, lucid explanation (& I'm always excited to find people/authors who think this way) that I had to share it. These ideas of the foundation of what Software Engineering really is are what I've thought about building software for many years but have never been able to express them this way.

    From the Introduction (my emphasis)

    Software development is a process of discovery and exploration; therefore, to succeed at it, software engineers need to become experts at learning. When we organize our thinking this way and start to make progress on the basis of many small, informal experiments, we begin to limit our risk of jumping to inappropriate conclusions and end up doing a better job. Software engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems in software. This means that we must manage the complexity of the systems that we create in ways that maintain our ability to learn new things and adapt to them. So, we must become experts at learning and experts at managing complexity. There are five techniques that form the roots of this focus on learning. Specifically, to become experts at learning, we need the following: * Iteration * Feedback * Incrementalism * Experimentation * Empiricism This is an evolutionary approach to the creation of complex systems. Complex systems don’t spring fully formed from our imaginations. They are the product of many small steps, where we try out our ideas and react to success and failure along the way. These are the tools that allow us to accomplish that exploration and discovery. To become experts at managing complexity, we need the following: * Modularit

    J Offline
    J Offline
    Jeremy Falcon
    wrote on last edited by
    #6

    You forgot to add these points about being a good programmer: * You must think your preferred programming language is better than the others - because the others suck. * You must learn to argue online about the tiniest of things - because you know better than those plebs. * You must be quick to point out other's code flaws while never admitting your own. * You must like Star Wars. Deal with it. * Most importantly, a good programmer hates sunlight and house lights. Only n00bs turn the light on.

    Jeremy Falcon

    C 1 Reply Last reply
    0
    • raddevusR raddevus

      I just added the book, Modern Software Engineering: Doing What Works to Build Better Software Faster[^] to my bookshelf & began reading it last night. I am so amazed by this clear, clean, lucid explanation (& I'm always excited to find people/authors who think this way) that I had to share it. These ideas of the foundation of what Software Engineering really is are what I've thought about building software for many years but have never been able to express them this way.

      From the Introduction (my emphasis)

      Software development is a process of discovery and exploration; therefore, to succeed at it, software engineers need to become experts at learning. When we organize our thinking this way and start to make progress on the basis of many small, informal experiments, we begin to limit our risk of jumping to inappropriate conclusions and end up doing a better job. Software engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems in software. This means that we must manage the complexity of the systems that we create in ways that maintain our ability to learn new things and adapt to them. So, we must become experts at learning and experts at managing complexity. There are five techniques that form the roots of this focus on learning. Specifically, to become experts at learning, we need the following: * Iteration * Feedback * Incrementalism * Experimentation * Empiricism This is an evolutionary approach to the creation of complex systems. Complex systems don’t spring fully formed from our imaginations. They are the product of many small steps, where we try out our ideas and react to success and failure along the way. These are the tools that allow us to accomplish that exploration and discovery. To become experts at managing complexity, we need the following: * Modularit

      N Offline
      N Offline
      Nelek
      wrote on last edited by
      #7

      About the quotes... I have always said: "The best I learned in college was to learn" Side note: I met the new division boss last week for the first time and had a chat with him. During the conversation he said a similar approach to that. A good boss needs two skills. Managing and leading. Managing is to get an overview of what it is and make the best out of it. Leading is to look at the future and see how can the status quo be improved and look for the proper steps to reach it, even when that implies to drop everything and to start over. I found it an interesting point, too.

      M.D.V. ;) If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about? Help me to understand what I'm saying, and I'll explain it better to you Rating helpful answers is nice, but saying thanks can be even nicer.

      1 Reply Last reply
      0
      • Greg UtasG Greg Utas

        Although I agree with what you've quoted, it really isn't new. And to be blunt, it's mostly platitudes. The challenge is how to actually achieve those characteristics in an actual system or even the process used to build it.

        Robust Services Core | Software Techniques for Lemmings | Articles
        The fox knows many things, but the hedgehog knows one big thing.

        C Offline
        C Offline
        charlieg
        wrote on last edited by
        #8

        Thank you Greg, I was already gagging. Apologies to the original poster. The problem with software development is management. Period. There are only some who can drive software development to simplicity. Do not manage complexity, remove it. Here's your sign - when you have to design to a trade show date but have no control over features, one side or the other is delusional. Or in denial. I'd argue that good software engineering, engineering in general or ANY constructive process succeeds when you stop doing what fails. I've worked in places where no one will change the CPU because we just need more power - instead, they will save $/board and spend 2 million in engineering dollars then slap the developers for their stupidity.

        Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

        Greg UtasG 1 Reply Last reply
        0
        • J Jeremy Falcon

          You forgot to add these points about being a good programmer: * You must think your preferred programming language is better than the others - because the others suck. * You must learn to argue online about the tiniest of things - because you know better than those plebs. * You must be quick to point out other's code flaws while never admitting your own. * You must like Star Wars. Deal with it. * Most importantly, a good programmer hates sunlight and house lights. Only n00bs turn the light on.

          Jeremy Falcon

          C Offline
          C Offline
          charlieg
          wrote on last edited by
          #9

          sarcassm? :) that's where the senior engineer or product lead tells you to stfu or find another job. I'm sorry, engineering sometimes involves group cooperation, but there must be the evil overlord to keep the children from fighting. I had an argument many years ago with a midrange developer who worked for me. He did not believe in source control / management. Really? I said. He said, yeah, complete waste of time. I blinked, and said, "you can't work for me, find another project." He said, "Really?" Every project needs leadership specifically technical leadership, not suggestive leadership. Group think is a total fail.

          Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

          J 1 Reply Last reply
          0
          • C charlieg

            Thank you Greg, I was already gagging. Apologies to the original poster. The problem with software development is management. Period. There are only some who can drive software development to simplicity. Do not manage complexity, remove it. Here's your sign - when you have to design to a trade show date but have no control over features, one side or the other is delusional. Or in denial. I'd argue that good software engineering, engineering in general or ANY constructive process succeeds when you stop doing what fails. I've worked in places where no one will change the CPU because we just need more power - instead, they will save $/board and spend 2 million in engineering dollars then slap the developers for their stupidity.

            Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

            Greg UtasG Offline
            Greg UtasG Offline
            Greg Utas
            wrote on last edited by
            #10

            I would agree that management is often the problem, but hardly exclusively. It can be hard to get the domain model right, and kludgers are ever with us.

            Robust Services Core | Software Techniques for Lemmings | Articles
            The fox knows many things, but the hedgehog knows one big thing.

            <p><a href="https://github.com/GregUtas/robust-services-core/blob/master/README.md">Robust Services Core</a>
            <em>The fox knows many things, but the hedgehog knows one big thing.</em></p>

            D C 2 Replies Last reply
            0
            • Greg UtasG Greg Utas

              I would agree that management is often the problem, but hardly exclusively. It can be hard to get the domain model right, and kludgers are ever with us.

              Robust Services Core | Software Techniques for Lemmings | Articles
              The fox knows many things, but the hedgehog knows one big thing.

              D Offline
              D Offline
              David ONeil
              wrote on last edited by
              #11

              "Models are for sissies! Get to work!" :laugh:

              Our Forgotten Astronomy | Object Oriented Programming with C++ | Wordle solver

              1 Reply Last reply
              0
              • Greg UtasG Greg Utas

                I would agree that management is often the problem, but hardly exclusively. It can be hard to get the domain model right, and kludgers are ever with us.

                Robust Services Core | Software Techniques for Lemmings | Articles
                The fox knows many things, but the hedgehog knows one big thing.

                C Offline
                C Offline
                charlieg
                wrote on last edited by
                #12

                I explained my attitude poorly. By management, there are the people who are not technical making product decisions and what not. There are others, senior developers, tech leads, whatever you want to call them, but someone technical *must* be in charge. That person has the "no that's not how we're going to do it" authority and actually uses it. I have heard it said that managing sw developers is like herding cats. Someone has to be the dog, the captain, whatever metaphor you want :). I've worked on teams where everyone was really smart, some excessively so. The lead wanted us all to cooperate. What happened? kludge here, design change there, bugs later.

                Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                1 Reply Last reply
                0
                • raddevusR raddevus

                  I just added the book, Modern Software Engineering: Doing What Works to Build Better Software Faster[^] to my bookshelf & began reading it last night. I am so amazed by this clear, clean, lucid explanation (& I'm always excited to find people/authors who think this way) that I had to share it. These ideas of the foundation of what Software Engineering really is are what I've thought about building software for many years but have never been able to express them this way.

                  From the Introduction (my emphasis)

                  Software development is a process of discovery and exploration; therefore, to succeed at it, software engineers need to become experts at learning. When we organize our thinking this way and start to make progress on the basis of many small, informal experiments, we begin to limit our risk of jumping to inappropriate conclusions and end up doing a better job. Software engineering is the application of an empirical, scientific approach to finding efficient, economic solutions to practical problems in software. This means that we must manage the complexity of the systems that we create in ways that maintain our ability to learn new things and adapt to them. So, we must become experts at learning and experts at managing complexity. There are five techniques that form the roots of this focus on learning. Specifically, to become experts at learning, we need the following: * Iteration * Feedback * Incrementalism * Experimentation * Empiricism This is an evolutionary approach to the creation of complex systems. Complex systems don’t spring fully formed from our imaginations. They are the product of many small steps, where we try out our ideas and react to success and failure along the way. These are the tools that allow us to accomplish that exploration and discovery. To become experts at managing complexity, we need the following: * Modularit

                  J Offline
                  J Offline
                  jschell
                  wrote on last edited by
                  #13

                  raddevus wrote:

                  Software development is a process of discovery and exploration;

                  Errr...Software development is the process of delivering functionality on which businesses can make money. The feel-good stuff only works as long as you are getting a nice big paycheck.

                  raddevus wrote:

                  To become experts at managing complexity, we need the following:

                  Nice buzzwords but without the understanding of how to use those to facilitate long term actual cost reduction for the business they don't mean much. Without that understanding the misuse will lead to increased complexity which leads to more fragile software and higher maintenance costs. But perhaps all of that is in a latter chapter.

                  1 Reply Last reply
                  0
                  • C charlieg

                    sarcassm? :) that's where the senior engineer or product lead tells you to stfu or find another job. I'm sorry, engineering sometimes involves group cooperation, but there must be the evil overlord to keep the children from fighting. I had an argument many years ago with a midrange developer who worked for me. He did not believe in source control / management. Really? I said. He said, yeah, complete waste of time. I blinked, and said, "you can't work for me, find another project." He said, "Really?" Every project needs leadership specifically technical leadership, not suggestive leadership. Group think is a total fail.

                    Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                    J Offline
                    J Offline
                    Jeremy Falcon
                    wrote on last edited by
                    #14

                    charlieg wrote:

                    that's where the senior engineer or product lead tells you to stfu or find another job. I'm sorry, engineering sometimes involves group cooperation, but there must be the evil overlord to keep the children from fighting.

                    I'd never hire a senior that can't take a joke though. If you can't laugh, you're not that intelligent.

                    charlieg wrote:

                    I had an argument many years ago with a midrange developer who worked for me. He did not believe in source control / management. Really? I said. He said, yeah, complete waste of time. I blinked, and said, "you can't work for me, find another project." He said, "Really?" Every project needs leadership specifically technical leadership, not suggestive leadership. Group think is a total fail.

                    Not sure how this relates to my joking, but sure ok. Keep in mind, it's your or your company's fault for hiring and/or calling a dude like that midrange. I wouldn't call that dude a junior.

                    Jeremy Falcon

                    C 1 Reply Last reply
                    0
                    • J Jeremy Falcon

                      charlieg wrote:

                      that's where the senior engineer or product lead tells you to stfu or find another job. I'm sorry, engineering sometimes involves group cooperation, but there must be the evil overlord to keep the children from fighting.

                      I'd never hire a senior that can't take a joke though. If you can't laugh, you're not that intelligent.

                      charlieg wrote:

                      I had an argument many years ago with a midrange developer who worked for me. He did not believe in source control / management. Really? I said. He said, yeah, complete waste of time. I blinked, and said, "you can't work for me, find another project." He said, "Really?" Every project needs leadership specifically technical leadership, not suggestive leadership. Group think is a total fail.

                      Not sure how this relates to my joking, but sure ok. Keep in mind, it's your or your company's fault for hiring and/or calling a dude like that midrange. I wouldn't call that dude a junior.

                      Jeremy Falcon

                      C Offline
                      C Offline
                      charlieg
                      wrote on last edited by
                      #15

                      Oh, well, I did ask :). No we're good, and I meant my comment to indicate I picked up on it. What exactly results when you square sarcasm? I just think it's hilarious that the biggest argument and passive rebellious behavior was about coding standards. Meanwhile, there was no standard for error checking. Even after project - 1 went through misery dealing with ftp errors, here we are again. That's the point of the evil overlord, the passionate benevolent leader that doesn't have a problem about arguing and debating without HR getting involved. Sorry, been in the trenches a long time

                      Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups