Field specialization in software development?

Discussion about everything. New games, 3d math, development tips...
Post Reply
MasterGod
Posts: 2061
Joined: Fri May 25, 2007 8:06 pm
Location: Israel
Contact:

Field specialization in software development?

Post by MasterGod »

Good evening,

I'm about to take a certain decision (very soon) regarding my career as a software developer.
I'm going toward embedded programming And game programming (as a hobby probably).
I'm thinking on which fields should I be specializing.
Like Windows programming, Linux programming, low-level programming, high-level programming and stuff like that.
I'm going to use C++ as my programming language in any way I choose.

I'd like to hear your advices, how does such specializations counts in the real world?

P.S
Does developing to consoles (e.g. PS3, XBOX 360 etc.) counts as embedded?

Edit:
Also, what do you like more; programming to a Linux OS or Windows Os?
Image
Dev State: Abandoned (For now..)
Requirements Analysis Doc: ~87%
UML: ~0.5%
dlangdev
Posts: 1324
Joined: Tue Aug 07, 2007 7:28 pm
Location: Beaverton OR
Contact:

Post by dlangdev »

I'm not into embedded programming, but I remember sometime back Hybrid was involved in embedded development, also rogerborg is/was in it as well.
Image
rogerborg
Admin
Posts: 3590
Joined: Mon Oct 09, 2006 9:36 am
Location: Scotland - gonnae no slag aff mah Engleesh
Contact:

Post by rogerborg »

It's not rocket science.

Wait... actually, rocket science is embedded programming. ;)

You can practice embedded programming practices on the desktop.

1) Implement your own memory manager. Better yet, have someone else do it, and ensure that they don't document the behaviour, particularly regarding heap fragmentation. Heck, implement a buggy stdlib while you're at it, just for kicks.
2) Cap your memory at (e.g.) 8MB. Then just before you ship, reduce it to 6MB, which is what the customer really has available for you.
3) Ensure that you handle OOM conditions gracefully everywhere you do an allocation i.e run an automated test repeatedly, reducing your heap size each time. Check every allocation, know what version of new you're using, and catch when it throws. Recover and continue from allocation failures whenever possible.
4) Every time you do a build, go and get yourself a cup of [insert favourite beverage] before you actually run it, to simulate installing over some crappy serial port cable. Debug with fprintf().
5) Realise why embedded developers like to do desktop development for relaxation.
Please upload candidate patches to the tracker.
Need help now? IRC to #irrlicht on irc.freenode.net
How To Ask Questions The Smart Way
CuteAlien
Admin
Posts: 9930
Joined: Mon Mar 06, 2006 2:25 pm
Location: Tübingen, Germany
Contact:

Post by CuteAlien »

6) Revive your old 200 Mhz system
7) Use linux from scratch as distro to get in the mood.
8) Loose a few cables to simulate the occasional hardware problem.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
rogerborg
Admin
Posts: 3590
Joined: Mon Oct 09, 2006 9:36 am
Location: Scotland - gonnae no slag aff mah Engleesh
Contact:

Post by rogerborg »

9) Hire a ninja to sneak in at night and randomly HERF your machine to turn it into an expensive brick.
Please upload candidate patches to the tracker.
Need help now? IRC to #irrlicht on irc.freenode.net
How To Ask Questions The Smart Way
MasterGod
Posts: 2061
Joined: Fri May 25, 2007 8:06 pm
Location: Israel
Contact:

Post by MasterGod »

hehe.. I actually know what you're talking about.
I'm programming for an embedded system for almost a month now and it's just like you're saying..

P.S
The freaking debugger is also loosing breakpoints.. I can't, I just can't..
Image
Dev State: Abandoned (For now..)
Requirements Analysis Doc: ~87%
UML: ~0.5%
Brainsaw
Posts: 1242
Joined: Wed Jan 07, 2004 12:57 pm
Location: Bavaria

Post by Brainsaw »

Back to topic:

I have been programming professionally for almost 8 years now, and from what I have learnt in that time is that it's important to have a wide range of knowledge. I've been mainly doing application software on Windows Systems with various programming languages (C++, Objective-C, Delphi, Java, also some PHP and HTML (which is not a programming language)), but I was also working on a custom webserver and some other server based programs. The job I am currently in (I started here almost a year ago) came up with Objective-C, which I didn't know before, but as I have some knowledge in many other programming languages it was not too hard to get used to it (although ... the syntax still looks strange --> [myObject callAMethod: parameter1 andMoreParameters: parameter2]).

To sum it up: it is not bad to be specialized in a certain field (like embedded programming), but it's more important to have a good basis to build upon. But as I am a regular reader (and not so regular poster) in this forum I think you have a good basis.
Image
Dustbin::Games on the web: https://www.dustbin-online.de/
loki1985
Posts: 214
Joined: Thu Mar 31, 2005 2:36 pm

Post by loki1985 »

when trying to do embedded programming, you should be good at C, not only C++ (i know there are units which can be programmed in C++, but there are also many that don't).

and when reading here about the constraints of embedded programming, i really would love to have the same. for the work i did last month, i had not 8MB, but rather 8KByte.
full.metal.coder
Posts: 68
Joined: Sat May 10, 2008 11:30 am
Contact:

Post by full.metal.coder »

8Mb for embedded programming? man I would have dreamed of that back in the good old days I spent writing a grayscale rendering engine in z80 assembly for Ti 8x calculators... The device had a hardware limit of 64kb of memory, most of which was actually taken by the OS, leaving about 8-20kb for the prgoram plus all of its data...

Now that's what I call constraints. ;) Embedded programming require that your are good at C, that you have a good understanding of how the device work (cpu/memory/...) and an awful lot of patience (and maybe some tranquilizer) but it is challenging and thus can be quite fun somehow.
DtD
Posts: 264
Joined: Mon Aug 11, 2008 7:05 am
Location: Kansas
Contact:

Post by DtD »

On the consoles=embedded systems question: I'd say they are embedded systems, but really nice powerful ones.

As for Linx programming vs Windows. I can't say I've done alot of Linx stuff at all, but I have done alot for Windows. If you aren't using libraries for stuff (EG: WxWidgets) then I hope you like spending a week learning how to use MSDN, then another to get a blank Window, then another for getting the Window to use the right colors in the user preferences...
Summary: It sucks.
(Ok, its not that extreme, but you get my point...)

And continuing from rogerborg:
10) When loading the program take a crappy, propriatary USB connector that never works very good and do your best to keep it from disconnecting during transfer.
11) Cry when the LCD displays a solid white screen because the application didn't load properly, because your usb connector must've moved on the atomic level.
12) Laughgh slightly (and cry inside) when all the character sprite's pallettes are corrupted because of that damn connector.

(Thoose are from my experience doing homebrew on my GBA with a EFA...)

~DtD
rogerborg
Admin
Posts: 3590
Joined: Mon Oct 09, 2006 9:36 am
Location: Scotland - gonnae no slag aff mah Engleesh
Contact:

Post by rogerborg »

Yes, yes, I once wrote an entire web browser in 9 instructions, and 3 of them were NOPs. :P

There are still true embedded applications being written, but I doubt that anyone here will be working on those in their future careers. How about we compromise on calling console and handset applications "constrained"?
Please upload candidate patches to the tracker.
Need help now? IRC to #irrlicht on irc.freenode.net
How To Ask Questions The Smart Way
Post Reply