I have been writing software for about 20 years (following on from OChem PhD and research for a few years). I am 'senior' and get paid plenty in Oz...
I have aphantasia - I can't visualise/picture things in my mind, so I use pen and paper or whiteboards A LOT!
I create various ERDs, mind maps, sequence diagrams etc. I use a ReMarkable which makes it a bit easier to move stuff around and makes it more effective.
I get that some people might think it is 'pure romanticism', but pen and paper has been crucial for my success.
> However the novelty of what can be solved is very surprising.
I've read that the 'surprise' factor is much reduced when you actually see just how much data these things are trained on - far more than a human mind can possibly hold and (almost) endlessly varied. I.e. there is 'probably' something in the training set close to what 'surprised' you.
Github copilot is so good at writing CRUD db queries that it feels as easy as an ORM, but without the baggage, complexity, and the n+1 performance issues.
My journey has been from JVM (Java, Scala, Kotlin) -> Go -> Rust, writing web backends, APIs, integrations etc.
I don't write 'clever' code, just sticking stuff into Postgres/PostGIS/Neo4J/Clickhouse, some basic business logic and math, returning JSON etc.
I have found Rust to be super-productive and a joy to use compared with Go. I don't use the complex parts of Rust; no messing with lifetimes, a little cloning and using Arc<> to share things across threads/tasks.
GitHub Copilot in Jetbrains RustRover is very effective at generating accurate Rust CRUD code, handler methods etc. I don't bother with an ORM because it is so fast to write the SQL queries. Having said that, Copilot sucks at anything even slightly complicated and you take a risk asking it to generate code you can't validate quickly.
The whole of Rust might be a beast, but I have had a very productive couple of years just using the 'boring' bits and it took a week or two for me to be more productive than in Go writing bog-standard web backend code.
I work at an ISP that offers fixed wireless Internet.
For marketing purposes I generate viewsheds around each of our ~500 towers, so we can get an idea which suburbs to market to.
At the time of sale, my system will calculate the line of site from the access point on the tower to the customer rooftop to determine the height of the pole (is any) needed to get service.
Like the OP, we re-sampled (gdalwarp, raster2pgsql) some of the 15cm lidar data to ~1m to get it down to a manageable size (7TB) and run it on a single bare-metal PostgGIS instance (500GB ram, 64 cores)
Radio waves at 5GHz are quite 'fat' so we need to allow for that on LOS calculations as per [0].
The GIS magic mostly sits in PostGIS and we use a number of data sets to solve problems:
* Shuttle Radar Topography Mission - Digital Elevation Model and Digital Surface Model, 30m grid [1]
* Building footprints for all of Australia [2]
* National Roads [3]
* property boundaries (cadastre) [4]
* All Australian addresses [5]
* Australian suburbs [6]
For the front end we use a VueJS app (quasar.dev) using DeckGL on Google Maps to visualise the LOS path. Back end is Rust (axum/sqlx).
GIS is a very interesting are to work in - if I had more fun they might start charging me admission to come to work!
'I have a database table Foo, here is the DDL: <sql>, create CRUD end points at /v0/foo; and use the same coding conventions used for Bar.'
I find it copies existing code style pretty well.