Live data from Hacker News

Writes large correct programs (2008)

johndcook.com

41–50 of 114 posts

Re: Writes large correct programs (2008)

#41

It seems to me that in other areas of tech, companies generally hire electrical engineers, mechanical engineers, civil engineers, etc. On the other hand, software companies feel that they don't need to hire computer scientists. Then periodically there is a discussion on Hacker News that boils down to "all of the other engineering disciplines can make reliable predictions and deadlines; why can't software?" or "why is…

The definition of “software engineer” is SO broad though. If you’re maintaining a database/flight controller/cloud service, etc, you probably need real comp sci knowledge.

Hacking together an internal tool with laravel? Doing vanilla CRUD for a client’s web app? Probably not! No amount of comp sci knowledge will help you configure the millionth nested layer of Wordpress plugins.

So much “software engineering” is just plumbing. Connecting things to other things with a little bit of business logic in between. Honestly my job is plumbing, most of the time.

Re: Writes large correct programs (2008)

#42
post #35

I’ve worked on and finished some extremely large programs over my years in non-tech enterprise. I’m also an external examiner for CS students, and I’ve regularly talked about how I think the curriculum is outdated. In Denmark where I’m from it’s rare to get a programming application from someone without a related degree. It wasn’t so rare 20 years ago, but I can’t remember when I saw one last. I agree that degrees, a…

Those pseudo-jobs are a necessary evil in lieu of some sort of UBI imo.

Plus they're useful for sabotaging your competitors' TTM.

Re: Writes large correct programs (2008)

#43
post #30

> how to organize software so that the complexity remains manageable as the size increases So John is missing the role of software architect here. Science, art, and development - 3 roles. Not all visits to the stratosphere are misadventures.

I think TFA is implying that good SWEs are good architects too, the skills go hand in hand. I frankly don't believe in the "software architect" as a separate role. I've worked with "architects" who are clearly just BS artists because they know the jargon but have no skill to back it up and make difficult technical decisions regarding tradeoffs.

How do you propose those "BS artists" feed their families in an alternate reality tech industry where only the roles that add value are deemed worthy of food and shelter coupons?

Re: Writes large correct programs (2008)

#44
post #30

Earlier quoted context omitted.

I think TFA is implying that good SWEs are good architects too, the skills go hand in hand. I frankly don't believe in the "software architect" as a separate role. I've worked with "architects" who are clearly just BS artists because they know the jargon but have no skill to back it up and make difficult technical decisions regarding tradeoffs.

How do you propose those "BS artists" feed their families in an alternate reality tech industry where only the roles that add value are deemed worthy of food and shelter coupons?

A good first step would be let them keep their jobs, but strip them of any authority. This already happens at some companies - the architects provide guidance which dev teams are not required to follow.

I think it's absolutely insane that we live in a world where many people with an "architect" title don't write code, and sometimes have never written code in their life! That would be like a world full of chess coaches who don't play chess! They just read BS articles like "Skewers are the new forks" or whatever.

Re: Writes large correct programs (2008)

#45

Can absolutely relate and understand. I taught myself C++ by writing games with SDL2. The first game -- snake took about a couple of hundred lines and I put everything in one .CPP file. And I felt pretty good. The second game, well, I forgot what it is, not Tetris nor Breakout, but it was complex enough that I realized that I need to put code into header files and source files. The last game of that project was a Ult…

Unrelated to the central point of your comment, but I've also found that a simple entity system is usually perferable to ECS for smaller games. ECS aids performance, but performance usually isn't what you're struggling with in a small indie game. You're mainly just struggling to organize your code, and just need something simple to help manage complexity.

Re: Writes large correct programs (2008)

#46

Can absolutely relate and understand. I taught myself C++ by writing games with SDL2. The first game -- snake took about a couple of hundred lines and I put everything in one .CPP file. And I felt pretty good. The second game, well, I forgot what it is, not Tetris nor Breakout, but it was complex enough that I realized that I need to put code into header files and source files. The last game of that project was a Ult…

Adopting an existing well-established style guide is a good way to make these sorts of questions go away. https://google.github.io/styleguide/cppguide.html

Re: Writes large correct programs (2008)

#47
post #4

This reminds me strongly of reaching the final year industry projects in my software engineering degree, and seeing a significant portion of my colleagues unable to develop software in any meaningful way. There was a curriculum correction in the years afterwards I think, but so many students had zero concept of version control, of how to start working on a piece of software (sans an assignment specification or scaffo…

I was an EE undergrad. The formative project for me was a competition to see who could make the fastest digitally controlled maze solving robot.

The key that gave my team an advantage was the humble ASSERT. If the robot got off track, it would stop in place, blink a light, and show a line number on a digital display.

I've been working in and around Windows for a long time, and I'd say asserts and crash dumps are the two things that allow us to improve our quality given that we're still mostly using C/C++.

Re: Writes large correct programs (2008)

#48

Can absolutely relate and understand. I taught myself C++ by writing games with SDL2. The first game -- snake took about a couple of hundred lines and I put everything in one .CPP file. And I felt pretty good. The second game, well, I forgot what it is, not Tetris nor Breakout, but it was complex enough that I realized that I need to put code into header files and source files. The last game of that project was a Ult…

Unrelated to the central point of your comment, but I've also found that a simple entity system is usually perferable to ECS for smaller games. ECS aids performance, but performance usually isn't what you're struggling with in a small indie game. You're mainly just struggling to organize your code, and just need something simple to help manage complexity.

Minecraft is an entity system and it seems to work just fine. (Fun fact: Forge Mod Loader makes Minecraft an entity component system.)

Re: Writes large correct programs (2008)

#49

Computer scientists advance in their careers by writing papers, software developers do by writing programs. Some CS grad students and profs are genius programmers, but mostly CS researchers write a program that at best lacks the polish of a real product and at worst almost works. When I was in physics grad school I had a job writing Java applets for education and did a successful demo of two applications at an CS con…

> Computer scientists advance in their careers by writing papers, software developers do by writing programs.

Rather: Computer scientists advance in their careers by writing papers, software developers do advance in their careers by becoming managers.

:-(

Re: Writes large correct programs (2008)

#50
The key observation about the Dunning-Kruger study is that humility, hard graft, and honest perseverance towards improving oneself are the three most important factors in achieving proficience in crafting large software data flow systems. How one designs and implements such systems is the art of any form of creative endeavor.

Designing and implementing large and correct systems is a matter of growing them, from small, trusted pieces into larger interconnected systems of systems, with ever greater care, knowing that the entire thing can collapse at any time if the wrong decisions are made or have been made.

Post reply on HN