Readit News logoReadit News
Posted by u/arturw8i 6 years ago
Ask HN: What were the things you did that made the biggest impact at your work?
It could be a tool that you have created, a process that you have started or anything else which created a big and lasting impact on your workplace.

For me, it was probably starting holding regular tech book review sessions.

Over time the discussion around both architecture and implementation details got way more structured, quicker and more satisfying to all parties. Seems obvious, but building up mental model of software development through a structured approach is better than just letting it happen naturally during work hours.

sn41 · 6 years ago
Designing more forgiving interfaces.

I work in the public sector in India. Usually forms here are phrased in threatening terms - you can submit any document only once, and there is a threat of perjury for just uploading the wrong document etc. I proposed that we can utilise cheap cloud storage so that users can submit documents as many times as they want, and as long as any of the uploaded documents are correct, then it will be accepted.

This reduced the phone calls our office received by about 80 percent.

inapis · 6 years ago
IT in Indian Govt is stuck in 90s. Can't upload documents many times, unncessarily strict restrictions (like images uploaded have to be 120x120 and within 150 kb), the threats you mentioned AND the ABSOLUTE fetish with captcha and OTPs

I hope the Indian govt sets up something similar to that design/tech agency set up by US/UK govts.

In the meantime, a lot of props to you for designing interfaces that empathize with users. That's the kind of thoughtfullness we need!

Aperocky · 6 years ago
That sounds like the (NC)DMV.. Of course, there are no risk of perjury (that I know of), but if something goes wrong you'll be invited to stay in line for another 4 hours.
billfruit · 6 years ago
Not to mention the usage to blinking and moving marquee text to convey important information.
john-radio · 6 years ago
It sounds like you also deserve credit for measuring the 80% improvement in call volume and using it to show the value of the change. That is how you make shit happen; respect.
Aperocky · 6 years ago
That's amazing, kudos to you, I imagine it's difficult to pull this change? Are there political consideration that a line of command must all answer to?
sn41 · 6 years ago
No, you just have to overcome inertia. There are legal considerations for multiple uploads - who decides which document is valid etc. But once the policy is clearly vetted and publicly stated, the courts are usually fine with it.
muzani · 6 years ago
Amazing. I've avoided work in the public sector because I thought I wouldn't accomplish anything. But this is a great example of how to be impactful in such a job.
phaemon · 6 years ago
That is superb. What you're really saying is that 80% of your customers no longer feel the need to phone you.
rahimnathwani · 6 years ago
"What you're really saying is that 80% of your customers no longer feel the need to phone you."

No, they're saying call volume went down by 80%. We know nothing about how many callers generated the calls before and after. Maybe each and every customer used to call them 5 times per month, and now each customer calls them only once per month. That would be an 80% reduction in calls, but a 0% reduction in # customers who feel the need to call.

r0rshrk · 6 years ago
Holy shit ! This is super interesting ! I'm in India and always wondered why this happens. Have you written more about it somewhere else ?
sn41 · 6 years ago
No...unfortunately the details are confidential. But I wish there was a way to exchange best practices within the government agencies so that this sort of mechanism becomes widespread.
asdko13roasi · 6 years ago
How much did it increase the workload and manual error rates of the reviewer for having to check multiple documents?
Yoric · 6 years ago
Mmmh... I rewrote big chunks of Firefox's Session Restore to ensure that people stopped losing their data in case of crashes. Pretty big impact on both Firefox and, hopefully, the life of a few hundred million users.

I rewrote the Firefox Shutdown so that it actually worked.

I also introduced structured async programming, async testing, async exception reporting in our codebase.

And yes, I do enjoy bragging :)

rayuela · 6 years ago
This has saved my ass more than I can count. You've earned your bragging rights
jlokier · 6 years ago
I lost Firefox sessions so many times last year! As I have a few thousand tabs over several windows, some being placeholders for things I regard as important, that sort of thing is really bothersome.

Every so often, after a system restart due to running out of battery on my laptop, I'd start Firefox and get the dreaded "only one window, home tab".

I was able to recover by going through backups, but it was a fiddly and manual process, and for a while last summer it happened annoyingly often. There were a couple of times I couldn't recover what I'd been working on the previous day.

Onawa · 6 years ago
Good lord, what possible workflow leads you to having that many open tabs without bookmarking them or using some other plugin that allows you better tab management? Seems like a recipe for disaster, especially since you said you end up having to dig through backups to restore state.
c0restraint · 6 years ago
> As I have a few thousand tabs over several windows

I'd sugges you need to find an alternative workflow... even one thousand tabs has far passed the point of diminished returns

drywater · 6 years ago
Why do you think they weren't working so good in the first place? I mean, why was a bad solution implemented in an open-source product?
Yoric · 6 years ago
For Session Restore, there were two problems. One of them was that it had gained lots of features and the architecture wasn't adapted anymore. That's the kind of things that happens with all long-lived projects.

