Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Well, it kind of happened to me when I started.
I started with GWBasic (Was my first introduction to coding, I was around 13). I realized very fast how shitty it ws : Couldn’t even compile to .exe. Switched to QBasic , which has an IDE ! Still didn’t like it. Next : Pascal. Discovery ! OHHHH there .com files which are nice programs under 64kB. Mines are too big. Started doing ASM, bought 5 books with my own money; p It was fun ! (Switching 80286 processor in “unreal” (not protected) mode haha) And then I started thinking : But it is So fucking much work to write. So C => C++ => Visdual C++ => Discovery of c# and java (Java was for school for getting a degree). Now I’ll never go back. I’ll code in c# as long as it exists.
Go for anything that is in regulated fields. Automotive, avionics, trains, medical, you name it. It's more C with only occasional assembly though.
Anything where using the latest hipster shit with 5 mio LOC for hello world would be prohibitive except for entertainment or UI systems because nobody can review even 10% of that in finite time for serious purposes.
Also, you should add oscilloscope usage to your skills if it isn't there already. Use some uni lab or whatever to get familiar with that.
RTOS knowledge is also important. Doesn't really matter which one, they're all somewhat similar. And basic electronics so that you can at least read schematics.
Last month, I had to debug some shit on an 8051 where I didn't even have a source level debugger and had to get by with abusing some LEDs.
One catch is, these domains are process heavy, so adding in some dev process knowledge (no, not NPM'ing 5GB of trash and pushing shit to GH once it compiles) will be helpful.
Root788362yAssembly (z80) was my second language (after TI-BASIC). C was my fourth, after bullshit mandatory VB classes.
I also have a disdain for non-compiled languages, but they absolutely have their place, too.
After I left game dev, I got trapped in web development because there was literally nothing else available. Now, I'm a senior Rails dev. Yay! I do enjoy it, but Imiss being able to write something absolutely perfectly. I miss the low-level optimizing more than anything else.
As for your questions... I'd recommend asking @FrodoSwaggins, if he's still around 🙁 Poor guy works more than I do. We have a few more low-level and embedded devs, but I can't remember their names right off.
One good reason for ASM on 68k is that the 68k is quite nice, and especially for beginners.
@Fast-Nop This is true. We even had our boards with it and shit. My highlight was making couple of diods blink lol. (So sending message to a bus, it was not ISA nor PCI, I don’t remember the name honestly, but it was fun).
I also “cheated”. I installed an emulator of 68000 at my home PC, wrote everything during the weekend and just went to “exam” with an usb key I’ve already tested. Exam : 30 seconds. Then I went to library (lol) to play data for the rest 4h. (Was not allowed to leave school premises or exam is void)
Bubbles71002yNow I’m not the most experienced but I know reverse engineering involves Assembly and C/C++ so that might be something to look into job wise if you’re into that
kavenc6492yThat's a common skills set if one worked with system IC design company. Such as manufactures of mobile phone chips, smart TV/Watch/Assistant chips. I came from the similar career path so kind of able to relate your feelings.
The thing from this working experience is that, in the beginning you at some point proud of yourself by solving some nasty hw+sw problems that nobody else in the company could. And probably the solution comes with some crazy coding techniques or deep system understandings. You thouth you learn a lot and got great reputations among colleagues. Until you were tired of solving these familiar issues and learning nothing new, you go out and look for new challenges. That might be the moment that you realized you don't have anything exciting on your resume.
All the great things you've done related to the implementation of the product itself. Your crazy solution works because you know your implementation well. And this is sometimes hard to explain to others which were not from the product line (a.k.a the one who will interview with you). That is a true problem.
I faced this situation before. I realized that for the further career development, I can either:
1. Keep working with IC company and forget about the passion of learning new techniques. Probably go for a manager later.
2. Try to take small steps towards software design for more new things.
If you like to keep developing your low level programming skills, go for 1. Look for IC design companies with turnkey solution or system integrators with complex firmware designs. They should love your skill set. Software giants like Google/Amazon/Microsoft, etc are also making there own hardware devices which need talents like you.
If you want to try something more "software". Look for something like: hardware simulation, hardware modeling and compiler. Those jobs need deep low level programming experience with high level implementation skills.
Quirinus8112yBlizzard was looking for someone with assemby and reverse engineering skills recently. Maybe they still are.
Fakerlol842yWow, first of all: thanks for all the helpful stories! It's really interesting hearing from people being in the field and what they had to endure.
I do have an intimate relationship with Oscilloscopes, as I had to hw-debug a lot of chips with no real documentation. Had to rely on LEDs to show me states more often than I would like.
I can read schematics of circuits just fine, would struggle to engineer my own pcb's though.
I really wasn't considering avionics, trains etc, those fields really skipped my mind. Now that I think about it, those are prime examples where you need people with special knowledge.
At one time I considered going into robotics, as I did several projects with industrial robot arms.
Has a good mix of low level programming, ee, applied maths and my love for big, powerful tools that can snap your neck if you accidentally swapped the axis in your program.
I guess my problem is the fact that I did too much and can't decide what to specialize in my specialization.
@Fakerlol Looks like a good start, and with some process / QA knowledge added, you should find a job in these areas.
Like always in regulated domains, updates are expensive because of certification, so system level thinking is important, with quite a lot of real world physics and possible failure modes included. Means, having a broad knowledge and understanding is a plus.
Another easy win is CAN bus that you should get familiar with. It's just a serial shared media bus, so not really difficult to figure out, but it's better if it's in the resume so that keyword-checking HR drones will find a match.
@FrodoSwaggins That's super cool and hardcore even for my measures! :-)