I'm currently learning electronics, with the Arduino environment, and I think I never had so much fun with programming since the days I learned to do some ActionScript 2.0 with Flash MX, back in the days. Not a very glamorous example, but I genuinely enjoyed the simple fact of programmatically moving stuff on the screen. Now, with Arduino, I get to programmatically move things in the physical world.
Well... that gets quite different when you do it in a professional context. I'd say there is more pressure than in pure software development.
1. The deadlines are harder. You cannot really ship a half-baked product and tell yourself you'll ship an update every week after. This is of course even more true if you are on the hardware side.
2. The pressure is higher. Because of point 1, you have more pressure to get things right on the first launch. You also have to deal with the intertwined timeline of the hardware design and manufacturing. And the money involved is arguably higher, so a failure can represent a big hit for the company.
3. The final product is a bit more likely to have a real use. That gives a better sense of purpose, but it can come with a greater moral responsibility (it depends on individuals, of course). You may not carry the same weight for the Nth rewrite of a random advertising webapp and for a critical safety related device (to take extreme examples).
And now after you've overcome all this, you get thanked by being paid half what the advertising software developers get ;-)
> Well... that gets quite different when you do it in a professional context.
Isn't this true with everything? That's why it's important to have something that is not related to work and by extension you can play around with it without the pressure of doing it "professionally".
Actually, that's what I think leads to burn out: no time to play around with stuff without pressure of "doing it one true way" or with "business value".
When I was going through a bit of what I'll call "Coder's Writer's block" this is also what helped get me out of it. I got an arduino, a keyswitch tester, soldered the keyswitch tester to the arduino and wrote some code to use the keyswitch tester as an actual extension for media keys.
Silly things, but had a fun time doing that, and got motivated to code again :)
Yes, this.
I'm currently learning electronics, with the Arduino environment, and I think I never had so much fun with programming since the days I learned to do some ActionScript 2.0 with Flash MX, back in the days. Not a very glamorous example, but I genuinely enjoyed the simple fact of programmatically moving stuff on the screen. Now, with Arduino, I get to programmatically move things in the physical world.
Pure fun.