I'm sorry if you took that as some kind of insult; it certainly wasn't intended that way.
Oh, no it wasn’t. It just reminded me more of professors I had who after a 40 year career couldn’t see anymore through a beginners eye. It’s sometimes easy to forget where the road starts. Things are then taken for granted which are actually not that obvious. Like invariants: a concept new to me in this context or at least something I have not consciously thought about.
Talent, (formal) education and mentoring determines in part how fast down the road one can travel. I wanted to push back a little to make sure everyone can still follow at their own pace.
I actually encouraged readers to ask themselves that question because I want to hear stories like yours, if they're out there.
Telling my story of a self taught programmer is all that I can offer, for what it’s worth. I transitioned from physics research to programmer/R&D role straddling both worlds.
I like Swift. It’s the best language I’ve used thus far out of c, c++, obj-c, python, c#, matlab, pascal, java, php,...
I have used Swift since the first beta’s. I think it’s a modern well thought out language that aims and succeeds to onboard beginners and progress them towards increasing complexity. I have high hopes that the actor model will simplify asynchronous/concurrent programming and make it more accessible.
It’s for those reasons I posted, to help keep Swift great.
There's always a possibility I'm completely misguided, and it's good to have the data points.
With regard to try proliferation and invariants. For beginners, or well, not professional programmers the concept of error handling is more familiar or easier to understand than invariants I think. An error occurs and you got to deal with it. Swift makes it easy to remember to deal with it and if you don’t want to deal with it just use try? In that one-off program that’s thrown out at the end of the day. I think that’s useful and powerful. Reading that file is not going to fail because the path was just hardcoded in. My colleagues want to use it? Fine I’ll add a bit of error handling so they can open any file without crashing. I can even explain them how the app works. Though the conversation could also turn this way:
“Invariants? Wait what? What are those? What do you mean? Can you explain that in like a 5 minutes? I just want to process a file...”
It could very well be that the correct mental model is that of invariants. Invariants are an unfamiliar way of thinking or at least not a concept by that name which I actively think about when programming. It might be a hole in my knowledge that I simply need to patch or it might mean you have an uphill road ahead to onboard programmers like me. Unfortunately I am trailing you on the road so I can’t really tell which case it is.
In turn I hope I didn’t offended you. It certainly wasn’t intended as an attack upon you. Just wanted to show the other end of the spectrum.