The other one is that getting file safety correctly is really hard. The OS likes to the developer, the filesystem lies to the OS and the hardware lies to everyone. For most applications, that's not a big deal, but for something that used to run every 15 seconds on hundreds of millions of computers, this can cause data loss. That's why you really want to use a DBMS rather than roll your own format if data safety is critical.

For shutdown, it was also a case of initial architecture not matching the current situation anymore. Firefox was initially a synchronous, single-threaded, single-process architecture, but this had stopped being the case for a few years already. At some point, shutdown needed to be re-architectured, I happened to be the one who managed to convince people that the time was now :)

nbaksalyar · 6 years ago
That's a feature I sorely missed after the demise of the original (pre-Blink) Opera Browser, and one of the reasons I strongly prefer Firefox over Chrome. Thank you so much for this!
tomaskafka · 6 years ago
This! I love the companies that care.

For example, when a Garmin watch runs out of battery during workout (or if a software crashes), the workout always gets saved, and you can resume it when you turn the watch back on.

bberrry · 6 years ago
As a firefoxer and tab-hoarder, with more than 200+ open as I write this, thank you!
kingludite · 6 years ago
Oh, thanks!
codesuki · 6 years ago
Thank you!
thomk · 6 years ago
Calling on quiet (but attentive) members of my team to speak up in meetings where we need to make a decision.

There will be a pause in the conversation and (as if its my meeting) I'll say something like generic "Jim what do you think?" No matter what he says I acknowledge it and thank him.

A few things happen. 1. It removes the internal conflict Jim was having if he should speak up or not. 2. It gives him 'the floor' so he knows for a minute he will be heard. Others are probably wondering why I called on him and want to hear what he has to say. 3. His answer might not be directly related, however it often sets off a chain of conversation that often does lead to creative answers.

People actually do like to contribute. The way I look at it is we're not leaving this room until I feel like we have at least heard every idea good or bad. Those set of ideas are our collective intelligence at that moment and I fully intend on leveraging it.

lastpost93 · 6 years ago
Coincidentally, there’s an interview with Tim Cook where he mentions this exact concept when asked about leadership.

https://youtu.be/9jhPm_2WYH8

24:00

reinkaos · 6 years ago
Thanks for that. I'm one of the "Jims" of the world and one of my superiors started doing that to me recently.

As an introvert in a team of very talkative and opinionated people it is often hard to speak up. Having other people creating space for me to speak has been very helpful.

volkk · 6 years ago
how can you tell they're attentive?
muzani · 6 years ago
You can tell by body language normally. There's a kind of look when someone is off thinking about other things, and there's another kind of look when they're listening to every word.
thomk · 6 years ago
It's obvious they are listening to what is going on. They aren't looking at screens or doodling. My rule is if in you are in my meeting: you should be there and are a valuable member of a team, so let's see what you think.
javajosh · 6 years ago
Three things: voting down a move to microservices, identifying a fundamental flaw in a core data-structure that is the high-level impetus for future refactorings, and encouraging people to be discontent with multi-minute long build-test-debug (BTD) loop.

Unfortunately, I find very long BTD loops to be personally offensive though, to the point it makes me emotional, which harms my ability to make my case. Despite knowing this, it's almost impossible to stop it from coloring my arguments. I fear that I have such a large amount of contempt for those who don't share my view on this that it leaks out whatever I do. I even know, intellectually, that this is wrong - ignorance does not deserve contempt, but compassion, after all. But my traitor heart doesn't want to listen. :(

np_tedious · 6 years ago
> it makes me emotional, which harms my ability to make my case.

I don't know how true / substantial this effect is, obviously. Nonetheless, seems like good self awareness shown in this comment. That's more than a lot of people can say

javajosh · 6 years ago
Thanks, but undeserved. Self-awareness may be good eventually, but sometimes it just makes you feel like a helpless observer to your own actions. I think you need more than just awareness - you need to practice feeling the feelings and not acting on them in the usual way. That's the part that will yield results, I hope.

Alternatively, I'd like to work for an organization that's on the same page here. Effectiveness in software (or anything that depends on iterating on a design) relies more on a fast loop than anything; I'm tired of fighting this battle.

vsareto · 6 years ago
>I fear that I have such a large amount of contempt for those who don't share my view on this that it leaks out whatever I do. I even know, intellectually, that this is wrong - ignorance does not deserve contempt, but compassion, after all.

It can be annoying, but at the same time, it forces them to take a break to think about things they're currently working on. When you have nothing to think about and your current work is simple and you're waiting minutes, you tend to get bored and frustrated though.

And also remember that some people would simply rather get paid to do nothing, and a long BTD cycle helps that.

