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
  1. Home
  2. The Lounge
  3. What does software engineering look like, in practical terms?

What does software engineering look like, in practical terms?

Scheduled Pinned Locked Moved The Lounge
pythoncomdesigngame-devfunctional
80 Posts 36 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.
  • M Marc Clifton

    I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

    Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

    D Offline
    D Offline
    den2k88
    wrote on last edited by
    #17

    Engineering looks like a pile of sheets with a lot of poorly drawn correct diagrams, awesomely drawn wrong diagrams, scraped lines, hastily written and more hastily forgotten "illuminations". Followed by smaller and smaller piles of similar sheets of improved quality. It's the most abstract and time consuming part, requiring focused meetings (not scrum, not at all) with the minimum necessary number of people and open minds - which means that after an hour everyone goes back to solo thinking and meet the next day. The only engineering skill that I learnt in college is to be as rigorous and factual as possible. Record all the results of the experiments, all the intermediate results and the procedures used to obtain those intermediate results and the indexes used for the decisions. Everything else is experience and personal initiative - the first requires time ("it takes a year to make a year of experience"), the latter is a tract, you have it or you don't have it. College also taught me methods to be factual and rigorous, in the form of Mathematical Analysis, Logic, Statistics and courses of Engineering - they are useful in that they make you design standard cases with the tools used to solve them the first time and then explaining how they were solved in the first place. Basically they are history classes on engineering matters. As for design patterns I have some trouble with the term because I have a colleague (self-taught) who misuses them on regular basis because deep down he does not understande them and makes things harder for everyone else. Then reasoning on the real meaning of the term I recognize that I use them as well, because THEY WORK, even if usaully in my team we prefer reinventing the wheel. We do embedded highly customized systems so it's usually the saner thing to do - standard components or pre-cooked desgin patterns never worked for us in the past 25 years.

    GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++*      Weapons extension: ma- k++ F+2 X If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani

    1 Reply Last reply
    0
    • B Basildane

      Yeah. Irony: My son is now at the script kiddie age (14). So, his mom and I set him up with a VMWare platform with hosts running Linux. No GUI's are allowed. He builds and hosts servers from command line only. One year on, he's kicking ass and has paying customers.

      M Offline
      M Offline
      Marc Clifton
      wrote on last edited by
      #18

      Basildane wrote:

      He builds and hosts servers from command line only. One year on, he's kicking ass and has paying customers.

      That is awesome! Marc

      Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

      1 Reply Last reply
      0
      • M Marc Clifton

        I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

        Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

        L Offline
        L Offline
        Lost User
        wrote on last edited by
        #19

        Marc Clifton wrote:

        how do you practice it in, well, practical terms?

        Someone assigns tasks during a sprint.

        Marc Clifton wrote:

        for those with some level of college degree, did college teach you engineering skills

        Schools are there to make sure you become obedient, not to convey knowledge.

        Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^][](X-Clacks-Overhead: GNU Terry Pratchett)

        B G 2 Replies Last reply
        0
        • M Marc Clifton

          OriginalGriff wrote:

          except the in depth stuff has vanished

          I've noticed that. 30 years ago, my friend was graduating from UCSD with a degree in computer science, and everything he knew that was practical he had learned himself, particularly, modern (at the time) languages, tools, hardware, etc. 30 years later, I'm talking to a graduate of U. of Tennessee and the poor kid hasn't had any school exposure to languages like C#, and no exposure to modern tools (IDE's, debuggers, etc), again, anything he's learned he has learned on his own. Marc

          Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

          D Offline
          D Offline
          den2k88
          wrote on last edited by
          #20

          Marc Clifton wrote:

          the poor kid hasn't had any school exposure to languages like C#, and no exposure to modern tools (IDE's, debuggers, etc), again, anything he's learned he has learned on his own.

          Honestly I think it's a plus. Learning how to think, how to write algorithms and the hard science is more important than leanring the usage of tools. A properly trained mind can master any tool in a reasonable amount of time, even after paradigm shifts ot big technological changes. An ignorant mind who's been trained only in the use of some tools won't be able to adapt as easily. Of course every person is a world in itself so it's a GENERAL consideration. It's not the Education System that has to teach jobs for the companies, that is responsibility of the companies themselves. The Education System must create people, with the skills and mindset to approach their trade and life itself. In Italy we have Professional Schools, they are high schools that teach 5 years straight a trade, and we have Technical Schools, which are basically light engineering (up to 30 years ago the graduated students from those high schools were officially named Junior Engineers, with legal value). At the Technical University I (coming from a Technical high school) had the chance to confront with students coming from Professional Schools: they looked like monsters. They knew all the current tools and were able to quickly put up some sort of working... things. But they weren't able to design a simple algorithm or to learn plain C, because they were only trained to use a couple of languanges... of which they botched the exams. And they were anything but stupid, mind you. It's also the biggest chasm between Computer Science and Computer Engineering, at least in my city. CS students exit with many, many more "current" skills than us in CE. And quickly lose value and adaptability over the next 5-10 years. Our Technological University clearly stated that their most radicated goal is to make us as much tool-independent as possible.

          GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++*      Weapons extension: ma- k++ F+2 X If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani

          1 Reply Last reply
          0
          • B Basildane

            Got it. I see that too. You have swarms of high-schoolers who are only interested in writing games for iOS. But we've had that kind of people in our midst since the beginning. Important systems running on big hardware still run the world. I laugh at people who say the iPhone is replacing the desktop. If anything, I want my desktop system to be even more powerful. My friend just added a 43 inch monitor to his development workstation. I don't see myself sitting in a corner building systems on a 4.5 inch phone. Can you imagine doing AutoCAD drawings of a space station on an iPhone? I can't. Don't get me wrong, those toys are really cool, and I use one myself. But that doesn't take away from the real data processing needs of the world. And the infrastructure that runs those millions of iPhones are not running on little iPhones. They are running on real hardware. Built by real engineers.

            D Offline
            D Offline
            den2k88
            wrote on last edited by
            #21

            If you send me a picture of yourself I'll start building your statue right away. :thumbsup::thumbsup:

            GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++*      Weapons extension: ma- k++ F+2 X If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani

            1 Reply Last reply
            0
            • L Lost User

              Marc Clifton wrote:

              how do you practice it in, well, practical terms?

              Someone assigns tasks during a sprint.

              Marc Clifton wrote:

              for those with some level of college degree, did college teach you engineering skills

              Schools are there to make sure you become obedient, not to convey knowledge.

              Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^][](X-Clacks-Overhead: GNU Terry Pratchett)

              B Offline
              B Offline
              Basildane
              wrote on last edited by
              #22

              Quote:

              Schools are there to make sure you become obedient, not to convey knowledge.

              Exactly. That's why we home-school.

              1 Reply Last reply
              0
              • P Pete OHanlon

                I get the feeling that Marc's post has less to do with software engineering being dead and more to do with the cult of the script kiddies who seem to want to jump onto the latest shiny, rather than applying rigour and discipline to build and maintain systems. Marc has just been through a particularly bruising application of this where a well engineered system has been cast aside to allow the children to write a new Python based one, from scratch, simply because they have the CTO's ear.

                This space for rent

                D Offline
                D Offline
                Dominic Burford
                wrote on last edited by
                #23

                You can't blame the "children" for that, they didn't make that decision. The CTO did. And calling them "children" is probably a little patronising, we were all young once.

                "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                1 Reply Last reply
                0
                • M Marc Clifton

                  John Simmons / outlaw programmer wrote:

                  I personally don't think an app can be properly engineered in an agile environment.

                  Now that opens a door, actually a chasm, which would make for an interesting discussion. Care to elaborate? :) Marc

                  Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                  R Offline
                  R Offline
                  raddevus
                  wrote on last edited by
                  #24

                  I believe he meant to say,

                  I don't think.

                  and

                  An app can be properly engineered in an agile environment.

                  :laugh: :laugh: Oh, I know I've started a war now. Oh well. :-D Disclaimer I'm just kidding around with the "I don't think" thing. Let's keep it light out there people. :) Honestly, if you understand the heart of Agile -- if you would actually read the book by one of the originally creators of the methodology (Amazon.com: Scrum: The Art of Doing Twice the Work in Half the Time eBook: Jeff Sutherland, Jj Sutherland: Kindle Store[^] ) -- I believe you would find that Agile is really the _ONLY_ way that work gets done. Not only in software development but in other things too. I use the heart of Agile in everything I do. What is the heart? 1. Make a (basic) plan of attack for your project 2. implement the steps in the plan 3. alter the parts of your plan which don't work for reality 4. iterate through 2 to 3 until you've created your product. We who create real things know that plans are not perfect but you have to have one. Methodologies are often over-hyped best practices that people really use and authors have turned into books. However, the real Agile process is quite interesting. But companies (almost) always corrupt it.

                  My book, Launch Your Android App, is available at Amazon.com.

                  R M S M 4 Replies Last reply
                  0
                  • M Marc Clifton

                    I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

                    Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                    D Offline
                    D Offline
                    Dominic Burford
                    wrote on last edited by
                    #25

                    As a member of the BCS over here in the UK I remember attending a seminar from a software engineer from the Ministry of Defence who was involved in the development of avionics and navigation software for their jets. And it was eye opening exercise. I had no idea development teams actually used things like Z (the formal programming language) in practice. The level of discipline was far beyond anything I had encountered in real life. Their procedures were extremely disciplined. The key point is that engineering is a set of rigorous disciplines used to build applications. The level to which we employ these disciplines depends on the goals, costs and risks. It takes time, effort, cost and skill to build these sorts of systems. You therefore need to weigh these against the goals. Obviously in avionics, a software bug can lead to a fatality so higher levels of engineering discipline are required than for say a web site. I graduated with a degree in Computer Studies nearly two decades ago where I was taught software design, Z, formal methods, computational mathematics, data structures etc. All of these can be thought of as engineering disciplines.

                    "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                    M M 2 Replies Last reply
                    0
                    • M Marc Clifton

                      I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

                      Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                      D Offline
                      D Offline
                      Duncan Edwards Jones
                      wrote on last edited by
                      #26

                      Also, I would add that a lot of what is portrayed as "software engineering" practice is, in fact, project management. Agile v Waterfall v whatever is all about how you get teams to work together on software and nothing about how you get software to work. Many of our industry failings are human failings - but sadly we persist in trying to find technological solutions for them.

                      M 1 Reply Last reply
                      0
                      • M Marc Clifton

                        I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

                        Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

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

                        Marc Clifton wrote:

                        I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job?

                        I only consider 8 or 9 subjects (from over 40) that teached me something that have been really usefull and have been using a while in work life. At the beginning I was trying to learn a lot of stuff and got overwhelmed. Was never happy with my results and eventually got demotivated. After a time and one sommer job as electical monteaur I changed my mind and started paying way more attention to (what others already mentioned) the methodes and less to the concrete contents. I experienced an increase of my confidence and I started to feel good with it. Later on I just learned specifics enough to pass the exam. I don't remember 90% of the formulas and other concrete staff, but give me a problem of the lessons, a book related or the internet and I will be solving it after a while. So as conclusion I would say: The most important lesson I got from college was... to learn how to learn. The rest came with job / life experience.

                        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.

                        M G 2 Replies Last reply
                        0
                        • M Marc Clifton

                          I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

                          Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                          M Offline
                          M Offline
                          Marco Bertschi
                          wrote on last edited by
                          #28

                          - Gathering customer requirements - Software Architecture - Support concepts (logging, builtin-help etc.) All that and many more are software engineering, and in some terms even Usability Engineering (at least part of it) could count in as being a part of Software Engineering.

                          M 1 Reply Last reply
                          0
                          • D Dominic Burford

                            As a member of the BCS over here in the UK I remember attending a seminar from a software engineer from the Ministry of Defence who was involved in the development of avionics and navigation software for their jets. And it was eye opening exercise. I had no idea development teams actually used things like Z (the formal programming language) in practice. The level of discipline was far beyond anything I had encountered in real life. Their procedures were extremely disciplined. The key point is that engineering is a set of rigorous disciplines used to build applications. The level to which we employ these disciplines depends on the goals, costs and risks. It takes time, effort, cost and skill to build these sorts of systems. You therefore need to weigh these against the goals. Obviously in avionics, a software bug can lead to a fatality so higher levels of engineering discipline are required than for say a web site. I graduated with a degree in Computer Studies nearly two decades ago where I was taught software design, Z, formal methods, computational mathematics, data structures etc. All of these can be thought of as engineering disciplines.

                            "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

                            M Offline
                            M Offline
                            Marc Clifton
                            wrote on last edited by
                            #29

                            Great response. Thank you! Marc

                            Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                            1 Reply Last reply
                            0
                            • D Duncan Edwards Jones

                              The techniques used to build a treehouse* don't work when building a cathedral nor vice versa. The same is true of IT - you need to know what type of a thing you are building before deciding what techniques to use. Sadly in my experience in a very significant percentage of cases that first step is not taken. We decide the techniques to use based on factors external to what we are going to do with them - including external influencers (Gartner &c.) and existing experience. I learnt database design (Codd's laws) and object oriented programming at college. This was a long time ago but I imagine things like MVVM would be in whatever has replaced my course. Sadly I was also taught monolithic system design and it has taken me 2 decades to undo that. * This is not meant to be pejorative - I'm just illustrating the point. Personally I prefer treehouses to cathedrals :-)

                              M Offline
                              M Offline
                              Marc Clifton
                              wrote on last edited by
                              #30

                              Duncan Edwards Jones wrote:

                              Sadly in my experience in a very significant percentage of cases that first step is not taken.

                              Indeed, it's what I'm seeing happen -- throw some code together, plug in some open source solutions, assume they work correctly, etc. It's all driven by the "we need to get product out the door now." Marc

                              Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                              D 1 Reply Last reply
                              0
                              • D Duncan Edwards Jones

                                Also, I would add that a lot of what is portrayed as "software engineering" practice is, in fact, project management. Agile v Waterfall v whatever is all about how you get teams to work together on software and nothing about how you get software to work. Many of our industry failings are human failings - but sadly we persist in trying to find technological solutions for them.

                                M Offline
                                M Offline
                                Marc Clifton
                                wrote on last edited by
                                #31

                                Duncan Edwards Jones wrote:

                                a lot of what is portrayed as "software engineering" practice is, in fact, project management. Agile v Waterfall v whatever is all about how you get teams to work together on software and nothing about how you get software to work.

                                Great point! Marc

                                Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                                1 Reply Last reply
                                0
                                • N Nelek

                                  Marc Clifton wrote:

                                  I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job?

                                  I only consider 8 or 9 subjects (from over 40) that teached me something that have been really usefull and have been using a while in work life. At the beginning I was trying to learn a lot of stuff and got overwhelmed. Was never happy with my results and eventually got demotivated. After a time and one sommer job as electical monteaur I changed my mind and started paying way more attention to (what others already mentioned) the methodes and less to the concrete contents. I experienced an increase of my confidence and I started to feel good with it. Later on I just learned specifics enough to pass the exam. I don't remember 90% of the formulas and other concrete staff, but give me a problem of the lessons, a book related or the internet and I will be solving it after a while. So as conclusion I would say: The most important lesson I got from college was... to learn how to learn. The rest came with job / life experience.

                                  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.

                                  M Offline
                                  M Offline
                                  Marc Clifton
                                  wrote on last edited by
                                  #32

                                  Nelek wrote:

                                  to learn how to learn. The rest came with job / life experience.

                                  Same here. Marc

                                  Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                                  1 Reply Last reply
                                  0
                                  • M Marc Clifton

                                    Duncan Edwards Jones wrote:

                                    Sadly in my experience in a very significant percentage of cases that first step is not taken.

                                    Indeed, it's what I'm seeing happen -- throw some code together, plug in some open source solutions, assume they work correctly, etc. It's all driven by the "we need to get product out the door now." Marc

                                    Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                                    D Offline
                                    D Offline
                                    Duncan Edwards Jones
                                    wrote on last edited by
                                    #33

                                    The cult of "minimum viable product" strikes again. I usually fall back on the argument - "If this were a medicine would you feel confident in taking it yourself? If this were an airline would you fly with it?" (Again - if this is a treehouse type of project then the medicine is a placebo and the airline is a lego toy)

                                    1 Reply Last reply
                                    0
                                    • M Marco Bertschi

                                      - Gathering customer requirements - Software Architecture - Support concepts (logging, builtin-help etc.) All that and many more are software engineering, and in some terms even Usability Engineering (at least part of it) could count in as being a part of Software Engineering.

                                      M Offline
                                      M Offline
                                      Marc Clifton
                                      wrote on last edited by
                                      #34

                                      Marco Bertschi (SFC) wrote:

                                      Gathering customer requirements

                                      An often forgotten step.

                                      Marco Bertschi (SFC) wrote:

                                      Software Architecture

                                      But what is that? How do you (specifically you) go about doing that?

                                      Marco Bertschi (SFC) wrote:

                                      Support concepts (logging, builtin-help etc.)

                                      Aye, logging. The architecture that I was using, courtesy of the pub/sub system I wrote, logs to wherever (PaperTrailApp being a favorite) and exceptions are caught and emailed to me (quite fun when that's in place at that get go.)

                                      Marco Bertschi (SFC) wrote:

                                      All that and many more are software engineering, and in some terms even Usability Engineering (at least part of it) could count in as being a part of Software Engineering.

                                      Hmm, Usability Engineering, there's something to think about. What about "Maintainability Engineering" -- writing the code so that other programmers can easily understand it? There seems to be a tension there that I encounter a lot, particularly with junior devs, who really don't understand well enough the language (C#), the framework (.NET), and the architectural decisions that the senior developer (moi) made. Marc

                                      Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                                      N M 3 Replies Last reply
                                      0
                                      • M Marc Clifton

                                        I'm actually thinking of writing an article entitled "Software Engineering is Dead", but I want to ask y'all, when you think of software engineering, how do you practice it in, well, practical terms? Anything from doing detail design analysis, prototypes (that don't turn into production code), design patterns, high level architectures like messaging, pub/sub, modular, service oriented, async, etc., all are fair game for what, in practice, "engineering" looks like. (Note how I snuck the idea of "high level architecture" into the idea of "engineering".) I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job? Marc

                                        Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

                                        H Offline
                                        H Offline
                                        HobbyProggy
                                        wrote on last edited by
                                        #35

                                        Marc Clifton wrote:

                                        how do you practice it in, well, practical terms?

                                        Well basically as you list it up, i go from idea to the lowest block of work / module / codepart. So i start with a big overall architecture, split it up into themed blocks and then reduce those further. I try to fit in patterns and stuff, according to what my product should achieve. Think about security and logging. Make plans and detail all the functions, generate tests and so on. For example i have a big overall (ListOfCustomersProgram), this gets splited into business code (doing the work) dataCode (DBO/Models) and the UI (Usercontrols) and then i split those parts even futher. After connecting the parts i decide where to split into Frameworks / .dll and which parts i can modularize into separate projects. This is just a small part of the whole engineering though :| And that's engineering for me, at least kind of.

                                        Marc Clifton wrote:

                                        I'm also curious, for those with some level of college degree, did college teach you engineering skills, or did you learn them yourself or on the job?

                                        We got the modules SoftwareEngineering 1 and 2 so actually i had 2 semesters on dealing with this things. But i can't remember everything we learned there :)

                                        Rules for the FOSW ![^]

                                        if(this.signature != "")
                                        {
                                        MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
                                        }
                                        else
                                        {
                                        MessageBox.Show("404-Signature not found");
                                        }

                                        1 Reply Last reply
                                        0
                                        • M Marc Clifton

                                          Marco Bertschi (SFC) wrote:

                                          Gathering customer requirements

                                          An often forgotten step.

                                          Marco Bertschi (SFC) wrote:

                                          Software Architecture

                                          But what is that? How do you (specifically you) go about doing that?

                                          Marco Bertschi (SFC) wrote:

                                          Support concepts (logging, builtin-help etc.)

                                          Aye, logging. The architecture that I was using, courtesy of the pub/sub system I wrote, logs to wherever (PaperTrailApp being a favorite) and exceptions are caught and emailed to me (quite fun when that's in place at that get go.)

                                          Marco Bertschi (SFC) wrote:

                                          All that and many more are software engineering, and in some terms even Usability Engineering (at least part of it) could count in as being a part of Software Engineering.

                                          Hmm, Usability Engineering, there's something to think about. What about "Maintainability Engineering" -- writing the code so that other programmers can easily understand it? There seems to be a tension there that I encounter a lot, particularly with junior devs, who really don't understand well enough the language (C#), the framework (.NET), and the architectural decisions that the senior developer (moi) made. Marc

                                          Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny

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

                                          Marc Clifton wrote:

                                          here seems to be a tension there that I encounter a lot, particularly with junior devs, who really don't understand well enough the language (C#), the framework (.NET), and the architectural decisions that the senior developer (moi) made.

                                          They will eventually get the point and learn from it. Last job we were 3 seniors at the end, one was often abroad, the other has no patience, so I got the privilege of teaching the newbies. My first 3 days were just about... naming, commenting, documentation and my list of best practices. Then we got into theoretical aspects of the programing enviroment and the PLC intern structure. Then started with real program examples (my biggest project and the software I was most proud of), I really doubt any of the ones I teached had been confronted to something more exhaustive than that. They all flipped out the first month, but at the end (when I quitted the firm) all came to me and told me different variations of "thanks for kicking my ass at the beginning, it later made my life easier"

                                          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
                                          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