Live data from Hacker News

Developers spend most of their time figuring the system out

lepiter.io

221–230 of 418 posts

Re: Developers spend most of their time figuring the system out

#221
post #19

People always struggle or avoid doing pair programming, and people always think it means that the developers' time now costs twice as much, but this is a total lie. When I worked at a place that did 100% pair programming with rotation every day, a new developer could hit the ground flying . Sitting next to someone who knows the system and can answer your question immediately means you get up to speed millions of time…

Having been on both the knowledgeable and noob side of this "pair programming onboarding", I find it to be fantastic. When furiously googling / grepping around the code to self-onboard, it is so difficult to see the bigger picture of how the system works; if someone can explain the architecture to you, you become much more self sufficient, very quickly too.

On the "mentor" side of such pair programming, it is extremely useful to have to verbalize things that you may have gotten away with only fuzzy knowledge of previously. When the new hire asks a question that makes you say "oh wow that actually is quite broken!", you win as well!

Re: Developers spend most of their time figuring the system out

#222
post #5

Haha, so true! I've found that for most systems, there are three great ways to "figure it out". * Start from input. (Browser, API, whatever starts a process.) Map from there. * Start from data storage. (Database, flat files, whatever.) How does state get persisted? * How does the system move into production? If you can make a small change (even adding an innocuous comment) and see it all the way from your machine to…

> * Start from data storage. (Database, flat files, whatever.) How does state get persisted?

Reminds me of Fred Brooks' famous "Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious." quote

Re: Developers spend most of their time figuring the system out

#223
post #7

I get the impression that there are many professional developers who have never actually seen good documentation at any point in their lives. So many organizations think that having all of the functions listed in on a Javadoc page is somehow the same thing as documentation. And they wonder why it takes a new developer months to become productive..

Indeed!

Remember reading this https://raspi.tv/2015/documentation-and-commenting-your-code> article on importance of comments

Re: Developers spend most of their time figuring the system out

#224
post #19

People always struggle or avoid doing pair programming, and people always think it means that the developers' time now costs twice as much, but this is a total lie. When I worked at a place that did 100% pair programming with rotation every day, a new developer could hit the ground flying . Sitting next to someone who knows the system and can answer your question immediately means you get up to speed millions of time…

We do pair programming. The issue is that all of the developers that knew our system left a long time ago.

NOTE: this next part applies to the US.

Why? Developer salaries went vertical when COVID hit. All those Silicon Valley jobs became remote with big fat salaries and companies took months to respond, and many did not respond at all. The job I started last year I would have left if it weren't for the fact that I work well under 40 hours for a 6-figure salary.

If you are getting paid less than 100k/year with at least 3 years of experience, find a new job. Don't treat your job like it is your life. It isn't. They would fire you if they knew they could have someone do your work for half the cost, so don't let them "use you against you".

Re: Developers spend most of their time figuring the system out

#225
post #144

Earlier quoted context omitted.

You don’t really have to fit things into logical registers before you can speak of them. If you stop trying to do that you will find that you can speak your mind directly, which requires a lot less effort. The recipient of your message is also a human mind and while you will lose the handrails of logical clarity you will gain the safety net in abundance of bandwidth and feedback loops. It’s a trained skill tho.

I guarantee you, my mind does not work like yours and I need to translate. If you want me to explain code as I see it, I'll start in the middle of a function, where you have no context what it happening and jump to another line of code that is two functions removed. Repeat. You will have absolutely no idea what's going on as I flip through tab after tab of code. My brain does not like doing things in order. I have to…

It sounds like working on understanding your thought processes would be useful practice for people who want to learn to think and understand flexibly.

You seem to be explaining things from the point of view that your different way of thinking is a problem for others rather than an opportunity for them to grow and learn. That's kind of odd...

Personally I think it would be very interesting to work through code in that way, and I don't think it would particularly detract from my understanding.

Re: Developers spend most of their time figuring the system out

#226
post #19

People always struggle or avoid doing pair programming, and people always think it means that the developers' time now costs twice as much, but this is a total lie. When I worked at a place that did 100% pair programming with rotation every day, a new developer could hit the ground flying . Sitting next to someone who knows the system and can answer your question immediately means you get up to speed millions of time…

If you worked at a place that did 100% pair programming, anyone who couldn’t succeed at pair programming would be filtered out. Personally, whether or not I can do pair programming has a lot to do who I’m working with, what I’m doing, and what kind of day I’m having. The same thing goes for test-driven development. I have ADHD and short-term memory issues. This causes me to work by feel on some tasks because I don’t…

I can relate to this so much. Thank you for putting it into words.

Re: Developers spend most of their time figuring the system out

#228

Earlier quoted context omitted.

And then you have the common argument that comments are bad practice. If I can read 2 lines of comments for every 20 lines of code while navigating a large codebase until I find the code I really need to dive into, the productivity gains from that are nothing to scoff at.

Yeah, I don't even know what "self-documenting code" actually means. You don't write README.md, ARCHITECTURE.md, JavaDocs, etc, at all? A new developer is supposed to go through all the codebases and figure out for himself?

>You don't write README.md, ARCHITECTURE.md, JavaDocs, etc, at all?

Maybe? Not sure - haven't worked on enough big projects to declare answer

>A new developer is supposed to go through all the codebases and figure out for himself?

Yes to this bit - code should have very clear structure to it with appropriate comments attached, whether that's literate style as JonesForthhttps://github.com/phf/forth/blob/master/x86/jonesforth.S> shows, small section header comment or whatever.

It should be very clear what section exploring does - tiny example but cathttp://9p.io/sources/plan9/sys/src/cmd/cat.c> from plan 9 very simple segmented code - deals with file opening in main loop and cat function just reads and prints text

Re: Developers spend most of their time figuring the system out

#229
post #4

Relevant to this article is Peter Naur's paper on Programming as Theory building: https://pages.cs.wisc.edu/~remzi/Naur.pdf He argues that the biggest determinant on whether maintainers on a system they did not build will succeed is whether they will have access to the original developers: "The conclusion seems inescapable that at least with certain kinds of large programs, the continued adaptation, modification, and…

That paper is amazing. Completely changed my view on programming. For those who find it a bit inaccessible (as I did on my first read), I wrote an article about it a while back, explaining it further and giving real-life examples: https://hiringengineersbook.com/post/autonomy/

Well that was a great read; thanks for sharing!

Re: Developers spend most of their time figuring the system out

#230
post #211

Earlier quoted context omitted.

Thanks for posting this. Yesterday I came across a job position on a company that does 100% mob(!) programming everyday¹. This means every programmer works 6 hours per day on a zoom call with 2 other programmers, rotating roles between typist, navigator and support every ten minutes. I couldn't help but feel my soul being slowly crushed as I read further on their description of the daily activities. Needless to say,…

tangential question: I'm 37 and think I have ADHD. My partner thinks I do, and when I read posts like this I deeply identify with them. What should I do? Get a diagnosis? My ignorance thinks the only course after that is drugs which doesn't sound that appealing..

I highly recommend talking to a psychiatrist or psychologist that can see if you fit the criteria. However, if you’re willing to do your own research, you may be able to find a family doctor willing to let you try a few mediations before referring you to a specialist. (I did.)

ADHD medication is excellent from a patient’s perspective. The first-line ones are almost immediately effective. If you don’t like what they do, you can just stop taking them and try another one. In less than a year, you can try most of the known-working medications.

Even if nothing comes of it, at least you know. Knowing is half the battle. :)

Post reply on HN