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. Ruminations on the craft

Ruminations on the craft

Scheduled Pinned Locked Moved The Lounge
tutorialc++architecture
33 Posts 20 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.
  • H Offline
    H Offline
    honey the codewitch
    wrote on last edited by
    #1

    I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

    To err is human. Fortune favors the monsters.

    D C abmvA P B 11 Replies Last reply
    0
    • H honey the codewitch

      I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

      To err is human. Fortune favors the monsters.

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

      honey the codewitch wrote:

      I think you can teach any structural engineer how to be a great structural engineer,

      I don't know enough about structural engineering but I know enough about engineering as a whole that while I understand the gist of what you are saying and I partially agree, I'm fairly sure we could both be surprised by the actual practice of any field of engineering. Knowing is all weel and good, experience is paramount but some people just have or have developed an innate knowledge of their craft, a forma mentis that makes them particularly brilliant and allow them to find creative, original or groundbreaking solutions. In my years of working in highly multidisciplinary environment I learnt to never underestimate the level of brilliance people can attain in any field.

      GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

      H 1 Reply Last reply
      0
      • D den2k88

        honey the codewitch wrote:

        I think you can teach any structural engineer how to be a great structural engineer,

        I don't know enough about structural engineering but I know enough about engineering as a whole that while I understand the gist of what you are saying and I partially agree, I'm fairly sure we could both be surprised by the actual practice of any field of engineering. Knowing is all weel and good, experience is paramount but some people just have or have developed an innate knowledge of their craft, a forma mentis that makes them particularly brilliant and allow them to find creative, original or groundbreaking solutions. In my years of working in highly multidisciplinary environment I learnt to never underestimate the level of brilliance people can attain in any field.

        GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

        H Offline
        H Offline
        honey the codewitch
        wrote on last edited by
        #3

        It may not be the most ideal example, but it was the best example I could think of.

        To err is human. Fortune favors the monsters.

        D P 2 Replies Last reply
        0
        • H honey the codewitch

          It may not be the most ideal example, but it was the best example I could think of.

          To err is human. Fortune favors the monsters.

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

          I understand what you're saying, I was just stating that I believe any kind of craft that requires either building something or solving problems can become 'an art', where you have people whose talent allows them to rise above the mere knowledge they possess. They can teach their knowledge, best practices and tricks but their talent cannot be passed down.

          GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

          H 1 Reply Last reply
          0
          • D den2k88

            I understand what you're saying, I was just stating that I believe any kind of craft that requires either building something or solving problems can become 'an art', where you have people whose talent allows them to rise above the mere knowledge they possess. They can teach their knowledge, best practices and tricks but their talent cannot be passed down.

            GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

            H Offline
            H Offline
            honey the codewitch
            wrote on last edited by
            #5

            You're probably right. I'm just up late.

            To err is human. Fortune favors the monsters.

            1 Reply Last reply
            0
            • H honey the codewitch

              I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

              To err is human. Fortune favors the monsters.

              C Offline
              C Offline
              CPallini
              wrote on last edited by
              #6

              When I have to look at their source code, I strongly curse the artists and enjoy the solid, boring coders.

              "In testa che avete, Signor di Ceprano?" -- Rigoletto

              G D C K 4 Replies Last reply
              0
              • C CPallini

                When I have to look at their source code, I strongly curse the artists and enjoy the solid, boring coders.

                "In testa che avete, Signor di Ceprano?" -- Rigoletto

                G Offline
                G Offline
                GuyThiebaut
                wrote on last edited by
                #7

                Absolutely agree! As someone visiting old code(other people's as well as my own) my one immediate concern is "how easy is this to debug?" Software developers sometimes have a tendency to write code with the mindset that "nothing will go wrong" rather than "how easy will it be to debug when something does go wrong"?

                “That which can be asserted without evidence, can be dismissed without evidence.”

                ― Christopher Hitchens

                D C 2 Replies Last reply
                0
                • C CPallini

                  When I have to look at their source code, I strongly curse the artists and enjoy the solid, boring coders.

                  "In testa che avete, Signor di Ceprano?" -- Rigoletto

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

                  Yes, yes I do. My personal objective is to code in the most boring possible way. I lost count of the amount of times I cursed my past self for my bright ideas.

                  GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                  J 1 Reply Last reply
                  0
                  • G GuyThiebaut

                    Absolutely agree! As someone visiting old code(other people's as well as my own) my one immediate concern is "how easy is this to debug?" Software developers sometimes have a tendency to write code with the mindset that "nothing will go wrong" rather than "how easy will it be to debug when something does go wrong"?

                    “That which can be asserted without evidence, can be dismissed without evidence.”

                    ― Christopher Hitchens

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

                    Always strive to write code that is inspectable. In my experience I developed out these few habits: * One statement per line so debuggers will have an easy time setting breakpoints (work enough in embedded and you will sorely miss VisualStudio 6). * No implicit use of function values (i.e. if (FunctionCall() == something). Apart that it's not MISRA compliant so I'd have to do that anyway, it really helps when inspecting the code with watch windows. * When not counterproductive, always follow the most linear path. It's better tho have two sequential blocks that check different conditions than an absurd boolean expression or a multi-nested if-else block. Madness and unexpected behaviors lie that way. Easy to place breakpoints, easy to lay out watch variables, easy to follow code flow.

                    GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                    E 1 Reply Last reply
                    0
                    • D den2k88

                      Yes, yes I do. My personal objective is to code in the most boring possible way. I lost count of the amount of times I cursed my past self for my bright ideas.

                      GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                      J Offline
                      J Offline
                      jsc42
                      wrote on last edited by
                      #10

                      den2k88 wrote:

                      I cursed my past self for my bright ideas

                      Some times the past is only half an hour; and yesterday is a life time ago

                      D 1 Reply Last reply
                      0
                      • J jsc42

                        den2k88 wrote:

                        I cursed my past self for my bright ideas

                        Some times the past is only half an hour; and yesterday is a life time ago

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

                        It definitely happened within the same week.

                        GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                        1 Reply Last reply
                        0
                        • C CPallini

                          When I have to look at their source code, I strongly curse the artists and enjoy the solid, boring coders.

                          "In testa che avete, Signor di Ceprano?" -- Rigoletto

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

                          Amen!

                          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
                          • G GuyThiebaut

                            Absolutely agree! As someone visiting old code(other people's as well as my own) my one immediate concern is "how easy is this to debug?" Software developers sometimes have a tendency to write code with the mindset that "nothing will go wrong" rather than "how easy will it be to debug when something does go wrong"?

                            “That which can be asserted without evidence, can be dismissed without evidence.”

                            ― Christopher Hitchens

                            C Offline
                            C Offline
                            Craig Robbins
                            wrote on last edited by
                            #13

                            When I was part of the team developing OS400 (for the IBM AS/400 and follow on systems) a key goal for me was first failure data capture - so that if a failure occurred there was enough data being logged to find the cause without having to reproduce the error. It didn't always work, but was a worthy goal.

                            1 Reply Last reply
                            0
                            • D den2k88

                              Always strive to write code that is inspectable. In my experience I developed out these few habits: * One statement per line so debuggers will have an easy time setting breakpoints (work enough in embedded and you will sorely miss VisualStudio 6). * No implicit use of function values (i.e. if (FunctionCall() == something). Apart that it's not MISRA compliant so I'd have to do that anyway, it really helps when inspecting the code with watch windows. * When not counterproductive, always follow the most linear path. It's better tho have two sequential blocks that check different conditions than an absurd boolean expression or a multi-nested if-else block. Madness and unexpected behaviors lie that way. Easy to place breakpoints, easy to lay out watch variables, easy to follow code flow.

                              GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                              E Offline
                              E Offline
                              englebart
                              wrote on last edited by
                              #14

                              Agreed. I also like to inject descriptive variables. One team member would “format”/delete them away: eg boolean goodName = complicated not so clear expression; if goodName …

                              D 1 Reply Last reply
                              0
                              • E englebart

                                Agreed. I also like to inject descriptive variables. One team member would “format”/delete them away: eg boolean goodName = complicated not so clear expression; if goodName …

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

                                I "do" that too except that the meaning of descriptive floats and drifts with time, what's descriptive to me today might not be as descriptive in a month to also me or someone else.

                                GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                                1 Reply Last reply
                                0
                                • H honey the codewitch

                                  I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

                                  To err is human. Fortune favors the monsters.

                                  abmvA Offline
                                  abmvA Offline
                                  abmv
                                  wrote on last edited by
                                  #16

                                  whats the point you can't c++ your way though life you need to look for the pointers...

                                  Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long

                                  We are in the beginning of a mass extinction. - Greta Thunberg

                                  D 1 Reply Last reply
                                  0
                                  • abmvA abmv

                                    whats the point you can't c++ your way though life you need to look for the pointers...

                                    Caveat Emptor. "Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long

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

                                    Only smart pointers though :D

                                    GCS/GE d--(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--- r+++ y+++*      Weapons extension: ma- k++ F+2 X

                                    1 Reply Last reply
                                    0
                                    • H honey the codewitch

                                      I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

                                      To err is human. Fortune favors the monsters.

                                      P Offline
                                      P Offline
                                      Paul Sanders the other one
                                      wrote on last edited by
                                      #18

                                      You use the word 'craft'. I like to think of myself as a craftsman. I enjoy, and take pride in, what I do, I like to make a good job of it and I like it when the code is, in some sense, beautiful (it isn't always!)

                                      Paul Sanders. If I had more time, I would have written a shorter letter - Blaise Pascal. Some of my best work is in the undo buffer.

                                      1 Reply Last reply
                                      0
                                      • H honey the codewitch

                                        I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

                                        To err is human. Fortune favors the monsters.

                                        B Offline
                                        B Offline
                                        BillWoodruff
                                        wrote on last edited by
                                        #19

                                        I think you are conflating "hacks," and "clever solutions "with "art." Someone at a high-level of competency with the tools and materials in a certain domain can experience aesthetic qualities when they look at something built using those tools and materials.

                                        «The mind is not a vessel to be filled but a fire to be kindled» Plutarch

                                        G R 2 Replies Last reply
                                        0
                                        • H honey the codewitch

                                          I think any creative process can rise to the level of art when you can't teach someone how to be great at it. I think you can teach any structural engineer how to be a great structural engineer, IMO. If you have the skillset, experience will carry you to greatness. I do not think you can teach any engineer to be a great software developer. The skillset alone isn't enough to foment greatness. Software development in some respects is like cooking, acting, painting, or dancing rather than like blueprinting. Some people just have a knack, but most people will always plateau after a point because raw skillset only carries you so far, no matter how well you know C++ for example. It doesn't mean that most coders can't code. they will just never be what I consider great. You have to have some artist in you, I think. I don't say that to discourage anyone. I routinely code with someone who will never be an artist at the craft, but it's not to say he's not intelligent, or capable. There's nothing wrong with the code he produces. It's a solid average, and easy to understand, so it has that going for it. I can work with that. Very utilitarian. But then there's great code. Code that makes you go "wow, I wish I would have thought of that" He's not going to produce that code, and that's okay. But there's an art to doing so.

                                          To err is human. Fortune favors the monsters.

                                          M Offline
                                          M Offline
                                          megaadam
                                          wrote on last edited by
                                          #20

                                          I agree that higher skill levels of software engineering cannot be taught. I daresay the same thing can be said about e.g. mechanical engineering. I used to think of it as art, when I was much younger. These days I would mosdef not use the word art to describe it. Just like for example ball-sense cannot be taught (nor be called art). If forced to pick an expression would just call it exceptional ability, even if there are some art-like properties to it. Like watching Roger Federer playing tennis.

                                          "If we don't change direction, we'll end up where we're going"

                                          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