4 years in software engineering and that's what I have learned. - Page 1
Forum section: electronics / general

author: Picuino
author_rank: Super Contributor
timestamp: August 04, 2024, 10:06:32 pm
content: Reddit thread:https://www.reddit.com/r/softwaredevelopment/comments/1c12jcn/almost_4_years_in_software_engineering_and_thats/#:~:text=I%20have%20learned.-,Almost%204%20years%20in%20software%20engineering%20and%20that's%20what%20I,speed%20of%20a%20programming%20language.Almost 4 years in software engineering and that's what I have learned.1. The cost of time and engineering is more higher than that of servers.2. Developer productivity and a technology's ecosystem are more valuable than a runtime's efficiency or the raw speed of a programming language.3. Programming languages that are often considered slow and criticized for technical deficiencies or poor design are usually the most used and favored for building real-world software, from small to large scale, due to the flexibility they provide to engineers.4. The choice of a tech stack, often said to depend on project requirements, is misleading and untrue; in reality, it depends on the expertise of the senior engineer and team.5. Real agile teams don’t follow agile practices rigidly; instead, they develop their processes to maintain agility.6. Best practices are often biased.7. Healthy communication is key to a team’s success.8. GitHub is the best tool for tracking and managing software development.9. The first priority is to make it work.10. Mastery of the basics makes you advanced.

author: coppice
author_rank: Super Contributor
timestamp: August 04, 2024, 10:21:07 pm
content: Most of those points depend very much on the type of work you do. It sounds like the person who made that list spent 4 your building complex server solutions, which were not especially time constrained, and were not deployed over a large number of instances. Develop something with millions of deployments and things look very different.

author: mianos
author_rank: Regular Contributor
timestamp: August 05, 2024, 04:47:57 am
content: 40 years as a professional developer, this is way more accurate that 99% of the crap I read on the internet or hacker news.Based on my 10X the experience of whoever it was, it's hard to argue with any of it and I work on stock exchanges where people consider speed highly important. Make the right choices and it will come.

author: tooki
author_rank: Super Contributor
timestamp: August 05, 2024, 08:40:01 am
content: I don’t much care for the list in the original post.But I really like this one from one of the responses on Reddit:Quote

author: mianos
author_rank: Regular Contributor
timestamp: August 05, 2024, 09:11:26 am
content: I work on and maintain a million plus line system every day.Some stuff is cleverer than it should be, but it's not a big deal if it works. I've not actually seen much, if anything that was too clever to work out. It's not a headline for me. Maybe when I get old and stupid it might be better advice.The rest is a mishmash of low level detail and complaining about work, management and meetings.If that floats your boat, maybe it's better. I'm much more interested in making things work

author: DiTBho
author_rank: Super Contributor
timestamp: August 05, 2024, 10:24:59 am
content: Quote from: mianos on August 05, 2024, 09:11:26 amYup.

