Live data from Hacker News

Ask HN: Language-agnostic concepts a Backend Engineer should know?

news.ycombinator.com

51–60 of 60 posts

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#51
post #47
post #38

Earlier quoted context omitted.

>>frameworks and libraries all work, incapable of tracking down and fixing bugs in your application stack... What does any of this has to do with C? >What can you possibly get out of it? I hope you realise that many of commenters here are not even software engineers. HN covers more topics than just 'another arrogant software dev lectures someone on topic X'

> 'another arrogant software dev lectures someone on topic X' Not GP. But this is explicitly a software thread. > >>frameworks and libraries all work, incapable of tracking down and fixing bugs in your application stack... Pretty sure they are implying that C/C++ lies somewhere in most software stacks.

>Pretty sure they are implying that C/C++ lies somewhere in most software stacks.

So do many other things. It's nice to know every bit of tech behind the scenes but one has only this much time.

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#52
Understand the importance of having good visibility of your system. Implement good logging and collect metrics, for example the four golden signals of throughput, latency, saturation and error rate. The Google SRE book gives a good introduction to some of these concepts. See for example https://sre.google/sre-book/monitoring-distributed-systems/.

Understand how to load test your system and to reason about its behaviour under load and its failure modes when you push it too hard. It's one thing to be able to build a system and functionally test it such that you're confident that it behaves correctly when you send one request at a time. It's another thing to let thousands or millions of real users hit it for real in production and to have confidence that you are giving them all a good experience.

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#53
I would add soft skills - how to sell your ideas; how to ask for help, how to offer help with offering offense; how to write docs, emails, or proposals; how to avoid taking offense when it feels like you're being ignored or slighted (usually not the case); how to keep stakeholders updated; creating realistic timelines. I'm sure I'm missing some. You can accomplish more than your technically astute colleagues and work on more interesting projects if people trust you, like you, and feel inspired and happy to work with you.

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#54
IAM, who and what is authenticating, how and what permissions will it have.

What data is coming into your system and it’s variety, velocity and volume.

Do you really need NoSQL, probably not.

Do you really need that ORM and all the schema, migrations and ops to go with it, known the pros and cons.

Are your boundaries defined well? Networking, firewalls etc? Are or do they need to be identity aware?

Are you logging what you need to log, where you need to log it and do the right people have access to it? Maybe metrics are really what you need.

What’s the dev story like? Can I run things locally or easily without spending days recreating an environment? IAC is one thing, but debugging some Python locally vs deploying and print statements sucks. Have a good readme and leave the repo better than you found it.

Tackle the hard problems first, then create reproducible developer story, then hand it off to someone Jr. so they can do the grunt work and you can help them out in a jiff.

CI/CD, incrementally improve it over time and don’t spend time boiling the ocean here. A simple bash script to deploy may suffice for an SRE to take it to the next step as IAC or to drop it into some CI tool.

Apply the practice of least privilege from the very start.

KISS, if what you are building is too confusing, it’s because you need to spend more time writing about it vs actually writing it.

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#55
post #16

Security mindset: read the book Security Engineering (it is online), less for specific technical info than for the many war stories etc. which will help you guard against vulnerabilities and unforeseen consequences. Basics of cryptography: there are many dumb errors to avoid. Antirez's general advice about "10x programmers" is good: http://antirez.com/news/112 Thorough (not just basic) knowledge of SQL, if you don't…

This book? https://www.cl.cam.ac.uk/~rja14/book.html

Added: Oh nice, there is a third edition (2020) now. I only knew about the 1st and 2nd editions. The 2nd ed is completely online but the 3rd only has sample chapters online: OTOH, the 3rd is in all likelihood an updated/expanded version of the 2nd. So you could read the 2nd and decide about buying the 3rd.

I'd say it's a book for inspirational bedtime reading, rather than careful study or reference. But it's great in that way. Security is about mindset more than anything else, and the book puts you right into it.

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#56
Here are some of the concepts in no particular order. This is the quick list I came up based on my experience and usage.

1) RDBMS, NoSQL Concepts

2) Writing Queries and Joins

3) Connecting to Database native and ORM

4) HTTP Verbs like POST, GET, DELTE, PUT etc

5) Restful API and GraphQL Concepts

6) Session State, Application State, Caching and Safe Error Handling

7) Distributed Systems, SOA, Async Functions (i.e file handling)

8) Design Patterns, OOPs concepts (Abstraction, Interfaces etc)

9) Authentication, Authorization, Cryptography

10) Configuration, Minimum Privileges (e.g dbrole, server account etc)

Re: Ask HN: Language-agnostic concepts a Backend Engineer should know?

#59
Privacy management.. Privacy laws are severely restricting who may see people’s PII

Are you using the PII data for purposes other than it was originally collected?

Can you synthesise a good enough set of test data so you don’t have to anonymise production data? Hint: you can’t sufficiently anonymise production data and still have it be useful

Post reply on HN