|
LLSix posted:Any advice on interview prep for device driver stuff specifically? I think I'd feel less nervous if I had something to review before going in. You might get more input on this in the embedded programming megathread, but a couple of ideas spring to mind:
Since you're dealing with remote control, maybe be able to talk about wireless communication too? I feel like a position described as "software engineer" and "device driver author" wouldn't expected to know about the deep RF properties of such things but having a working knowledge of protocols that are commonly used to talk over wireless comms might be useful...not that I can name any myself that aren't 802.11bgn, but that's where I'm currently focused Does GPS enter into it? How about video streaming? Let us know how it goes!
|
# ? Feb 6, 2018 19:48 |
|
|
# ? Jun 8, 2024 07:07 |
|
is feeling like you're overpaid for how little you do slash how little your skills have progressed since starting your new job a form of imposter syndrome? i'm like, not that much less paid than my lawyer friends with total comp and it feels like i'll never get this salary if i leave this massive loving bubble of an industry
|
# ? Feb 6, 2018 20:21 |
|
csammis posted:
I have had to count bits for real, and the only acceptable answer for production is __builtin_popcount(). There's plenty here. But being able to reason about the bitwise representation of things is very helpful, like half of the possible uint32_t's have the upper bit set, so unless you know something about the incoming distribution Kernighan's would perform poorly.
|
# ? Feb 6, 2018 20:31 |
|
LLSix posted:I've got an interview for a senior software engineer position tomorrow with a company that makes remote controlled cars/planes/boats etc. Sounds like it'll be about half mentoring (I've taught on and off so I'm confident about that) and half device driver writing which I'm less confident in. Any advice on interview prep for device driver stuff specifically? I think I'd feel less nervous if I had something to review before going in. This is a bit tough to answer with specifics, as the implementation of device drivers varies a lot depending upon the environment that you're running in (bare metal, specific OS, SoC/microcontroller/etc.). However, there are some common aspects that will be a part of all hardware interfacing. I'd concentrate on these aspects when preparing for your interview (they're what I'd ask a candidate about, anyway): 1. Like csammis mentioned, know your low-level communication methods for speaking with hardware. For sensors and control systems like what you'd see in RC vehicles, these will probably be things like I2C, SPI, GPIOs, and UARTs, as well as PWM and ADC. Knowing what these guys can do and what their limitations are is good. Knowing how a microcontroller, SoC, or BIOS exposes memory-mapped I/O control registers for these guys is good. Those MMIO registers are how you're going to be interacting with hardware, so show that you know the basics on how to do that and where you'd find address/register info ("it's in the 4000-pages of SoC documentation", "I'd go talk to the BIOS guy", "I could probably scrape an address out of a device tree in the Linux kernel and then Google it to find the right docs", etc.). 2. Interrupt-driven design. Top-half and bottom-half interrupt handlers are important to know, though a simple design with lax constraints could get by with immediately servicing interrupts completely without any queuing for later processing. If you have experience with interrupt management with a particular microcontroller or SoC, explaining a concrete example of that is good. Examples of when interrupts might fire (say, data arriving on a UART from a serial-based MAVLink connection) and how you'd service that before returning to the main event loop is good. Comparing/contrasting interrupts to polling and knowing when it is appropriate to use each will most certainly be asked about if your interviewer knows anything about device drivers. 3. DMA will probably not be a concern for you, since your problem domain is concerned with sampling and writing small amounts of data to/from sensors and motors at regular intervals. You're not pushing large blocks of data around, unless you're capturing video data from a camera and transmitting it back or something like that. A cursory knowledge of what DMA is and what it is used for would probably be enough to just check the box on that one, if it even gets mentioned during your interview. 4. State machines, particularly on a bare-metal system without an OS. Show that you understand the main event loop of embedded firmware (deadlines, scheduled polling, etc.) and that you understand more of the big picture of where device drivers fit into the system. Your device driver itself may also contain a rudimentary state machine of some sort (init, shutdown, delay, sample, etc.). 5. Stuff that you should avoid doing in a device driver. Some good examples are avoiding floating point math, variable/large-sized buffers, large stack frames, non-word aligned memory accesses, concurrency/locking (sometimes), and text/data manipulation. Get the data in/out of the hardware quickily and at the correct point in time. Minimize processing of data in the driver itself. Keep memory/resource usage as small as possible. Ironically, avoid blocking/busy-waiting on I/O. On bare-metal, all bets are off on this stuff, but these items are generally best practice. 6. Debugging. The unexpected will happen, and you'll need to show that you have what it takes to figure out why. Have you ever used a logic analyzer, oscilloscope, or JTAG to watch hardware behavior? It isn't a dealbreaker if you haven't, but if you have you can demonstrate some real strength in this area. Also, if you have Arduino, RasPi, BeagleBone, etc. hardware interfacing experience, you can use that as a testbed to shake down hardware interfacing code before moving it back over to the target platform. If you have a serial terminal to push debug output over on the target platform, make sure to explain that, while useful, using it will slow things down, blow your timing budget, etc. Blinking an LED via a GPIO is also a tried-and-true aid to debugging device drivers during their initial development and troubleshooting. Your goal is to show that you won't get stuck because you've run out of debugging techniques to try. Or, at least, that you've got a few good ideas on what to try first. Try to think of a few good ones that you can mention (hell, just use the ones I listed) to give assurances to your interviewer that you can handle this type of debugging. If I were hiring a device driver developer for something like what you've mentioned, I'd ideally want someone that I could hand a sensor/motor/servo control IC datasheet to and say, "we want to be able to sample/adjust this at 100Hz on a continual basis. We've got some samples, so breadboard this out with an SBC to drive it. See if you can find some sample Arduino or Linux code available for you to start with. Get this chip talking and tell me if there are going to be any problems." I'd then (eventually) get back some C code with best/worst case time when polling and any appropriate interrupt handler info or jitter issues or whatever caveats or dealbreakers turned up. Once given the green light to proceed after the proof-of-concept, that developer would then lock down the device driver, coordinate to get it integrated into the software build (kernel/bootloader/BIOS/etc. as appropriate), document it, and perform integration testing on the target hardware side-by-side with the hardware team as appropriate. If the system misbehaves down the line, the developer will be able to collect enough information to assist the hardware folks in troubleshooting the issue from the software side, and adjust the software side as needed to address the issue. Some reference materials that might be of some use: Linux Device Drivers, 3rd Edition (check out Chapter 10 on interrupt handing): https://lwn.net/Kernel/LDD3/ ArduPilot firmware libraries: https://github.com/ArduPilot/ardupilot/tree/master/libraries Quick overview of SPI, I2C, UART, GPIO (if this material is new to you): https://tessel.io/blog/108840925797/a-web-developers-guide-to-communication-protocols Good luck!
|
# ? Feb 7, 2018 01:34 |
|
I wish I put effort into things like you do, hendersa.
|
# ? Feb 7, 2018 02:01 |
|
Pollyanna posted:I wish I put effort into things like you do, hendersa. Be the change you want to see in the world.
|
# ? Feb 7, 2018 02:04 |
|
hendersa posted:This is a bit tough to answer with specifics, as the implementation of device drivers varies a lot depending upon the environment that you're running in (bare metal, specific OS, SoC/microcontroller/etc.). However, there are some common aspects that will be a part of all hardware interfacing. I'd concentrate on these aspects when preparing for your interview (they're what I'd ask a candidate about, anyway):
|
# ? Feb 7, 2018 05:35 |
|
Pollyanna posted:I wish I put effort into things like you do, hendersa. TooMuchAbstraction posted:Be the change you want to see in the world. You won't just wake up one day and be knowledgeable, motivated, etc, you have to work on it.
|
# ? Feb 7, 2018 08:59 |
|
My psychiatrist prescribed me Wellbutrin a couple of weeks ago for focus and some mood stabilization, which helped me a little bit, and just prescribed me some Adderall to see how it works out. Just took it for the first time in my life, and HOLY poo poo. It felt like I was able to focus for the first time in my life. Is that what it feels like to be normal? Anyone know how prevalent its use is in industry? Because god drat, I'm just realizing now how my career might have been impacted by my persistent inability to sit down and sustain productivity on a single thing for a couple of hours. I've managed because of time pressures and a reasonable amount of skill, but I never could have imagined myself sitting down and focusing like this until today. Jesus Christ. I actually managed to multitask effectively.
|
# ? Feb 7, 2018 09:34 |
|
I'm not sure any sample of career programmers would represent the mentally normal
|
# ? Feb 7, 2018 11:56 |
|
Can anyone shed some light on what team manager interviews look like? I moved from IC to running my own team and I'm curious how interviews change. Do places still expect a whiteboard interview or does it becomes more of a conversation?
|
# ? Feb 7, 2018 13:33 |
|
Apologies if this isn't the right place to ask, but: what do people do to vet startups they're considering joining? Since so many developer jobs out there are for startups, I want to make sure that a job I take there is good and that I can take full advantage of it. What should I be looking out for? So far, these are the sorts of things I make sure to touch on: - Buzz (whether product is interesting, well-received, useful, and well-made) - Work-life balance - Most recent series (ideally C and later) - Runway (at least 18mo worth) - Upcoming contracts, aquisitions, etc. How else can I tell if an opportunity with a startup is a good one? What else should I be focusing on?
|
# ? Feb 7, 2018 15:06 |
|
Mniot posted:How about some salarychat: I'm in the Boston area, making $180k base and okay benefits, as a back-end programmer. I've been in the industry ~10 years. If you can get offers for $200, then that's proof you're worth 1.5x $130 isn't it? On the other hand, countering a $130 offer with proof of a $200 offer is probably going to lead to a reply along the lines of "good luck, enjoy working there", which probably sucks after you've sunk time into the interview etc. but leaving $70k of yearly income on the table would suck a lot more unless it's a ~passion project~ IMO. AFAIK the rule is that managers get paid more than their reports because to do otherwise would insult their fragile egos
|
# ? Feb 7, 2018 15:11 |
|
Pollyanna posted:Apologies if this isn't the right place to ask, but: what do people do to vet startups they're considering joining? Since so many developer jobs out there are for startups, I want to make sure that a job I take there is good and that I can take full advantage of it. What should I be looking out for? So far, these are the sorts of things I make sure to touch on: Sounds about right to me. The only other thing I'd add is the same I'd ask anywhere, which is to try and find out whether the team you'll be working on is well-staffed for the work they're doing, and whether you're happy working on a team of [whatever their target team size is].
|
# ? Feb 7, 2018 15:21 |
|
Jaded Burnout posted:Sounds about right to me. The only other thing I'd add is the same I'd ask anywhere, which is to try and find out whether the team you'll be working on is well-staffed for the work they're doing, and whether you're happy working on a team of [whatever their target team size is]. To me this is infinitely more important at Poly's career point (and mine too, we're not that far off) than any of the above. Even 6 months on a team that cranks out a bunch of work but goes belly-up would be a win. I'm definitely going super small start-up next time. No partner, no kids, loads of cash from being Not Retarded With Money. Just gently caress me up, VCs.
|
# ? Feb 7, 2018 15:27 |
|
Jaded Burnout posted:Sounds about right to me. The only other thing I'd add is the same I'd ask anywhere, which is to try and find out whether the team you'll be working on is well-staffed for the work they're doing, and whether you're happy working on a team of [whatever their target team size is]. What do you mean by "well-staffed"? Is that based purely on size, as you said, or is it more about the skills of the people on the team, how many resources are allocated to it, etc.? Also, what are the inherent tradeoffs of working for a startup? I've worked for a couple in my life, but I still don't have a good handle on the differences. I get the basics and that a startup is less established and requires you to wear more hats, but other than that I'm a little unsure of what I should be aware of. Good Will Hrunting posted:To me this is infinitely more important at Poly's career point (and mine too, we're not that far off) than any of the above. Even 6 months on a team that cranks out a bunch of work but goes belly-up would be a win. I'm definitely going super small start-up next time. No partner, no kids, loads of cash from being Not Retarded With Money. Just gently caress me up, VCs. Man, I don't wanna be out looking for work in 6 months, that sucks. And from what I can tell it takes a good 2-3 years to really crank out some good poo poo, it's a slow burn.
|
# ? Feb 7, 2018 15:32 |
|
I got more knowledge in my first 6-9 months at my first start-up job than any other thing I've ever done and even if we had failed and I had gotten let go it would have been infinitely positive in terms of experience. That was enough time to build an API for a web app that 50 people were using internally to manage millions of dollars in campaigns and the services to glue our data pipeline and bidding system together. I don't think you're at a point where you can be begging for everything to be perfect. Sure, you can look for "slow burn" resume building and learning but why are you looking for that at a loving start-up? "2-3 years" and "slow burn" and "start-up" .. doesn't really compute to me.
|
# ? Feb 7, 2018 15:35 |
|
...that makes sense. I guess I was looking from it purely from a time-spent point of view.
|
# ? Feb 7, 2018 15:38 |
|
Doctor w-rw-rw- posted:Anyone know how prevalent its use is in industry? It's hard to get good data on something like Adderall usage, but anecdotally, you're far from alone.
|
# ? Feb 7, 2018 15:44 |
|
Doctor w-rw-rw- posted:My psychiatrist prescribed me Wellbutrin a couple of weeks ago for focus and some mood stabilization, which helped me a little bit, and just prescribed me some Adderall to see how it works out. That's the effect Adderall has on almost everyone.
|
# ? Feb 7, 2018 15:46 |
|
I've thought about trying it. My therapist of 7 years says it would work wonders for my productivity, but probably have a negative impact on my mental state outside the hyper-productivity. She suggested I micro-dose LSD and drink Bulletproof coffee instead. There's a reason defensive backs love it and it's banned in the NFL.
|
# ? Feb 7, 2018 15:52 |
|
Is your therapist Joe Rogan?
|
# ? Feb 7, 2018 15:55 |
|
I have ADD and executive dysfunction, so I'm literally useless without Adderall XR and similar medicines.
|
# ? Feb 7, 2018 15:57 |
|
The Fool posted:Is your therapist Joe Rogan? Unfortunately (?) not, she actually suggests I give Adderall a genuine shot especially if I ever start taking courses again. Pollyanna posted:I have ADD and executive dysfunction, so I'm literally useless without Adderall XR and similar medicines. I have severe ADHD but any sort of stim will likely be not good given my other conditions. I consider the ability to function without it a massive success in my life but see above.
|
# ? Feb 7, 2018 16:03 |
|
Doctor w-rw-rw- posted:Adderall Very, very prevalent. I've never been prescribed it, or been tested for AD(H)D, but if I take it 'recreationally', it turns me into a coding machine. Modafinil is also currently a trendy, programming performance-enhancing-drug, which improves focus similarly, but not nearly as strong or 'speedy'. There are plenty of articles out there discussing Adderall/Modafinil use in tech (especially SV.) I'm not a doctor or anything, but it's worth noting that there really isn't much of a free lunch with these drugs. Taken every day, the effects you're feeling rapidly start to fade due to tolerance, and the side effects really start to ramp up. This is made exponentially worse if you don't take care of yourself (get 8+ hours of sleep, exercise, and clean diet) while you're on them. Again, not a doctor, but you may want to consider having 'days off' (like the weekend or every other day), rather than taking them everyday. https://techcrunch.com/2008/07/15/how-many-of-our-startup-executives-are-hopped-up-on-provigil/ https://modelviewculture.com/pieces/adderall-has-a-tech-industry-problem
|
# ? Feb 7, 2018 16:04 |
|
Slate Star Codex did a piece on Adderall recently that may be of interest:quote:I didnt realize how much of a psychiatrists time was spent gatekeeping Adderall.
|
# ? Feb 7, 2018 16:08 |
|
I've been on Ritalin since I was 6, it's basically a requirement for me if I want to get work done on a timely basis. But I also believe that humans just aren't cut out for the 8-hour focus lifestyle.
|
# ? Feb 7, 2018 16:20 |
|
While I have not taken Adderall or Ritalin or what have you, I have had good luck in the past using Racetams paired with choline citrate for two to three month stretches. It takes a few weeks to get up to full strength, so you need to stick with it. I'm kinda afraid of what might happen if I took Adderall. I might stare at something hard enough to actually light it on fire. There is an epidemic of Adderall abuse among university undergrads. Sometimes, for a change of scenery, I'd pack up my laptop and move from the lab to the common study area of the library to review papers and work. Students would walk from table to table, asking people if they had any extra Adderall that they could buy from them. It was common enough that it was not at all unusual, especially around midterms and finals. Lots of money was changing hands, so a prescription for Adderall with good insurance must have been like having a license to print money. Honestly, the most effective thing that I did to keep focus was to get on a stationary bike for 20 or 30 minutes every four hours or so. Get up off your butt every now and then and go stretch your legs. It works wonders, and it will help keep you from turning into a heart attack waiting to happen. Xarn posted:You won't just wake up one day and be knowledgeable, motivated, etc, you have to work on it.
|
# ? Feb 7, 2018 16:37 |
|
Reading the last few posts makes me think I am weird for not using any focus enhancing drugs while coding
|
# ? Feb 7, 2018 16:47 |
|
Wait its unusual for people in this profession to be able to just sit down for 10-15 hours and focus on work? /without/ medication? Is something wrong with me?
|
# ? Feb 7, 2018 16:49 |
|
Pollyanna posted:What do you mean by "well-staffed"? Is that based purely on size, as you said, or is it more about the skills of the people on the team, how many resources are allocated to it, etc.? The latter, taking into account planned additional hiring, their hiring rate, team productivity, expectations of delivery for the next quarter etc. How well you can figure that out in an interview setting I don't know. Maybe you can't. Pollyanna posted:Also, what are the inherent tradeoffs of working for a startup? I've worked for a couple in my life, but I still don't have a good handle on the differences. I get the basics and that a startup is less established and requires you to wear more hats, but other than that I'm a little unsure of what I should be aware of. Your job at a startup is not to crank out good poo poo. Your job at a startup is to crank out functional poo poo, fast, and borrow heavy on the technical debt credit card. Once a startup has been around 3+ years and the engineering team starts to grow, then you can think about paying some of that down through rearchitecting and refactoring.
|
# ? Feb 7, 2018 16:58 |
|
Xarn posted:Reading the last few posts makes me think I am weird for not using any focus enhancing drugs while coding Coding *is* a focus enhancing drug, maan
|
# ? Feb 7, 2018 17:00 |
|
"A Deepness in the Sky" by Vernor Vinge is a pretty good Sci-Fi book and mixes well with this discussion. (Mild spoilers): A fleet of interstellar traders go on an exploratory mission and end up in competition/collaboration with a nasty group of slavers whose slaves are kept in a permanent hyper-focused state while neuro-typical people manage them.
|
# ? Feb 7, 2018 17:23 |
|
My friend decided to fake ADD symptoms to scam a doctor into giving her a recreational prescription, so she read up on the symptoms and realized she actually had ADD. I got curious and did some research, and the impression I got was that the symptoms are vague enough that many could convince themselves they have ADD. Oh you can't read a dense accounting book in a single sitting? You must have ADD! People on the far right of the ADD spectrum are totally useless without medication. They enter a room and forget why they went there. They frequently lose important stuff like their keys. They don't clean their apartments. It can take them hours to read a letter they got in the mail, so they forget to pay bills. "Normal" people suffer from it too to a far lesser extent. Everybody has some tasks they want to put off or have trouble getting into. It seems natural and normal to easily focus on tasks you enjoy (coding your own projects, reading your favorite books), and be easily distracted or procrastinate by tasks you don't enjoy (tedious work projects, house cleaning). Oftentimes the normies can use various behavioral techniques to overcome their mild symptoms. CBT, yoga, and meditation (without the spiritual aspects) exercise the brain's "focus" engine which can make it easier for someone to recognize when they're procrastinating or losing focus, and to help get back on track. Other techniques like breaking down large mountainous tasks ("Do taxes") into granular lists ("Find your W2 and put it on your desk") can help break procrastination. Social media + the constant crazy news cycles are the opposite of focus exercises. They make your brain less likely to focus, and are constantly available as a distraction. Blocking them is the best self-care you can do. I feel like I'm a relatively mild sufferer. I got a prescription and it works wonders for me. I can read pages of documentation without wondering what's new on Twitter. It definitely felt like a magic pill when I first started it. However it has downsides that make me wonder about it's sustainability long term. I now find it frustrating to talk to people who talk slowly or ramble about an unfocused set of ideas. It messes with my eating habits (no desire for lunch, easy to dehydrate) and sleep patterns, and you need a strong and healthy heart to handle the extra stress it puts on you. I also find it's more of a "momentum" machine that allows me to easily start a task and continue it, but it's not a magical thing that fixes my thinking. I still make poor choices and pursue dumb dead-end coding ideas, it's just now I can sustain that for longer. So I think, long term, that I'll try to scale back my use of it, and try more non-medication techniques to control it.
|
# ? Feb 7, 2018 17:43 |
|
I think part of the problem is what we call ADD is a more natural state for the brain. You should be jumping around tasks "are there predators around, where am I going, are those berries, what was that sound" etc. It is something of an aberration to sit down and focus on just one thing. Things like Facebook and Twitter make things worse as they are designed to hijack our natural brain processes for their ends.
|
# ? Feb 7, 2018 17:47 |
|
Sitting at a desk for 8 hours straight thinking through logical abstractions is not a normal state for the human brain. You aren't broken if you can't do that.
|
# ? Feb 7, 2018 17:53 |
|
minato posted:I also find it's more of a "momentum" machine that allows me to easily start a task and continue it, but it's not a magical thing that fixes my thinking. That's a good way of putting it. In college, I remember popping a pill to get cranking on a huge CS project that I put off to the last minute, only to find myself spending the next 8 hours artisanally hand-crafting my MP3 collection's folder and ID3 tag structure.
|
# ? Feb 7, 2018 17:55 |
|
B-Nasty posted:That's a good way of putting it. In college, I remember popping a pill to get cranking on a huge CS project that I put off to the last minute, only to find myself spending the next 8 hours artisanally hand-crafting my MP3 collection's folder and ID3 tag structure. I bet it's still a pretty badass collection. I wish I could put in a good 8h organizing my video files...
|
# ? Feb 7, 2018 17:57 |
|
It's a shame the bottom line would be impacted so much from working less. People would probably be healthier.
|
# ? Feb 7, 2018 17:59 |
|
|
# ? Jun 8, 2024 07:07 |
|
minato posted:People on the far right of the ADD spectrum are totally useless without medication. They enter a room and forget why they went there. They frequently lose important stuff like their keys. They don't clean their apartments. It can take them hours to read a letter they got in the mail, so they forget to pay bills. I do all of these things and have never been diagnosed, or even considered myself to have ADD.
|
# ? Feb 7, 2018 18:03 |