author: DiTBho
author_rank: Super Contributor
timestamp: August 05, 2024, 10:27:22 am
content: (usually It's not my faultIs it? Is not your faultIs it? Is not your boss' faultIs it? Is not your colleges' faultIs it?Who? What?The algorithm never stopsIt's nobody's fault)

author: Nominal Animal
author_rank: Super Contributor
timestamp: August 05, 2024, 10:41:07 am
content: 30+ years here, and I'm not going totouchthisflamebaitlist mine.Why? Because what pays the best and advances ones career the fastest is not what I want to do, and definitely not how I want things to be done. But I also don't want to cram it down the throats of those who are comfortable with how things are.What I would be interested in, is how the answers differ when looking at software engineering for open source products versus proprietary (especially Clear-Off-The-Shelf) products. There is a big cultural difference there, and I do wonder how others experience those differences. I've happily worked in both, myself, but because of my uncommon priorities my own experiences are unlikely to be that useful for others.

author: peter-h
author_rank: Super Contributor
timestamp: August 05, 2024, 10:58:53 am
content: The answers vary a lot according to whether you work for yourself and need stuff to work and be maintainable over years by easily available people, or are an employee or a contractor who needs to put bread on the table at homeIn the former case you will probably choose C for embedded and PHP for server-side; in the latter case C++ and COBOL-66 (the last one is tongue in cheek, so perhaps Ruby on Rails for an assured 1.5k/day).

author: DiTBho
author_rank: Super Contributor
timestamp: August 05, 2024, 11:21:13 am
content: Quote from: Nominal Animal on August 05, 2024, 10:41:07 amI made a rather superficial comment, with a bit of humor, because these speeches depend on the context, depend on the culture, depend on the purpose, and in any case in real life you can't do anything about it: you just have to adapt to the context, to your colleagues and to your customers.That's life

author: coppice
author_rank: Super Contributor
timestamp: August 05, 2024, 11:41:17 am
content: QuoteThat point has interesting dynamics. Young people get disillusioned easily, and want to move on, thinking the whole world can't be as bad as the place they are. By their early 30s they finally accept that most places they might work are remarkably similar beneath the surface and settle down.

author: Nominal Animal
author_rank: Super Contributor
timestamp: August 05, 2024, 12:12:07 pm
content: If the work or workplace culture negatively impacts your (mental or physical) health, leave. If necessary, switch careers. No job is worth losing your health.That applies to all careers and not just software engineering, though.

author: peter-h
author_rank: Super Contributor
timestamp: August 05, 2024, 02:04:16 pm
content: It sounds like this discussion is more about server-side coding than embedded stuff.Agreed about getting out of a shitty job, but the problem seems to be that it is fairly easy to end up with quite a narrow range of skills, yt you have to put bread on the table at home every day, and when you get to say 40 you will probably have a family to support.What I see is most server coders getting to really hate their job by around 40. The reason is constant dumping of old skills and having to learn new "frameworks" etc.

author: Bud
author_rank: Super Contributor
timestamp: August 05, 2024, 02:27:00 pm
content: Quote from: Picuino on August 04, 2024, 10:06:32 pmNot sure i understand. Can you elaborate?

author: peter-h
author_rank: Super Contributor
timestamp: August 05, 2024, 02:37:53 pm
content: Whatever I hear the term "best practice" I get deeply suspicious because it tends to be used to hide behind.

author: DiTBho
author_rank: Super Contributor
timestamp: August 05, 2024, 03:01:16 pm
content: Quote from: Bud on August 05, 2024, 02:27:00 pm... well, if I told you that in what I do, best practice maniacally dictates that you must not only write misra-compliant code, but also respect a whole series of rules for the observability of variables by ICE, this, among many reasons, to facilitate the work of the testing team ... well, there are people in this forum who over time have answered "all bullshit".This means "best practices" are often perceived as "unfairly prejudiced" for or against someone or something, in this case, as some people will not tolerate this biased media coverage namely known as "avionic rules".That's why I wrote that it depends on context, culture, and goals, etc.: I mean, it seems like a "good practice" to you, but it doesn't necessarily mean it's the same for others

author: nigelwright7557
author_rank: Frequent Contributor
timestamp: August 05, 2024, 03:21:57 pm
content: Quote from: Nominal Animal on August 05, 2024, 12:12:07 pmI worked for a telecoms business in the early 1980's.Taken on to test but quickly found I managed to write programs too so progressed to that.The boss in his wisdom took on some more engineers after a year and gave one of them my job and I was back on test.So I left. Next day I got the business accountant knocking on my door saying they wanted me back write some software !They offered more money so I accepted.I worked for about 6 months on the project and then left.I found out 2 months later they had gone bust.What goes around comes around.

author: janoc
author_rank: Super Contributor
timestamp: August 05, 2024, 04:32:54 pm
content: Quote from: Picuino on August 04, 2024, 10:06:32 pmThe poster has a lot more to learn ... Especially the less engineering-y and more people-y stuff. That is often waaay more important than anything on that list because it can easily be the difference between a promotion and having one's project/job cancelled. Or project getting shipped without major overtime and stress and having a heart attack at 30 from overwork due to constant crunch thanks to poor planning and general chaos.Quote from: Picuino on August 04, 2024, 10:06:32 pmOnly if one's management actually thinks so too. More often than not the time is given to some intern or lowest bidder because "we can't afford to buy hw!" Or one buys some overpriced "off-the-shelf" solution that doesn't work - but the vendor had a fancy presentation to the CEO.Quote from: Picuino on August 04, 2024, 10:06:32 pmProgramming languages don't have any kind of intrinsic speed. That always depends on the tooling, platform and the problem you are solving. Also, what is the developer productivity and ecosystem worth it when the target platform doesn't have a mature runtime or compiler for the language of choice available?Such blanket statements don't work - or show one has a lot more to learn still.Quote from: Picuino on August 04, 2024, 10:06:32 pmThat's pretty much a flamebait and nothing more - there is no way to meaningfully consider whether this is true or not when you didn't define "technical deficiencies", "poor design" and "most used and favored".Quote from: Picuino on August 04, 2024, 10:06:32 pmSame misleading and untrue as this blanket statement. Familiarity with the tech has certainly a role - but a good team will also adapt and learn new tech when the situation warrants it. Bad teams are applying the "If all I have is a hammer ...". In reality the situation is much more complex because there are also other factors (often non-technical) coming into play - e.g. cost of development, where/how is it going to be deployed, etc.Quote from: Picuino on August 04, 2024, 10:06:32 pmThat's just BS. In fact, the vast majority of SW development isn't happening on Github. Github has a pretty mediocre/nonexistent tooling when it comes to tracking and managing sw development projects of any significant complexity.Quote from: Picuino on August 04, 2024, 10:06:32 pmI would suggest the OP gaining a bit more experience before putting such lists forward (and making a fool of themselves). After 4 years they have maybe worked at a single job, 2 tops. Most likely those jobs aren't even following any sort of industry best practices. That's not really a position to be able to judge anything yet, they are maybe a decent junior developer at this stage.Try after 10-15 years and multiple companies, ideally with some project management experience too. Then it is very likely the list will look a lot different, with a lot of irrelevant nonsense like point 3 disappearing and being replaced with things such as - setting clear goals, keeping track of things, keeping corporate BS away from your team, supporting your team with resources and information, etc.

author: nctnico
author_rank: Super Contributor
timestamp: August 05, 2024, 05:00:01 pm
content: Quote from: peter-h on August 05, 2024, 02:04:16 pmThat seems to be my sense as well. In the early 2000's I did a bit of PHP coding but when I look at modern day website coding, there is almost zero I recognise. A couple of years ago an engineer who left the company explained to me how he had built an inventory system using Python and some kind of framework. He called it 'magic stuff' he threw some properties at and derived some classes from and it worked. I agreed about the magic stuff. The inventory system works like a charm though.

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 05, 2024, 09:41:03 pm
content: Quote from: peter-h on August 05, 2024, 10:58:53 amYes. Additionally, they vary a lot depending on whether "software engineering" is the core business of your/the company your work at, or if it's just one activity that makes up a product among many others.Very few of the points that are usually listed are technical anyway. Most are organizational or managerial in nature.

author: DiTBho
author_rank: Super Contributor
timestamp: August 05, 2024, 10:13:11 pm
content: Quote from: janoc on August 05, 2024, 04:32:54 pmeh, don't tell me ...... things aren't going too well for m-core, to the point that it will take at least a couple of months before I can have a toolchain and libraries that work as I need.I'm hacking gcc wildly and making various considerations, but we are still vague on the final choice (from gcc-v4.* to gcc-v9) ...There are ready-made toolchains and IDE like CodeWarrior, but I don't want to depend on Windows and I don't have the budget to buy licenses.The productivity is less than zero at the moment, as I am spending time on the tool, instead than on development

author: DiTBho
author_rank: Super Contributor
timestamp: August 05, 2024, 10:25:48 pm
content: Quote from: nctnico on August 05, 2024, 05:00:01 pmThat's the same unpleasant feeling I have when someone talks to me about how modern sites are made, and they are all things that not only I don't know but I dot not even recognize as "programming pattern".In the early 2000's I did a bit of PHP coding, but PHP itself has changed so much in the last 20 years, so much that a lot of old code doesn't even work on modern PHP, and you have to patch it or rewrite it from scratch. But it's still acceptable.The problem is that PHP has become obsolete and nobody uses it anymore like it was used in 2000, when it was one of the few tools available.Today there is much more, and the expectations of those who consume web services are much higher than in the early 2000.So, I created a site in C. What? How? Yes, I wrote the entire http-server, integrating a parser and various other things that spit out HTML.This way I avoid going crazy with modern implementations of PHP, which has become buggy and too complex, and Apache, which has become a dead elephant, or, worse still, various modules for interfacing languages ​​and gadgets that I don't know anyway.In the end ... the site is a sort of collection of articles, and a letterbox (with an A.I. NLP to filter spam), and that's fine for this specific use.I am happy with that, however I understand very well this feeling of "inadequacy", it's just that I don't have time to update myself on everything about IT

author: pdenisowski
author_rank: Super Contributor
timestamp: August 06, 2024, 11:37:44 am
content: Quote from: nctnico on August 05, 2024, 05:00:01 pmImagine how I feel: I created my first (graphical) website in the early 90s by hand-coding the HTML tags with a text editor. Now "View page source" scares meBut more on topic: after literally 40+ years of writing code, sometimes as my main job function, my "revelation" is that one often spends a lot of one's time editing / modifying / etc. someone else's code, not writing new code from scratch. This is not a skill that appears to be "taught" in any meaningful way - I would love to see a computer science university class called "Debugging Code Fundamentals" where all the assignments are fixing / deciphering some obscure and ... creatively ... written code.And after a while, even code you wrote becomes "someone else's code". I laugh every time I read this:“When I wrote this code, only God and I understood what I did. Now only God knows.”

author: madires
author_rank: Super Contributor
timestamp: August 06, 2024, 01:19:48 pm
content: That's the main reason why I write many comments in my code, helping me to maintain it later on.

author: tggzzz
author_rank: Super Contributor
timestamp: August 06, 2024, 02:05:17 pm
content: Quote from: madires on August 06, 2024, 01:19:48 pmHow passé.Everybody knows that sooner or later the code changes but the comments are not updated to reflect that.The solution to comments being out of date is to strip out all comments and just read the (very clear and precise) code.Isn't it?

author: madires
author_rank: Super Contributor
timestamp: August 06, 2024, 04:01:03 pm
content: Can't speak for others, but I update comments when I change the code.

author: tggzzz
author_rank: Super Contributor
timestamp: August 06, 2024, 04:58:27 pm
content: Quote from: madires on August 06, 2024, 04:01:03 pmHow.... unusually considerate

author: Siwastaja
author_rank: Super Contributor
timestamp: August 06, 2024, 05:13:59 pm
content: Quote from: madires on August 06, 2024, 01:19:48 pmWe have discussed this many times, but once again I'll say this: the most useful comments are:* those large 50-100-line walls of text at the beginning of every module, describingwhatit is supposed to do, and how itinteractswith other modules* comments in header files that describe what the functions actually do, and their inputs and outputs quite accurately (e.g.; does the caller need to keep *arg allocated still after the call?)Of course keeping them in sync with the code is a lot of work; concentrating on the big picture helps in that small discrepancies are not catastrophic since the main intent keeps the same, and such broad comments save hours of time when one looks at a new codebase, trying to figure out what interacts with what.

author: coppice
author_rank: Super Contributor
timestamp: August 06, 2024, 05:18:57 pm
content: Quote from: Siwastaja on August 06, 2024, 05:13:59 pmIf you use the right tools, a lot of the discrepancies between the description of a function and any updates to actual parameters, return values, etc. over time get flagged for correction. That is a huge plus for things like doxygen.

author: tggzzz
author_rank: Super Contributor
timestamp: August 06, 2024, 05:24:41 pm
content: Quote from: Siwastaja on August 06, 2024, 05:13:59 pmJust so. Not a difficult concept.Given a thoughtful architecture, Changes at that level ought to be rare.But architecture is so unfashionable nowadays. Instead, good properties just emerge.from the bottom up.Don't they?

author: Siwastaja
author_rank: Super Contributor
timestamp: August 06, 2024, 06:02:08 pm
content: Quote from: coppice on August 06, 2024, 05:18:57 pmAnd I have said this before, but a simple observation: projects that use doxygen are usually the worst. Maybe just coincidence, but the false sense of getting some variable list automagically generated and updated gives that nice feeling that the job is done. But of course it isn't, autogenerated boilerplate is the unnecessary part, this is visible from the declaration itself. Human is needed to carefully think about how the function would be used, and write a concise yet accurate enough description of each argument, and this work can only be maintained manually.

author: coppice
author_rank: Super Contributor
timestamp: August 06, 2024, 06:06:36 pm
content: Quote from: Siwastaja on August 06, 2024, 06:02:08 pmAlmost all helpful tools are a two edged sword. On the one hand they help the careful towards a clean result. On the other they encourage those who wouldn't give a shit to continue to withhold them.

author: tggzzz
author_rank: Super Contributor
timestamp: August 06, 2024, 06:16:10 pm
content: Quote from: coppice on August 06, 2024, 06:06:36 pmAutomagically generated boilerplatecannotcontain any new information, i.e. information not in the source.

author: coppice
author_rank: Super Contributor
timestamp: August 06, 2024, 06:18:03 pm
content: Quote from: tggzzz on August 06, 2024, 06:16:10 pmCorrect, and your point it?

author: Siwastaja
author_rank: Super Contributor
timestamp: August 06, 2024, 06:25:11 pm
content: Quote from: tggzzz on August 06, 2024, 06:16:10 pmYes, and my observation is this: people are taught to be afraid of modifying generated code/text, which makes a lot of sense, because in many cases you definitely should not be doing that (e.g., generated coefficient tables; modify the source which generates the tables instead).And yet, for Doxygen it's the exact opposite: you get a tiny bit of boilerplate, and totally should add as much relevant content as possible. I believe that this boilerplate is however directing people to either not touch itat all(I have seen this!) or edit it as little as possible, limiting them to add just a few words, especially when they are unsure where exactly to type to produce the correct HTML output.Sometimes too much formality kills the productivity - in this case comment-writing. Code itself is already limited to certain formal constructs; I don't want my comments to have to do the same, and I don't want to have to memorize another domain specific language for comment processing.

author: coppice
author_rank: Super Contributor
timestamp: August 06, 2024, 07:37:03 pm
content: Quote from: Siwastaja on August 06, 2024, 06:25:11 pmDo people do a lot of automatic generation for doxygen? That destroys all its benefits. No wonder you don't like it. The big plus is when you modify code, if you haven't modified the doxygen comments to match, say, new defines or call parameters, it flags up the mismatches. That doesn't help where only the meaning of a parameter has changed, without changing its name. It doesn't help when your comments suck. However, it does catch a lot.

author: tggzzz
author_rank: Super Contributor
timestamp: August 06, 2024, 07:51:21 pm
content: Quote from: coppice on August 06, 2024, 07:37:03 pmToo many do, hence my commentBut it ticks the "documentation delivered" box.Doesn't it?

author: coppice
author_rank: Super Contributor
timestamp: August 06, 2024, 07:53:17 pm
content: Quote from: tggzzz on August 06, 2024, 07:51:21 pmAs I said, give people any good tool, and some will be more effective while others feed their inner idle scumbag.

author: nctnico
author_rank: Super Contributor
timestamp: August 06, 2024, 07:57:49 pm
content: Quote from: Siwastaja on August 06, 2024, 06:02:08 pmI couldn't agree more. 100 out of 100 times the Doxygen created rubbish is useless. I do read it in case there is a hidden gem there but spotting one hasn't happened to me. I think collecting the pot of gold at the end of a rainbow is a more worthwhile effort. A modern day IDE provides the exact same information and it is updated in realtime. I always hope the creator of a piece of code wrote a bit of text together with the source code to find out what a module is supposed to do. Sometimes I get lucky.

author: pdenisowski
author_rank: Super Contributor
timestamp: August 07, 2024, 02:58:29 am
content: Quote from: tggzzz on August 06, 2024, 02:05:17 pmI heard the term "self-documenting code" used unironically many, many times

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 07, 2024, 03:03:18 am
content: Doxygen relies on comments formatted in a very specific way to be of any use. So if one doesn't think comments are ever up to date, Doxygen doc will never be either. All it does automatically is extract definitions, so your data structures and function prototypes will match the source code, but the documentation for parameters or what the functions actually do may never be.It can be useful for documenting APIs (as long as you keep corresponding comments up to date). But for otherwise documenting a whole code base, not that much.It does extract call graphs, but you can get that with other tools too.

author: nctnico
author_rank: Super Contributor
timestamp: August 07, 2024, 06:13:40 am
content: Quote from: SiliconWizard on August 07, 2024, 03:03:18 amNope. API documentation should provide you with information about how to use the function calls together. How to make a coherent solution. Doxygen generated crap is like giving someone a random list of ingredients and expect to cook an extensive meal from it without specifying which ingredients go together in a dish, which dishes of the meal must be baked, what must be cooked and what has to be served cold.

author: janoc
author_rank: Super Contributor
timestamp: August 07, 2024, 07:07:40 am
content: Quote from: nctnico on August 07, 2024, 06:13:40 amThat only holds if Doxygen generated from sources with no comments is the only documentation. But that's hardly Doxygen's fault, is it?If used properly it is a valuable tool, esp. on large projects. But as with anything - garbage in, garbage out. If your team can't be bothered to describe the functions/datastructures, can't be bothered to write high level documentation explaining the use the APIs, etc. then autogeneratedreferencedocumentation from Doxygen is not going to save the day either.That Doxygen (and similar tools) are frequently used only to check the "Provide documentation" checkbox on the TODO list with minimal effort possible is not really the fault of the tool.Quote from: pdenisowski on August 07, 2024, 02:58:29 amThat's just BS. Yes, code should be ideally "self-documenting". But that's not an excuse to not have documentation - that code should be readable and easy to understand is a completely orthogonal concept to having high level/reference documentation for the codebase. Both things need to be in place if you want to have any sort of chance to work on a large codebase efficiently.Good luck having to wade through millions of lines of source code to figure out how to use a certain feature. Having it documented at least at the high level is a huge time saver. I am working on codebase that is 25+ years old, millions of lines, some very complex. With very little documentation - I can tell you, it is a huge "fun" having to reverse engineer that stuff whenever I need to add a button somewhere. Just finding the right place where to start working is a challenge already. Yes, documentation can go stale - but even outdated documentation for concepts that are still being used in the codebase is better than having nothing - it gives you at least a starting point.The same if you see some complex algorithm or the reasons why a seemingly arbitrary decision was made is not obvious. Think e.g. physics simulation or some complex event handling or working around some platform issue ... Having a comment in the code for your colleagues (or even the future you) linking in e.g. the JIRA ticket requesting the change or some explanation of what is going on is essential. Yes, comments can get outdated - but that's your job when you modify that code in the future to also fix the comment, if needed. That the team is lacking the discipline to do this is not really a good reason to not writeusefulcomments or documentation.I have seen so much code engineered using this "self-documenting code" mantra - broken down into hundreds of tiny ("self-documenting") functions that are then haphazardly assembled together in a huge spaghetti mess with no clear idea of why, what depends on what, requiring to reverse engineer the architecture of this mess each time, making any sort of maintenance a costly nightmare.Worse, usually the codebase knowledge is only in the heads of some old-timers in the company. Suddenly they get laid off or leave on their own and you are back to square one, because nobody has any idea how a certain feature or code works. Such things could even cause a company go bankrupt in extreme cases - or at least give the laid off people a very cushy and well paid consulting job while the know-how is transferred ...Quote from: Siwastaja on August 06, 2024, 06:25:11 pmBut you don't modify the generated content. You modify either your code and put the documentation there in the comments that Doxygen then extracts. Or you modifythe templatesthe generator uses, e.g. to include some static content.BTW, for documenting code in the format that Doxygen (or Javadoc or Python Sphinx, etc.) understands there are plenty of tools - there are even plugins for VS Code and similar editors that will automatically extract the function signatures and generate/update the entire boilerplate of the comment for you. You only need to fill in the meaning of all those arguments, what the function returns and some description of what the function does. A lot of "Intellisense"-like tools will also use these comments and display the information right during completion in the editor, so that you have immediately an idea what is which argument doing without having to look it up.This functionality and tooling exists since ages (and is only getting better). I am rather surprised that it is not known and people think they have to manually do this. There are even tools that will generate these comments for your entire codebase, if you so wish - I personally wouldn't do that but the option is there.https://marketplace.visualstudio.com/search?term=doxygen&target=VSCode&category=Other&sortBy=Relevance

author: DiTBho
author_rank: Super Contributor
timestamp: August 07, 2024, 08:33:52 am
content: Quote from: SiliconWizard on August 07, 2024, 03:03:18 amSciTools Understand

author: tggzzz
author_rank: Super Contributor
timestamp: August 07, 2024, 09:13:01 am
content: Quote from: nctnico on August 07, 2024, 06:13:40 amNot a bad analogy

author: Siwastaja
author_rank: Super Contributor
timestamp: August 07, 2024, 09:19:40 am
content: Quote from: janoc on August 07, 2024, 07:07:40 amI was unclear. I did not mean modifying the HTML output (for example). What I meant is: almost always an IDE is used to generate the boilerplate (in the Doxygen DSL) within the comments.Thisboilerplate has to be then modified (basically information added in the middle of it). It is tempting to forget filling in that information completely, or be very concise.Unlike in normal programming languages where the whole code is supposed to serve both compiler and human reader (at least in the ideal world), Doxygen DSL boilerplate only serves the Doxygen compiler and often hinders the human who modifies it. Not always of course, and you can put the blame to the user if you so wish.

author: pdenisowski
author_rank: Super Contributor
timestamp: August 07, 2024, 10:54:04 am
content: Quote from: janoc on August 07, 2024, 07:07:40 amIndeed it isI'm still amazed at how many people said that to me with a straight face.Quote from: janoc on August 07, 2024, 07:07:40 amYou also worked on DMS100 software (BCS) at Nortel ?!?! Wow, small world.Edit: I forgot to add that it has to be a proprietary variant of a dead programming language (Pascal) where having an infinite loop with a break statement is considered normal coding practice

author: coppice
author_rank: Super Contributor
timestamp: August 07, 2024, 11:20:08 am
content: Quote from: pdenisowski on August 07, 2024, 02:58:29 amIts not exactly a stupid term, but it tends to be received in a stupid way by the lazy. If you think that having variables i and j is just as good as meaningful names (other than elementary cases like loop variables) you shouldn't be in programming. At that sort of level code should self-document. As well as people hand waving the stupid idea of their code being fully self-documenting there are people who write extensive comments to explain what their obscurely named variables do, instead of choosing better names. Balanced is a big part of good practice in any kind of engineering. You need to put your resources where they get the most bang per buck.

author: DiTBho
author_rank: Super Contributor
timestamp: August 07, 2024, 11:51:55 am
content: Quote from: coppice on August 07, 2024, 11:20:08 amThis sounds a lot like a comment i got in my letterbox a while back from an anonymous person who said "you should get a job at McDonald's, coding is not for you"I usually use { i0, i1, i2, i3 ... } for my loop variables as for the indices of matrices and tensors, with approximately the same notation used in mathematics, and not only it's perfectly fine, but also *VERY* useful for the ICE, since I need the shorted names possible on a session, plus, postfixing 0,1,2,3,4 ... helps the text editor I wrote it myself to rename, search, and move amoung observable variables.Code:private boolean_t do_l2_scan(p_dep_man_t p_dep_man){my_id_t fid;boolean_t ans;p_bitmatrix_t p_matrix0;p_stack_dep_data_t p_data;uint32_t i1; /* irow */uint32_t i0; /* icol */uint32_t iblock;uint32_t item_n;boolean_t cell;boolean_t is_EOL;boolean_t is_recursive_call;p_matrix0 = p_dep_man->context.matrix.adjacency;p_data = get_address(p_dep_man->context.fsm.data);item_n = p_matrix0->row_n;i0 = p_data->i0;is_recursive_call = False;is_EOL = False;debug_fsm_show(p_dep_man, "scan");switch (p_dep_man->context.fsm.status){case s0:case s2:i0 = p_data->i0;i1 = p_data->i1;iblock = bitmatrix_iblock_get(p_matrix0, i1, i0);cell = bitmatrix_cell_get(p_matrix0, iblock);if (cell){...As you see people are not as stupid as you might think with your superficial way of judging others.Which I find extremely arrogant, among other thingsBut, let me understand would you use the last offensive term you recently use in theother topicand call people "dumb moron" for this?You should be more polite and more tolerant of mistakes, both presumed by you and real mistakes.

author: janoc
author_rank: Super Contributor
timestamp: August 07, 2024, 02:34:19 pm
content: Quote from: pdenisowski on August 07, 2024, 10:54:04 amOh dear, no, I haven't had the pleasure. Good to know which place to avoidBut I am pretty sure that the employers of quite a few people on this forum are using our software to inspect parts and assembliesI can't complain about coding standard in our codebase too much, it is actually pretty good overall - but with the 25+ years legacy of C++ code and the sheer size, finding one's way around is a major challenge, esp. when the part you need to work on isn't documented.Or when the "guru" that understood that codebase has just left the company. Have you ever tried to reverse engineer a heavily hand-optimized finite element solver? We have some code like that - and pray that we won't have to go fix something in there ...

author: coppice
author_rank: Super Contributor
timestamp: August 07, 2024, 03:32:33 pm
content: Quote from: DiTBho on August 07, 2024, 11:51:55 amIf you as sloppy in your software development as you were in editing your message in that thread, you definitely deserve the term. We all edit messages quickly, and make mistakes. However, if you are going to insult someone you really should be taking extra care to ensure your are insulting the right person. I did.

author: DiTBho
author_rank: Super Contributor
timestamp: August 07, 2024, 06:04:46 pm
content: Quote from: coppice on August 07, 2024, 03:32:33 pmI wrote "petulant", which is not an insultand I wrote it because I was tired of peter continuing to provoke. In that particular topic i just wanted to point out that if you don't master a toolchain, then it's advisable to stick to the simplest situation ever, where all the code runs in ram. It was a good suggestion, in my opinion, and it has nothing to do with anything he has to say unless I read the nonsense he continuely writes. If I put him on the ignore list I have my good reasons and he shouldn't break balls in every post about thatSo, you who call others "dumb idiot sloppy", are nothing more than a superficial person who insults without understanding the context.Quote from: coppice on August 07, 2024, 03:32:33 pmThe annoying thing is that you don't even try to understand others.Enjoy my ignore list.

author: mianos
author_rank: Regular Contributor
timestamp: August 08, 2024, 03:06:28 am
content: Ah, and thus we witness the inevitable descent of this discourse into a maelstrom of incendiary exchanges.In my view, Doxygen-generated documentation is frequently as futile as having none at all. There are exceptions, such as the work seen on prefect.io, where meticulously curated embedded documentation is nothing short of exemplary. However, this success hinges on having a dedicated curator. Crafting proper documentation is a profession unto itself. While developers, myself included, possess the capability to produce it, the task demands a distinct mindset. I find it most effective to disengage from coding temporarily and return with a fresh perspective to tackle the documentation.Regarding the term 'dumb moron,' it strikes me as poor English. After all, how many morons lack the attribute of being dumb? When I scrutinize code for half a day, only to discover some inane error of my own making, I simply label myself a moron. The redundancy of adding 'dumb' feels wasteful. When berating my own foolishness with two words, I opt for 'dumb fuck.'

author: tggzzz
author_rank: Super Contributor
timestamp: August 08, 2024, 08:11:23 am
content: The descent is not inevitable.When applying such thoughts to myself, I tend to emulate the well-knownbowl of petuniasand say "oh no, not again".Documentation requires the mindset of avoiding "how", and concentrating on "why" and "this is how you can use it". That goes in the class and/or package documentation. A few "why not" comments inside functions can be helpful, but they are invisible to documentation "generators".

author: DiTBho
author_rank: Super Contributor
timestamp: August 08, 2024, 09:41:24 am
content: Quote from: mianos on August 08, 2024, 03:06:28 amsame opinion. I stopped using it a while ago.Quote from: mianos on August 08, 2024, 03:06:28 amNo doubt aboutIndeed, the life cycle of avionics software, where I work, is governed by DO178B(1) which, among other things, states that separations of roles is a mustwho does QA, does only thatwho does development, does only thatwho does testing, does only thatwho does documentation and review of the same, does only that...(1) but also hardware, which has similar directives and rules

author: coppice
author_rank: Super Contributor
timestamp: August 08, 2024, 09:47:51 am
content: Quote from: tggzzz on August 08, 2024, 08:11:23 amThe documentation that will be most valuable to people downstream, maintaining and working with the code, is actually the stuff that is invisible to any current automated tool in broad use. Whether its a high level document about the overall thing, or a comment like "this might seem stupid, but it deals with the following obscure situation......" somewhere in the code, put there after some long running bug was sorted out.A number of writers have noted that starting again from scratch when a code base is a mess is almost always a losing strategy. However bad it may be, it will almost always include a lot of obscure job knowledge gained over the life of that code. Starting again throws that away. Even if a rework means changing almost all the code, if it can preserve that knowledge its a huge win over starting again. I agree with this point of view, but it says a lot about how bad even the best of current documentation is, that we all know the only place where you'll find all that stuff about the grubby details is in the actual code.

author: Siwastaja
author_rank: Super Contributor
timestamp: August 08, 2024, 11:21:56 am
content: Quote from: DiTBho on August 07, 2024, 11:51:55 amNot here to judge and maybe you have a good reason of doing this, but whenever I catch myself of coming up with an indescriptive variable name and adding comment to explain what itactuallyis, and notice the comment is short enough to be used as variable name directly, I do this:uint32_t irow; // and the comment can be now removedThis I think is a perfect (maybe oversimplified though) textbook example of what is meant by self-documenting code: the irow comment can be used in code directly, and the advantage is that it now keeps visible in every access of that variable. Number of comments decreased, but IMHO code quality increased - which is also why number of comments is a poor indicator of quality.

author: Postal2
author_rank: Frequent Contributor
timestamp: August 08, 2024, 12:19:12 pm
content: The day is not far off when people destined to work at McDonald's will be hired to write code for nuclear power plants. The history of the Challenger will repeat itself.

author: radiolistener
author_rank: Super Contributor
timestamp: August 16, 2024, 06:46:22 am
content: Quote from: Picuino on August 04, 2024, 10:06:32 pmI don't think that it's the best, but it's flexible and many peoples know it so it helps to work together with more large team.

author: unseenninja
author_rank: Regular Contributor
timestamp: August 16, 2024, 07:27:30 am
content: I don't want to see comments aboutwhatyour code is doing. That should be self evident from the code (unless it has been deliberately written in an obfuscated style).I want to see comments aboutwhyyour code is doing what it does, what it works with and what it outputs.This is where the actual business logic gets documented and it should always be there and should always be kept up to date.I often end up having to maintain code which was written by others and find it immensely frustrating when I find no documentation of inputs and outputs or even the slightest clue as to why it does what it does. I see many people making the mistake of assuming that if they have to come back to code they wrote ten years ago that it will be obvious to them how it works and why it does what it does. It won't be.In my opinion, some of the most selfish programmers out there are the ones who never write code thinking of how someone else will understand it if they need to make changes to it many years later when they no longer work at the company. Often I see people use this type of selfishness as a job security ploy. In a company which actually does software development properly, this kind of abusive behaviour should be spotted in code reviews and corrected before it gets into the codebase. Programmers who try this game repeatedly should be asked to look for a job elsewhere.

author: Nominal Animal
author_rank: Super Contributor
timestamp: August 16, 2024, 06:45:27 pm
content: Quote from: unseenninja on August 16, 2024, 07:27:30 amIneedto see comments describingwhymy code is doing what it does, andwhat I intendedit to do in the first place, or the next time I look at it after a week or longer, I have to rewrite/refactor it because I can no longer remember. I've written a lot of code in the last three decades plus.

author: tooki
author_rank: Super Contributor
timestamp: August 20, 2024, 05:48:36 pm
content: Quote from: unseenninja on August 16, 2024, 07:27:30 amWhat those people forget is that they themselves need the comments, too! Future you is just as clueless about the code as an outsider, unless you continue working with it on a daily basis forever, which frankly isn't likely.

author: coppice
author_rank: Super Contributor
timestamp: August 20, 2024, 06:28:00 pm
content: Quote from: tooki on August 20, 2024, 05:48:36 pmTwo somewhat conflicting related experiences:On at least two occasions I have written a utility a few pages long, and later found a much older file of mine which did exactly the same thing. I had no recollection of producing the older code. The two files matched to within a few characters. I'd used the same variable names, declared in the same order. I'd cooked up the same data structures. I'd broken the problem down to the same functions, with the same names, and the same parameters, declared in the same order. I'd written the same comments. Truly the two files were just a few characters different. It would seem that, at least on some occasions, my future self can think exactly like my older self. Its weird how well those files matched, though. These were not massive programs, filled with intricate details to deal with the obscure.A number of times I have had to go back to code I produced a long time ago, to add to it, and found it extremely unfamiliar. I may or may not have remembered writing it, but I sure didn't remember any of the messy details of what it was up to. My future self very much relied on any guidance I had sprinkled through the work the first time through, especially the notes on the obscure situations which needed to be handled.

author: Postal2
author_rank: Frequent Contributor
timestamp: August 20, 2024, 11:47:40 pm
content: Quote from: coppice on August 20, 2024, 06:28:00 pmYou probably stole it from GitHub using copy-pasting.

author: Nominal Animal
author_rank: Super Contributor
timestamp: August 21, 2024, 04:42:14 am
content: Quote from: Postal2 on August 20, 2024, 11:47:40 pmI suspect that comment describes Postal2's own behavioural patterns, and has nothing to do with coppice.If it was a tongue-in-cheek comment, I'm afraid it fell utterly flat: that kind of accusation can ruin friendships, you know, when people are actually proud of what they do, rather than do it just for the salary for now.I, too, find my old code extremely unfamiliar. This is because I do not memorize any details, and go through a lot of code. Some of it I write myself, but I also examine a lot of open source projects' code (for a number of different reasons). I often recognize my own style, though; and especially how I'm not satisfied with the information content in my comments. (I can write acceptable code in over a dozen programming languages, and have been paid to do so in at least half a dozen, but comments are still the hardest to get exactly right.)I never, ever, copy-paste others' code. For one, I don't need to, as I don't have any reason to: no deadlines nowadays. For another, having the code perform like I want to is much more important to me than having some code that seems to perform the way I can use. Simply put, I do not write or showanycode, whose behaviour I do not thoroughly understand.Based on coppice's posts, noting they too have decades of software development experience, I'm betting they have the same attitude.

author: Postal2
author_rank: Frequent Contributor
timestamp: August 21, 2024, 05:28:22 am
content: Quote from: Nominal Animal on August 21, 2024, 04:42:14 amBut this part of hand-made code had to be commented out, because otherwise nothing worked.

author: SiliconWizard
author_rank: Super Contributor
timestamp: August 21, 2024, 06:48:43 am
content: Houston, I think we have a problem.

author: Nominal Animal
author_rank: Super Contributor
timestamp: August 21, 2024, 07:48:48 am
content: Quote from: Postal2 on August 21, 2024, 05:28:22 amDO NOT MISQUOTE ME.The full quote is"I, too, find my old code extremely unfamiliar. This is because I do not memorize any details, and go through a lot of code. Some of it I write myself, but I also examine a lot of open source projects' code (for a number of different reasons)."The"Some of it"refers to the code I go through, not to"my old code", as your misquote implies.I write all my old code myself, and keep proper attributions for others' code, as copyright and proper attributions and licensing happens to beveryimportant to me. I could never consider code written by someone else "my old code".And no, Ineverhave a problem where commenting out some code makes something work, and I don't understand why. I just do not write or paste code I do not understand,ever. It's been decades since I broke out of the "write some code and throw it at the compiler/interpreter until it sticks" phase.I do understand you're just trying to get a rise out of me for "humorous reasons", but using a deliberate misquote is troll behaviour, and ought to get you in trouble.

author: Postal2
author_rank: Frequent Contributor
timestamp: August 21, 2024, 08:03:08 am
content: Quote from: Nominal Animal on August 21, 2024, 07:48:48 amI also, when I take code from GitHub, understand it well. However, I can easily distinguish it from mine, I don't have a situation when I don't recognize my code. I only know that if I don't recognize the code, it's not my code.

author: coppice
author_rank: Super Contributor
timestamp: August 21, 2024, 05:30:57 pm
content: Quote from: Postal2 on August 21, 2024, 08:03:08 amThis account is seeming more like an AI than a troll. Maybe its some AI developer's test account. I'm coming to the conclusion that many classes of channel on YouTube are now dominated by people testing their AIs. Not channels trying to be obnoxious like Postal2, but things like the space related channels. They cover actual news, but in an uncoordinated way, with generally good pronunciation and intonation, they then say a simple common word in technical parlance in a wacky way, and make it obvious its not a human talking.

author: tggzzz
author_rank: Super Contributor
timestamp: August 21, 2024, 05:38:35 pm
content: Quote from: coppice on August 21, 2024, 05:30:57 pmYoootooob has long been 99.9% crap. If it is now 99.99% crap, that doesn't change how you should regard it and use it.

author: Siwastaja
author_rank: Super Contributor
timestamp: August 21, 2024, 07:02:39 pm
content: Quote from: tggzzz on August 21, 2024, 05:38:35 pmSuch seemingly "small" change however makes it ten times as difficult to find non-crap, and this is a significant difference.

author: tggzzz
author_rank: Super Contributor
timestamp: August 21, 2024, 07:15:10 pm
content: Quote from: Siwastaja on August 21, 2024, 07:02:39 pmIt actually makes it easier, in one of two ways.Ignore all videos, and get on with your life.Only watch a video where someone states why it will be worth your personal time (i.e. not theirs')

author: Postal2
author_rank: Frequent Contributor
timestamp: August 21, 2024, 09:43:40 pm
content: Quote from: coppice on August 21, 2024, 05:30:57 pmI understand why you care about AI. It can scan your work and find that the "Hello world" program was definitely written by you (with lots of errors and comments).

author: DiTBho
author_rank: Super Contributor
timestamp: August 21, 2024, 09:50:23 pm
content: Quote from: tggzzz on August 21, 2024, 07:15:10 pmWhen I read sentences like this I think ... but I don't earn anything from it, so can you blame the the system that pushes creators to upload rubbish just because this way they make money?I saw a guy build bunkers with ... cardboard, wood, without insulation, without foundations, everything approximate, everything senseless, and yet it took him 2 weeks for every single video in the series (10 videos in total) and he earned no less than 5 million views per video, which, between monetization and sponsors I don't know how much it earned him but it certainly was a lot of money.

author: unseenninja
author_rank: Regular Contributor
timestamp: September 03, 2024, 06:22:02 pm
content: Quote from: John Nielsen on August 20, 2024, 05:10:03 pmJohn, if you quote someone's post, it is extremely bad manners to add words to the quote (highlighted above inbold) and make it look as if they were written by the quoted poster. I'd appreciate it if you edit your post to correct the text I wrote to containonlywhat I wrote.--Note: This message was edited by a moderator after I posted it to remove the offending text and link from the quoted post. It was some guff about hiring AI programmers and a link to a dodgy web site.

author: unseenninja
author_rank: Regular Contributor
timestamp: September 03, 2024, 06:39:03 pm
content: Quote from: Nominal Animal on August 21, 2024, 04:42:14 amSometimes, I feel like I'm the only person who writes code for a living who takes pride in doing something well and to the best of my abilities.Too many times, I've filled the air in the office with very rude words as I'm reading some ten year old code that I have to take over and maintain.Quote from: coppice on August 21, 2024, 05:30:57 pmI agree with you. If you look at my earlier post about the words that "John Nielsen" added to my post when he quoted it, I suspect that "John" is also an AI bot.

author: tggzzz
author_rank: Super Contributor
timestamp: September 03, 2024, 06:48:52 pm
content: Quote from: unseenninja on September 03, 2024, 06:22:02 pmSeconded.I think you are showing restraint by calling it "bad manners".EDIT: copied passage below from addition to the message I quoted. Thanks Simon; I didn't see the dodgy link you refer to...Note: This message was edited by a moderator after I posted it to remove the offending text and link from the quoted post. It was some guff about hiring AI programmers and a link to a dodgy web site.

author: Simon
author_rank: Unknown
timestamp: September 03, 2024, 07:21:32 pm
content: programming is one of those things that people think they can just learn and then do projects by copying and pasting off the internet. I did work with such a guy. Now I am having to fix some of his stuff. It's not fun.How about instead of quoting fake quotes we leave it to a moderator to remove the material? congratulations, you just doubled the effort of the link mill bot by repeating his links.Editing a quote of someone is strictly forbidden, I mean I don't have to explain why do I? it's an immediate ban for doing so, so all you need to do is report it.

author: unseenninja
author_rank: Regular Contributor
timestamp: September 03, 2024, 07:38:27 pm
content: Thanks for the clean up Simon.

author: unseenninja
author_rank: Regular Contributor
timestamp: September 03, 2024, 07:43:17 pm
content: Quote from: tggzzz on September 03, 2024, 06:48:52 pmI was. The pills must be working.

author: paulca
author_rank: Super Contributor
timestamp: September 17, 2024, 09:32:53 am
content: Quote from: mianos on August 05, 2024, 04:47:57 amAgreed. I think the only point I frowned at was the "github" comment. If the OP had said, "git" is the defacto standard for VCS currently, I'd 100% agree. GitHub however I have only used twice. Banks tend not to put their internal code bases on other peoples servers. Just sayin.The points also show an engineer, not a coder. Too many god damn coders these days standing on a mountain of prior work by software engineers telling us we don't need software engineering.

author: paulca
author_rank: Super Contributor
timestamp: September 17, 2024, 09:37:50 am
content: QuoteI have a dozen of these guys for every dedicated engineer who knows what he or she is doing and if they don't; IMMEDIATELY start learning it without being told to.I would lay a wager that this guy introduces himself as "<language> developer".

author: paulca
author_rank: Super Contributor
timestamp: September 17, 2024, 11:29:24 am
content: The OP's post was about Software Engineering. It says as much in the title.Would the coders in the room, STFU, sit down and behave while the adults are talking please.If you want to contribute FO and get a qualification and experience in software engineering. At very least be able to define it!You don't call me a "coder" and I won't call you a soldering iron technician.

author: coppice
author_rank: Super Contributor
timestamp: September 17, 2024, 12:28:28 pm
content: Quote from: paulca on September 17, 2024, 11:29:24 amIs it OK if I call you pretentious?

author: paulca
author_rank: Super Contributor
timestamp: September 17, 2024, 01:12:53 pm
content: Quote from: coppice on September 17, 2024, 12:28:28 pmYes. Although I added some smilies to denote the partial tongue in cheek nature.