tayo42 · 6 years ago
Idk if it forces someone to take a break. If I get forced into a long compile. Maybe even 30 seconds I might pull out my phone and 5 minutes later.. Oh its done..
_TwoFinger · 6 years ago
> I find very long BTD loops to be personally offensive though

Encountering these in my very first programming job made me learn make(1).

The thing is, I'm not very bright and my work "style" involves a fair share of trial and error. Obviously, all this waiting prevented me from doing my thing, so I eventually rewrote the whole build system just so I can do more trial-and-error.

I've always considered my dependency on a fast BTD loop a weakness, though. I guess the majority of developers can just imagine what the code does in their head and only make the changes when they know what they're doing.

celticmusic · 6 years ago
it's not a weakness, it's productive. Anyone writing a lot of code without testing it is doing things in a subpar manner. This isn't about intelligence.
Cyph0n · 6 years ago
> multi-minute long build-test-debug loop

You should try writing software for SP routers :)

nojvek · 6 years ago
I feel you. First thing I do is setup some form of hot reloading. In my last workplace we want from half a minute to <5 seconds of dev loop iteration. It’s a night/day difference.
insomniacity · 6 years ago
I'd be interested to hear more voting down microservices. The title didn't actually specify, but I assume you felt it had a positive impact? :)

When was this, and how does it look now?

javajosh · 6 years ago
Yes, I felt it had a positive impact. The system was already over-engineered for its purpose, something virtually every senior would admit if pressed. uServices would only add to that administrative overhead at design time, and massive operational complexity at runtime.

Having come off of a project that supported 400k registered and 100k active users on a single server, this project isn't yet at that scale and they were anticipating massive scale issues. This mistake was a real bonanza for an engineering team wanting to learn the latest tech; a massive failure for the product that really needs fast UX iterations to succeed.

If you want to talk more about it, you can email me.

maest · 6 years ago
What are your main objections to BTD loops? Also, which alternatives do you suggest?
javajosh · 6 years ago
Software development is the BTD loop; you can't eliminate it. I got my start with Logo[1], which has an amazing BTD loop! People like Bret Victor[2] have talked at length about it (although Victor doesn't use that term, IIRC). Even the trend toward "notebook programming" - Jupyter, Observable, etc are really about shortening that loop. A major reason to use an IDE is to potentially shorten the BTD loop. Lots and lots of tools exist specifically to shorten this loop.

And yet some organizations want to run all the linters, all the tests, for all the languages, orchestrated by Jenkins on a huge Amazon cluster. This is bad.

[1] This is very cool - an Apple IIe emulator running Logo in the browser. https://www.scullinsteel.com/apple2/#logo

[2] Inventing on Principle has improving the BTD loop at its core https://vimeo.com/36579366

steev · 6 years ago
My main objection is it dramatically decreases your productivity. If building and testing takes 5-10mins (which is the case in our codebase) trying to fix a bug can take forever when you aren't exactly sure what the cause is. You don't want to try multiple fixes simultaneously because if something doesn't work you aren't sure which of the fixes (if any) might be causing the issue.

Maybe a different way to look at it is: if you could shorten the BTD loop to a minute or two, why _wouldn't_ you want that?

MereInterest · 6 years ago
Not OP, but I share the same dislike. Note that he said that he is against long BTD loops, not BTD loops in general. If it takes more than 5 minutes to get more information about a problem, my mind will wander. I'll check email, read up on conference proceedings, etc. If it takes 15 seconds to get more information, then I can keep focus on the current problem, add the new information, and iterate appropriately.
celticmusic · 6 years ago
> and encouraging people to be discontent with multi-minute long build-test-debug (BTD) loop.

The ole eyebrow started twitching when I read this. I once had a 6 month contract with a RoR shop where they had such bad performance issues they started developing in production mode so it wouldn't reload everything constantly. This allowed you to make some changes quickly, but 90% of everything required you to restart the web server and it literally took minutes for it to load everything. They had close to 200 rubygems, and I've always guessed that was the core of the issue.

