I explained to him how the EC2 instances would assume the role that already had the permission and it took so long to convince him.
Needless to say, we had to explain lots of basic security and networking concepts to him, which he wouldn't believe until given live demos of basic things like public versus private IP addresses in AWS.
- one architect who was there from the apps inception yen years prior, who knows all the ins and outs of the application - one project lead, who was with the project two years, who could also code in the classical sense, but was mostly the connection to the customer - a tester who could not code, but also knew the app in and out (from the user perspective) and found things or relayed and reproduced bugs reported by the customer - a technical writer who could also code (somewhat), but was more responsible to think of user behavior, undefined app behavior, edge cases, logic issues etc - and several disposable code monkeys, who were exchangeable and expendable, who did most of the tickets. I joined as one of these
The work was great, the team functioned great and we delivered what the customer wanted. But what really struck me was that software dev is not science, or engineering, or an art form, it's most akin to a trade like plumbing or carpentry. I had computer science as minor in university and pretty much none of what I learned there helped for "real" work. I learned SVN in university, but obviously the team used git. And all of the software development and programming courses I did taught me nothing of how real software is structured or how a team works.
That impression only more strongly once I had to train new hires, PhDs in comp science, who knew basically nothing about real software development.
Again, it's a trade, something you learn on the job from someone who already knows it, like a master carpenter.
While you could absolutely generate a list of compliance checks to execute like a formula, at the end of the day you need to have absorbed enough experience that, when presented a physical or imagined project, your brain is immediately able to make connections between what it sees and the general principles of how you build something correctly.
Since I don’t have that experience, I know I need to stick to the well-trod path. No clean-sheet deck construction methods for me. :)
Trying to apply real engineering licensing ideas to software would just result in the word "engineering" no longer being used in the vast majority of cases. If that's your goal, then sure, great. But it won't stop ridiculous security mistakes from being made, they'll just be made by people with different job titles.
https://www.constructiondive.com/news/contractors-sentenced-...
https://www.reddit.com/r/AskEngineers/comments/cjpva1/is_it_...
https://www.monitor.co.ug/uganda/oped/commentary/it-s-a12-ye...
The main problem is that the IT industry for a loooooooong time "self-regulated" itself, the only areas that did have regulation had it come in externally (i.e. automotive, aeronautic, astronauts and maritime). Only in the last years, GDPR + insurances forced a bit of change and accountability, but still, it's far removed from the standards that company owners, workers and planners are held to in construction (licensed engineers), legal or medical practice. Mess up there and everything can happen from fines over a license suspension to a permanent removal, or even jail time.
In contrast, mess stuff up as a CTO and you'll probably be "asked" to voluntarily depart in exchange for a nice golden parachute.