Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
csammis
Aug 26, 2003

Mental Institution

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:

  • Review the C memory model, such as it is
  • Know and be able to speak about the different kinds of bus protocols that are relevant for these devices: SPI, I2C, UART for communications between low level components (micros and peripherals). USB, RS232, RS485 for communications between higher classes of devices (computers and scanners, computers and cameras, and so on)
  • Brush up on the bit-twiddling fundamentals: masking, shifting, flipping, testing. I've never encountered the "count how many bits are set in this word in O(set-bits) instead of O(word-bitwidth) :smug: " in real life but it's a popular interview question.

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 :v: Does GPS enter into it? How about video streaming?

Let us know how it goes!

Adbot
ADBOT LOVES YOU

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
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

JawnV6
Jul 4, 2004

So hot ...

csammis posted:

  • Know and be able to speak about the different kinds of bus protocols that are relevant for these devices: SPI, I2C, UART for communications between low level components (micros and peripherals). USB, RS232, RS485 for communications between higher classes of devices (computers and scanners, computers and cameras, and so on)
  • Brush up on the bit-twiddling fundamentals: masking, shifting, flipping, testing. I've never encountered the "count how many bits are set in this word in O(set-bits) instead of O(word-bitwidth) :smug: " in real life but it's a popular interview question.
What's the biggest layout differences between I2C/SPI, which one is faster, why do we use the lovely one anyway.

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.

hendersa
Sep 17, 2006

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! :v:

Pollyanna
Mar 5, 2005

Milk's on them.


I wish I put effort into things like you do, hendersa.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe

Pollyanna posted:

I wish I put effort into things like you do, hendersa.

Be the change you want to see in the world.

Portland Sucks
Dec 21, 2004
༼ つ ◕_◕ ༽つ

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):

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! :v:

:barf:

Xarn
Jun 26, 2015

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.

Doctor w-rw-rw-
Jun 24, 2008
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.

Jaded Burnout
Jul 10, 2004


I'm not sure any sample of career programmers would represent the mentally normal :unsmith:

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS
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?

Pollyanna
Mar 5, 2005

Milk's on them.


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?

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



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.

When I was job-hunting ~4 years ago, it seemed like all my offers were fairly comparable. I might get $140k or $120k but I'd be able to push that up to about the same number. Now it seems like my offer range is $130k - 200k and I'm less confident with the conversation "you think I'm worth 130, but let me suggest that you're off by 1.5x." Is this a sign that I'm not being picky enough in where I apply, or that I should be giving a salary figure to them instead of waiting for them to low-ball me?

Second, I've been interested in moving into a management role. As far as salary goes, what should I expect there? Something equivalent to what I'd make as an IC? Or more? (Or less?)

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 ;)

Jaded Burnout
Jul 10, 2004


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:

- 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?

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].

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.

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.

Pollyanna
Mar 5, 2005

Milk's on them.


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.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
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.

Pollyanna
Mar 5, 2005

Milk's on them.


...that makes sense. I guess I was looking from it purely from a time-spent point of view.

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


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.

baquerd
Jul 2, 2007

by FactsAreUseless

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.

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.

That's the effect Adderall has on almost everyone.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
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.

The Fool
Oct 16, 2003


Is your therapist Joe Rogan?

Pollyanna
Mar 5, 2005

Milk's on them.


I have ADD and executive dysfunction, so I'm literally useless without Adderall XR and similar medicines.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.

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.

B-Nasty
May 25, 2005

Doctor w-rw-rw- posted:

Adderall
[...]
Anyone know how prevalent its use is in industry?

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

ultrafilter
Aug 23, 2007

It's okay if you have any questions.


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.

The human brain wasnt built for accounting or software engineering. A few lucky people can do these things ten hours a day, every day, with a smile. The rest of us start fidgeting and checking our cell phone somewhere around the thirty minute mark. I work near the financial district of a big city, so every day a new Senior Regional Manipulator Of Tiny Numbers comes in and tells me that his brain must be broken because he cant sit still and manipulate tiny numbers as much as he wants. How come this is so hard for him, when all of his colleagues can work so diligently?

(its because his colleagues are all on Adderall already but telling him that will just make things worse)

Pollyanna
Mar 5, 2005

Milk's on them.


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.

hendersa
Sep 17, 2006

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.
True that. Learn a little each day. After a long time, you know a lot. You can carve out 20 minutes a day to check out something new, or to learn a little more about something that you're already looking into. If something piques your interest, carve out a bigger chunk of time and treat yourself to some personal interest study time.

Xarn
Jun 26, 2015
Reading the last few posts makes me think I am weird for not using any focus enhancing drugs while coding :v:

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.
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? :ohdear:

Jaded Burnout
Jul 10, 2004


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.

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.

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.

Jaded Burnout
Jul 10, 2004


Xarn posted:

Reading the last few posts makes me think I am weird for not using any focus enhancing drugs while coding :v:

Coding *is* a focus enhancing drug, maan :2bong:

Mniot
May 22, 2003
Not the one you know
"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.

minato
Jun 7, 2004

cutty cain't hang, say 7-up.
Taco Defender
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.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me
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.

Portland Sucks
Dec 21, 2004
༼ つ ◕_◕ ༽つ
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.

B-Nasty
May 25, 2005

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.

Skandranon
Sep 6, 2008
fucking stupid, dont listen to me

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...

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
It's a shame the bottom line would be impacted so much from working less. People would probably be healthier.

Adbot
ADBOT LOVES YOU

The Fool
Oct 16, 2003


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.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply