(Topic ID: 284953)

Software development hangout

By skink91

3 years ago


Topic Heartbeat

Topic Stats

  • 77 posts
  • 19 Pinsiders participating
  • Latest reply 3 years ago by skink91
  • Topic is favorited by 8 Pinsiders

You

Linked Games

No games have been linked to this topic.

    Topic poll

    “Software development hangout”

    • I do software work. 19 votes
      63%
    • I don’t work on software (but this is interesting) 7 votes
      23%
    • Nerds! (I’m out of here... losers) 4 votes
      13%

    (30 votes)

    You're currently viewing posts by Pinsider flynnibus.
    Click here to go back to viewing the entire thread.

    #43 3 years ago
    Quoted from skink91:

    So to carry on the conversation I am trying to move out of a different thread: what is the difference between a software-engineer and a programmer/coder? I personally don’t believe there is such a separation.
    IMHO: the idea of software-engineering was created by academia to create an imaginary specialty.
    (and yes, I did just make an inflammatory statement to try and elicit outrage responses)

    I think the distinction is in 'one who implements' vs 'one that designs'.

    There are mountains of people who can take a spec and implement it in code... but they just are code monkeys who take literal definitions and implement them in a known language. With them, you get little creativity, little ingenuity, and will drive directly into a wall if that's what the spec says to do and call it 'complete'.

    Where as a true Developer/Scientist works beyond the 'writing the code' and actually is capable/responsible for working on the algorithms or strategies on how to tackle the problem. They also scheme the new ways to solve the problems. They don't just 'implement', they 'create' and then just map those ideas into code. In my experience they are far more likely to come up with elegant approaches in the software because they aren't just using lego blocks, but instead understand and take into consideration what the compliers or hardware constraints.

    The label 'computer engineer' or 'software engineer' at least my experience was from when Universities were expanding the classic electrical engineering curiculum with a hybrid CompSci/EE program. Those 'Computer Engineering' majors would take the traditional first two years of common engineering (math, physics, sciences) but their disciple went to CompSci instead of further sciences for their later years.

    I'll never forget when I was interviewing for university.. and I was sitting with the CompSci advisor and I asked "Ok, so when do you get to play with the hardware..." and he said "you don't...". I said "you spend 4 years at the keyboard?" to which he basically acknowledged as 'yes...' -- I then went right to the EE department and did EE instead

    But by the time I was finishing.. the idea of Digital Signal Processing had expanded the power/reach/importance of programming over pure hardware. The number of 'software' jobs dwarfed the hardware guys which were becoming rarer and rarer.

    #46 3 years ago
    Quoted from skink91:

    There is little or no separation in implementing and designing in my experience.
    There is no ‘spec’ that can create an architecture, no interface that defines a running engine. The implementation is the design. Software isn’t like board design.

    I guess you don't work alot with contracted or offshored programmers?

    There is a hell of a difference between the programmers that work off a boilerplate architecture and just try to modify it to fit the particular need.. and really don't understand the 'why' or consequences of a design... and the designers who made the choices prior.. or would make entirely new designs based on the needs.
    You can take an architecture and hand it off to code monkeys would will build it. But if you just give them a set of requirements and don't oversee their actual designs, you can end up with all kinds of garbage that meets the spec, but is a mess upon itself. Modern computing and languages can cover up so much because of the almost unlimited amount of resources available to most simple applications.

    With the insane higher level languages, libraries, PaaS, etc out there today, there are plenty of programmers that can build applications that don't have a snowballs chance in hell of doing the same without all the heavy lifting done for them. It's not just the distinction between a 'good coder' and a 'bad coder'. The stuff most people see as 'good' is the actual design work, or the creative that can analyze the problem for new solutions, or come up with new elegant ways, etc.

    A code monkey can implement a spec -- follow coding standards, apply boilerplate methodologies, update/maintain existing code. But that doesn't mean they had the training, experience, or understanding to DESIGN what they are implementing.

    #50 3 years ago
    Quoted from skink91:I do actually work with offshore contract developer teams as well as offshore contract test teams, some integrated into my teams and some completely independent. I have been doing so for nearly 30 years.
    By all means though, continue to tell me how software development works.

    So you started a discussion but don’t want to actually have one...

    Sounds like you’ve seen it all, not sure why the rest of us are here

    #53 3 years ago
    Quoted from skink91:

    Also, you seem to be digging in more on your distinction between implementing and design. Software just doesn’t work that way, sorry.

    Depends alot based on the topic... But some simple examples would be protocol or interface design vs implementing a previous design. Or a similar concept close to my world... a codec. There is the math and science behind the design that can be completely independent of the implementation... but also must consider what is feasible in real world implementation. Market leadership can be the difference between an inefficient implementation of that format and a better one. Both implementations could interoperate because of the agreed upon formats and signaling, but can be night and day in efficiency based purely on ingenuity in the implementation.

    Do your specs to your partner include just the requirements, or do you spec how its internally architected and executed as well? Do you leave those choices to simply someone who has shown proficiency in implementing a prior mapped out design, or do you look to someone with more advanced skillsets to architect the solution?

    We have fellows that specialize in the research and innovation in the field... be it compression, protocols, security, cryptography, etc... we have architects who are turned to for their knowledge or proficiency in designing models for scale, resilience, performance, environment, etc.. and we have all ranges of people implementing both designs passed down and their own designs. The skillsets, values, and abilities for all these roles varies.

    The background and comprehension of the guy that designed our h264 codec is far different from the team that excels at integrating it into a scalable platform that serves billions of minutes of usage per week... which is different from the team i can rely on successful implementing a client on a isolated host.

    I don’t lump all that kind of work together under the guise of design and implementation being inseparable as you put it. It’s often a question of what level you are considering the design.

    Even in simple applications- you can source out work to teams to implement a design that has already been laid out... architecture, data models, how the work would be broken up, etc or you can hand off a list of requirements for how the application interfaces and/or performance... leaving it to the team to pick their tools and design to meet the spec.

    Some organizations are very hierarchical... others are more open to leaving designs to individual contributors.

    It has been my experience we have very different skillsets roles out there and different roles. I have plenty of tasks we delegate and trust the teams to own all internal aspects... even the platforms and technology in use. But. We still have many more tasks that we can’t just leave to a coder who is proficient in implementing things, but maybe not good enough to own the larger design.

    A practical construct that comes out of these realities is we have product baselines all our projects must be evaluated with to ensure individual teams have addressed things deemed essential to all of our products (crypto, licensing, auditing, access control, etc etc etc).

    #55 3 years ago
    Quoted from Dent00:

    I guess the point that I am trying to get across is that there are laws in every state that regulate professional engineering. And one of the first points in state laws is always that same. Any person that uses the words "engineer" or "engineering" in their title or place of business is required to be licensed in order to use that term. And yes, there is also a firm registration in most states for engineering firms. In the case of software engineers, perhaps they turn a blind eye. However, I would not take that for granted, because the law is very specific on this topic. Like I mentioned before, there are people employed by the board of registration, in every state, that seek out people practicing engineering without a license. And all it takes for those people to get in gear is one written complaint to the board of registration. Something like "This guy, who is not licensed, calls himself a software engineer and he took my work as a professionally licensed engineer, based on a low bid". They would be on that like white on rice. Ignorance of the law will not help in a case like that.

    Everyone understands what you are trying to say about licensed engineers and their requirements... but the limits on job descriptions is not what you say they are. You can find private and public sector job descriptions all over the country using engineer in their job titles for roles that are not licensed PE or EIT roles.

    Miami...
    https://exterd.miamidade.gov/psp/GUEST/EMPLOYEE/HRMS/c/HRS_HRAM.HRS_CE.GBL?Page=HRS_CE_JOB_DTL&Action=A&JobOpeningId=61578&SiteId=1&PostingSeq=1

    Ga
    https://www.indeed.com/m/viewjob?jk=128f815a4e8d9d98&from=serp

    Cali
    https://www.indeed.com/m/viewjob?jk=7986b3c967c78d16&advn=6642196552263593&adid=362368293&ad=-6NYlbfkN0DDN2zF_vJqgt_Kkhyqg_lrZaB6a1RPh_4YB401_OwIymyzEuOWaHYdAtmdG3Mv0y2y9Ns6Xdl0xE1uHSC5thBZNO8GBLled7uiyfemEdb7p4qeVjcM2pFrrMj9QnSnggr2g7VrvSWAwWjCzH1eJoJ1gdVA2PGGyoa9mKQl_RugsEXWVLHmB_pffPsndUnKmawquSNoWoVkuelOUAG9yNB0sXfCyrWG6vL6TfJ23IO9dGlfAUw6TOQfhn9p24JWUPOcTaXc9wx2tHlgw7ooWrRDab0H6J7WaxbbkzKPk8GxVw0SWof5K6codPdf2ha3oTliFHcSKbliAdT1ttfJWebQCEHuG3rZosw5BNQbV5Uke2YN8WKf9t9zr6YDU_vhhHo%3D&from=serp&dest=http%3A%2F%2Fwww.indeed.com%2Fjob%2Fquality-engineer-7986b3c967c78d16&desth=05dc2042bde1f04cc0b8ff9f03a05988&prevUrl=https%3A%2F%2Fwww.indeed.com%2Fm%2Fjobs%3Fq%3DQa%2Bengineer%26l%3DSan%2Bjose%252C%2Bca&tk=1er3fj85i3ohs000&dupclk=1&acatk=1er3fjea1u5d5802&pub=6917c08ec3ecf6012dd26f3773156e870cace3277f6b99df

    Take your pick... these are a variety of fields that use the word

    “Engineer” != PE and that isn’t a confusion like you claim

    #60 3 years ago
    Quoted from skink91:

    This probably is likely the crux of the whole thing/argument/discussion: lack of mutually-shared terminology/definitions as well as half-baked assumptions of intention.
    What delineates what is design and what is implementation? In the examples you gave in your previous post you mentioned some good math-based/algorithm examples of where that delineation could be made (codecs, encryption, etc.) where someone that knows the underlying math would ‘design’ the algorithm and someone else would then ‘implement’ based on that design. That is about as clear cut as it gets, I agree.
    However, and obviously this could be more (or less) true based on what industry you work in, 99+% of the work is not going to be as easily split in this way either by person/trade or by activity. Let me run through a method to my usual madness:
    I sit down to tackle a new project, and start whiteboarding some draft layouts of ‘probable’ components and what they should do: that’s design... obviously. It needs to be ‘implemented’ in some way or it doesn’t exist. This process: design. The output of this process: design(?)
    Now that I have my design(?) I sit down and start coding (after any obligatory work-processes to plan an estimation of how long said design(?) will take to implement). After creating the rough shells of components and start integrating them I find a major flaw in said design(?).
    Is it back to the whiteboard/design-phase? Do I need to revise my time-estimates? Who do I need to alert that the design will need to change? Have people already started creating test-scripts based on this design(?)?
    This is probably where my argument starts and ends: 99+% of the time for me, this delineation and process is not adequate/efficient to either describe how things will or can work.
    I always find it annoying that I need to try and accurately describe (for kanban board, mgmt, etc.) what the hours are being spent on.

    Well this gets to what i was saying about what level...
    Now your Example sounds more like a component you know what it needs to do, so you start mapping out your approach. You mentioned using flow charts, etc. depending on the complexity of the task, this kind of stuff can be just someone’s “fingerprint” in they have their preferences/traits in how they tend to structure stuff. But what if its a bigger task...

    We still try to map out how we will tackle the bigger problem and how those blocks will cooperate and interact to deliver the requirements. Will we use file based storage or db or memory... will it be stateless.. will it be monolithic... what will we reuse or have to roll our own...

    Our last project was a new microservice that basically is a wrapper for a media sdk from another vendor so it could interact with an existing media infrastructure. So the architect mapped out the different processes and roles they would use to build up the service. All stuff the outside world never sees, but someone made a choice in how we move from raw frames to packetized RTP, or how identities would map between the disparate systems, to how we would generate and plug into the metrics platform, or what was needed dependency wise to build on a new host environment, etc.

    Honestly in my world the actual “coding” portion is largely just taken for granted. It is expected everyone can deliver and build what is envisioned. For coding the difference really bears itself out in efficiency (performance and investment) and elegance. Code that is brittle, just doesn’t work, or no one else can follow really isn’t a topic. The layers of defense in terms of standards, code reviews, test coverage, integration testing, etc really keep a reasonable level of quality. The areas of contention and larger input come from “what” you are doing snd less about how it was written.

    But that is why i made such the point between developers and code monkeys before. It is assumed everyone can make the light blink with reasonable code... the difference is in the thoughts and choices outside of the translation of ideas into the raw code.

    You keep pooing on “engineering” inferring its some overlord trying to mandate constraints and planning verse you just flowing your ideas into code. I don’t see that mindset in any of our teams. People hate on overhead, too much planning, artificial constraints, and bad decisions they are forced to live with... not “engineering constructs”.

    Our company has always been a “respect the doers” culture with a high level of empowerment. When we were acquired and now part of a 70k+ company i saw the stark differences in approaches. They were strictly waterfall... shipped 1-2 times a year... separate testing, docs, etc. we had been early agile champions... we were integrated scrum teams... we had good testing.. we were on short sprints.. we had daily build quality... we were agile in our planning. Luckily they lusted after the benefits they saw from our approaches and we have turned the much bigger ship. No we are not flawless... but in large part we have the right ideals and thoughts on what to value and what is waste.

    But i still see the levels between different software guys... and its almost never about their raw code... its more about the decisions they make in what they build. Tho there are a few freaks of nature that are known for their ability to tackle idea to prototype at about 4-5x speed vs others

    1 week later
    #71 3 years ago
    Quoted from Dent00:

    They do however, make the distinction to state that the terms "Professional Engineer", "Licensed Engineer" and other phrases of that type are still not allowed without a license.

    And that's the crux of it... there are key reserved phrases/titles - but it hasn't been excluding 'xxxx engineer' in ages. The PE role has been clearly separated from the generic word 'engineer' for a long long time. This isn't a point of confusion for anyone who has gone through any Unversity's Engineering college... and the Mechanical or Civil engineering programs weren't running around crying foul either.

    We all knew Mechanical Engineering was the Pre-Business major anyway

    You're currently viewing posts by Pinsider flynnibus.
    Click here to go back to viewing the entire thread.

    Reply

    Wanna join the discussion? Please sign in to reply to this topic.

    Hey there! Welcome to Pinside!

    Donate to Pinside

    Great to see you're enjoying Pinside! Did you know Pinside is able to run without any 3rd-party banners or ads, thanks to the support from our visitors? Please consider a donation to Pinside and get anext to your username to show for it! Or better yet, subscribe to Pinside+!


    This page was printed from https://pinside.com/pinball/forum/topic/software-design-hangout?tu=flynnibus and we tried optimising it for printing. Some page elements may have been deliberately hidden.

    Scan the QR code on the left to jump to the URL this document was printed from.