I have been thinking for quite a while how would i make it myself. The difficulty lies in randomness. I Could go on manually but can't help and feel that there is some better way to do it.
For example it was to be generated using some programming language then all i need to do is create mountains with varying hues and let the 3d light lit them.
The "mountains" metaphor you use to describe the ups and downs makes perfect sense if you're doing this in 3D software, which is actually the ideal place to do this.
Photoshop could be used, but it will be painful, tedious and ultimately destructive.
Destructive in the sense that if you're not happy with the pattern you'll have to start again.
Tedious in the sense that it's a lot of shape creation and snapping together of those shapes, something that Photoshop isn't good at at the vertex level that's required for polygon triangulation like this.
Painful because you're using software to do something it wasn't intended to make easier.
Because triangles are the base primitive of doing anything in 3D, this might be the ideal initiative to start with a 3D design app. 3ds Max and Maya have 30 day trials with full functionality... give them a shot at this. Make a plane with the resolution of triangles you need, then apply a noise modifier until you get a result you like.
Then have buckets of fun with lighting, materials and rendering settings.
Noise Modifiers in 3ds Max and Maya give you this kind of randomness, with seeding and even animation possibilities, as well as strength and decays settings.
Here's an awesome tool that will generate the pattern for you: Flat Surface Shader for rendering lit triangles to a number of contexts including WebGL, Canvas 2D and SVG using Lambertian reflectance (see project details). Released under the MIT license.
Perfect for web use, since it exports to svg.