Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm about 3 years experience as .NET developer, but I'm sad I haven't gotten to create anything that excites me because I'm just using puzzle pieces someone else has already created.

I learned most of my programming myself but even more of it on the job, and there hasn't been any need for things like low level C and assembly and such where I am, so I've never learned how to use it for anything beyond the basic undergrad programming projects. How can I get experience with these things?

It actually makes me sad that I don't know how to write a driver.

share|improve this question
    
find a hardware dev company and apply for a job ;) or get into the unix kernel OS community –  ratchet freak Aug 29 '11 at 20:41
    
Hi Ryan, your question was bordering on too localized: I've revised it to keep it general while still asking what you wanted to ask. –  user8 Aug 29 '11 at 20:52
    
Decide what you'd like to do and start coding. You definitely don't need a job to write something that works and if you've started before you get a job it's far more likely that you'll get one. –  Ben Aug 29 '11 at 20:53

5 Answers 5

up vote 2 down vote accepted

It really depends on what you like. Micro-controllers are always usually one of the first things you could go for if you are willing to shell out some money.

Micro-Controllers

Arduino is probably the most popular choice and has a large fan-base. As such, if you are the type who would need help or direction then this is definitely the choice. I personally have had fun working with a Velleman PIC and "experiment board". You can actually get those from some RadioShacks. Although with this board, you will have to have some decent soldering skills because it requires you to assemble it yourself.

If you are not so much looking to work with hardware, you can always go the route of an emulated older computer.

Old Systems

Obviously you won't have to spend money on this so that is always a plus. There are a way to many systems to list but some of the more well known ones are the Commodore 64 or Apple II. Finding the required files for these two should be no problem. If you want to work with something like the Atari 2600 or NES, that is always a possibility. These will usually entail assembly, but C is still a possibility.

OS Development

Rolling your own OS is a really fun, just don't expect to get some über-special end-result just like you wouldn't expect to write Crysis 2. Maybe you'll achieve a cruddy DOS-like product if you're lucky and pour some time into it. A good place to start if you have no idea what to do for making your own OS is this decent tutorial.

share|improve this answer

Get a small Arduino, PIC or other microcontroller kit. Such small devices have less support for getting too "far from the metal".

You can also try learning to program a vintage computer, such as an old PalmPilot, or an Apple II emulator.

Mobile and embedded apps companies often value programmers who can show experience developing stuff for these constrained environments, and who understand how to make use of limited available performance and memory resources.

share|improve this answer
    
I also would like to add the Arduino community is insanely helpful, check out their forums! –  Mercfh Aug 30 '11 at 0:44
    
+1 for microcontrollers. If you haven't ever touched a microcontroller, there's something oddly satisfying about writing onto a chip. –  prelic Aug 30 '11 at 0:44
    
Sweet. I found arduino.cc/en/Main/Hardware and was looking at the different ones. I wonder if I used the Bluetooth one I could make a manager for Wii Remotes to make it easier to swap controllers out mid play or something. –  ioSamurai Aug 30 '11 at 13:20

Fell in the same situation and what was my solution?


I bought K&R's book, started reading it and started solving the exercises(which sometimes do involve you rewriting some of the Standard Library functions)
From that, I moved on to reading this book "Computers Systems, a programmers perspective"

My programming world was never the same again.
After reading that book and working the exercises, you can say that you write some really nice low level code, mixing Assembler with C and getting the highest performance there is

My last step in the evil plan was to start building my own mini kernel, and hell, that is teaching me a lot already.(Or you can simply download Linux kernel source and start messing around with it)

Just a suggestion for a scenario that proved very useful for me.

share|improve this answer

Find an open source project that sounds interesting, look at its list of bugs to see if there's something that sounds like you might be able to fix it, and dive in. @Glenn Nelson mentioned OS development; continuing on that trail of thought, FreeDOS has a fair variety of bugs in its bug tracking system. Otherwise, Sourceforge or Freshmeat may be good places to start looking.

That will also give you experience with working with a mostly unknown codebase, which is never a bad thing to know how to do.

share|improve this answer

Ryan a few mainframe shops still use assembler on IBM zOS machines if you're really that interested.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.