When I suggested we need to fix that issue, the senior did-an-internship-here-last-summer developer got extremely passive aggressive with me (I didn't renew that contract). This guy thought he was amazing, I remember him arguing with me about a bug where they were storing decimal numbers as float in MySQL. I seriously had a 30 minute long conversation where he told me repeatedly I was wrong until I finally got exasperated, made the changes, and it fixed the bug. The guy was couldn't believe it fixed the issue and spent another couple of hours looking for why I was wrong.

I've never touched RoR again, that experience was horrific.

Sometimes you can't help the slowness, but I know I seriously dislike header-only libraries in C++ specifically because of their effect on the BTD loop. I have no idea how people can tolerate working like that, it's a slow hell for me.

awinder · 6 years ago
I worked for a company that had gone from selling on premise software to cloud, and going from build to production release took a while. Realistically you could expect 1-2 days if everything went well. This was definitely not problem #1 at the company but I really wanted to push to see how much time we could shave off. I got some like-minded teammates to put time into a new release pipeline process, and we built some nice integrations where you could control the release process & see results from inside of slack.

So there were 2 kinds of big categories of things that happened. One was that we really slashed the amount of time from first master branch build to deployment. If things went well we could release to production in under an hour. This radically changed everything about our process. We started building smaller stuff because we could try things out in production very quickly. Code review times dropped a lot because we had smaller units of code. Planning meetings went faster because we were talking about smaller things so discussions didn’t go sideways. The team seemed to really like it.

Second class of thing that happened was that people from other teams would drop by our slack channel and see us rolling out code by talking/clicking to a bot, and they’d want to know more. And then we’d show the speed improvements and how it integrated into the rest of the prod architecture so that you could make the migration to using it too. So it kinda organically became the defacto release architecture at the company over time.

I’m a little bummed out now because it was super fun to see this all go down, it was almost accidentally the most far-reaching change I’ve instigated at work and the impact was great.

jwcrux · 6 years ago
You’d love _The Unicorn Project_ if you haven’t read it. I highly recommend it, and it’s a story around roughly the same journey.

https://www.amazon.com/Unicorn-Project-Developers-Disruption...

kqr · 6 years ago
And/or anything related to the state of devops report. Nicole Forsgren et al. are doing amazing work in observational science around this.

The gist of it is that reducing your time-to-production is one of the best investments you can make. It changes everything about how you build things.

baroomba · 6 years ago
I think the harm done by long, painful, dangerous releases and complex onboarding or different experiences and expectations for how to effectively test and get a good dev feedback loop going in various components of a system (usually these things occur together, because the same things that cause the latter also cause the painful, slow, dangerous releases) is badly under-accounted for. It murders agility yet companies wander their way into it in the name of agility then don't ever fix it because the fix is slow and dangerous since everything is slow and dangerous.

[EDIT] to be clear, quick painful dangerous releases are no better, and (pretty much necessarily) come with the same pain in onboarding, jumping between repos/projects, undocumented "oh sometimes you have to re-install that to get it going" works-on-my-machine bullshit, getting a good feedback loop going, et c.

atmosx · 6 years ago
Where you able to see error logs from slack or you used a link? Granted that usually traces are multiline, I expect them to be hard to read on slack but the again nothing beats lack of context switch.
awinder · 6 years ago
We linked out to the logs, I kinda wanted to figure something else out for slack to embed them but it ended up not working out. But you’re right it’s kinda appealing

Dead Comment

dharmab · 6 years ago
Writing accessible documentation.

Most people either write no docs or they write a doc that assumes the reader already knows what the thing is.

I write docs that assume you're a new employee and explain the thing in simple, plain English before building up the technical details.

Notably, these kind of docs make it easy to handoff maintenance and further development to someone else so you can move on to new projects.

vidanay · 6 years ago
For user facing documentation, always ask Karen in accounting to read through it and provide her opinion.
Ididntdothis · 6 years ago
I have found that just a few informal lines are often very good. What does the code do? How to build? Quick architecture overview. How do components work together? Good devs can usually quickly pick up from there.
krishna0512 · 6 years ago
Thanks a lot for your hard work!! It's because of people like you that I have a very good life.
chrischattin · 6 years ago
I really appreciate people like you.
DerekQ · 6 years ago
How are you storing and sharing these docs? Is it a common Sharepoint library or something similar? I've found the biggest problem is often getting people to look at the document resource / archive when they have a problem whose solution might already be documented.
rorykoehler · 6 years ago
I wish I knew more people who think like you.
BossingAround · 6 years ago
Though this is probably not what you're asking for...

Realizing that my career is my own, and that I owe nothing to anybody. Nobody is doing _you_ a favor by hiring you. At most, it's a calculated risk.

Furthermore, realizing that I shouldn't suffer for management decisions. If you've been putting out fires for a whole year, either the whole team has been consistently doing a very poor job (unlikely, though possible), or the fault is out of your reach (quite likely IMO). In either case, it's totally acceptable to jump the ship to another team.

mmcconnell1618 · 6 years ago
I was laid off early in my career despite being one of the top performers and getting rewards and kudos along the way. It opened my eyes to the fact that no job is a "safe" job and you should think of a salaried position as an open-ended contract that happens to pay out every two weeks.

A company only keeps you around if they can justify getting more value from you than what they are paying to keep you around. Add more value and document that value you're creating for job security.

kingludite · 6 years ago
I changed a boring linear telemarketing script into a flow chart (with lots of clever jokes in it) that instructed the marketeer to thank people and terminate the conversation slightly prematurely. (in stead of trying to force people though the linear script) The mood in the call center changed from wanting to die to perpetual laughter. It seemed to increase productivity slightly but people called back years later when they needed insurance.