Live data from Hacker News

Things I Learnt from a Senior Software Engineer

neilkakkar.com

111–120 of 301 posts

Re: Things I Learnt from a Senior Software Engineer

#111

Earlier quoted context omitted.

Isn't Cloud-Computing something that should make it unnecessary to name individual computers?

How do you make a service call or ssh into a machine without a name?

You don't. Stop thinking in machines.

Your code doesn't directly call a service, you'd use a service discovery framework (eg AWS Cloud Map) to lookup a location that can handle a particular type of request. It doesn't even matter to the caller whether the request is handled by an instance (eg EC2), a container (eg Fargate), or a function (eg Lambda).

End user requests are handled by an application loadbalancer (eg ELB) that accepts the requests and routes them to an available location, which again doesn't need to be any particular machine (and it can also spawn/destroy instances as needed) or type.

With serverless computing (eg AWS Lambda), there's not even machine for you to SSH into, the cloud takes care of executing functions "somewhere" to handle your work. Work could mean serving an HTTP request - however there doesn't even need to be a client making a call; the lambda could e.g. run in response to an event on an S3 bucket.

Of course AWS can also handle your pets; ie you can name your EC2 instances (and either manage DNS outside, or use Route 53 to let AWS handle it). But that's not what AWS is about; there are way cheaper options for vServers. And of course there are real computers below this, and DNS is being used in the middle of this (with auto-generated names that you don't care about). But you don't deal with that.

Re: Things I Learnt from a Senior Software Engineer

#112
post #4

The referenced idea of a 'human log' is great[0]. I started doing something similar 4 years ago and it eventually evolved from per-project notes into a full diary. Being able to search for 'August 24 2016' and know exactly what I did that day is quite powerful. I encourage anyone to take 10 minutes(or 30...) at the end of the day to write up what they've done. Just a text file with minimal formatting has scaled to 2.…

I kept a paper journal for work for years. I finally decided to go digital for search-ability and investigated all sorts of things like Day One, etc.

Ended up just adding a new "Work Journal" calendar to my google calendar.

Re: Things I Learnt from a Senior Software Engineer

#113
post #104

Earlier quoted context omitted.

If you designate your servers with numbers or meaningless identifiers instead of names, you also won't ever feel guilty about killing and replacing them. I believe this is (somewhat gruesomely) called the "pets vs. livestock" approach.

If you believe people can't get a little attached to "prodsys3" or whatever, then you underestimate the sentimentality of some of us. ;) Of course, the other thing you can do is name server roles rather than specific hardware, so all of your servers are immortal, Ship-of-Theseus style.

A farmer gets attached to his cattle but when the time comes for one of them to go (either old age, to sell the meat, or there's a newer faster cattle that management has enforced a mandatory deadline of Q3 to migrate to), it's understood that it's time to say goodbye.

Re: Things I Learnt from a Senior Software Engineer

#114
post #99
post #81

> in my team culture it’s not frowned upon to “snoop behind” people writing code. Whenever I sensed something interesting going on, I’d roll around and watch what was happening. Agh, I'd hate that. In fact if anything interesting had been going on on my screen it would immediately stop, no way I could work with someone watching. I struggle enough at desks with my back to a door or where people walk by, just can't sto…

I've read that in feng shui what you describe is called the "command position". I'm not able to work with my back to a crowd. That's a recipe for anxiety. I quit a company when they moved my desk so my back was to a hallway, and refused to compromise on this issue in any way.

If it happens again, I've been told that having a mirror on your desk so that you can see what's going on behind you can help a lot.

Re: Things I Learnt from a Senior Software Engineer

#115
post #81

> in my team culture it’s not frowned upon to “snoop behind” people writing code. Whenever I sensed something interesting going on, I’d roll around and watch what was happening. Agh, I'd hate that. In fact if anything interesting had been going on on my screen it would immediately stop, no way I could work with someone watching. I struggle enough at desks with my back to a door or where people walk by, just can't sto…

So how do you handle pair programming? It’s almost the same thing to me.

Re: Things I Learnt from a Senior Software Engineer

#116

> I like a bit of humour in my code, and I wanted to name it GodComponent. No. Just no. Do not ever be funny in code. No one else likes your humor, and it's distracting. (Ignoring the other reasons "GodComponent" is a bad name.)

I needed to wrap the code that handled thread management that I use in Swift. I called the component Threader, and in the comments I mention I named it after the TMNT character Shredder. Two things came from that: I have gotten a chuckle from all the developers I introduced to that code, and no one has forgotten about it. Some humor is useful.

That's nice when the team is small and everyone knows what the code does, but when new members start joining and you have all these inside jokes/references all over the code, it becomes more cumbersome than anything to explain what it is. I enjoy humor but keep it to a minimum and hopefully don't impact the actual readability.

Re: Things I Learnt from a Senior Software Engineer

#117
post #90

Earlier quoted context omitted.

I have been on both the receiving and producing end of a similar decision making process whereby all stakeholders are consulted, and then a solution is provided which has as its only real design consideration - beyond being effective - that no-one gets exactly what they requested. Is there a name for this kind of anti-consensus decision making?

Not sure if there’s a name for this, but my favourite example is settling on UTC as the acronym for Coordinated Universal Time: https://en.m.wikipedia.org/wiki/Coordinated_Universal_Time#E...

ISO stands for the International Organization for Standardization, for largely the same reasons.

Re: Things I Learnt from a Senior Software Engineer

#118
post #81

> in my team culture it’s not frowned upon to “snoop behind” people writing code. Whenever I sensed something interesting going on, I’d roll around and watch what was happening. Agh, I'd hate that. In fact if anything interesting had been going on on my screen it would immediately stop, no way I could work with someone watching. I struggle enough at desks with my back to a door or where people walk by, just can't sto…

For me, it depends on who is creeping. A junior engineer, I'd probably pull them up and start explaining what is going on. A fellow senior engineer I'd probably take a welcome break and ask them to grab a coffee - the only reason they'd be lurking lol. If it is a PM or someone else it might put me on edge - likely because they wouldn't have the context to understand what I was working on and if they didn't say anything I'd just be wondering what they wanted...

Re: Things I Learnt from a Senior Software Engineer

#119
post #9

Makes me a little ill that the author thinks Jeff Atwood coined that old-ass joke.

.. Nopes, but it was the quickest reference I could find for the joke. I don't like to put quotes in without the source.

Wrong information is worse than no information. If the source is not known or if you don't want to spend the time to find it, just say "unknown" or "as someone said"

Re: Things I Learnt from a Senior Software Engineer

#120
I like the article. I just wish the senior software engineer also included teaching humility. The article isn't written with any ego, so I commend the author, but it would be ideal for any mentor to also teach what to do when being wrong, making a mistake, costing the company money, etc.
Post reply on HN