Live data from Hacker News

Ask HN: How to learn best practices when you have no one to teach you?

news.ycombinator.com

91–100 of 209 posts

Re: Ask HN: How to learn best practices when you have no one to teach you?

#91
post #30

Personally I actually think you will gain a better understanding because you have nobody to teach you. If you work with people who are already experts, they will always prevent you from making mistakes. Being able to actually make those mistakes gives you a much better understanding of why people do things though.

I wouldn't say that... I'll often put in "for next time, look at..." type advice in Pull Requests from more junior coworkers. Sometimes working is more important than ideal.

It's when a Junior-Mid dev has to add a feature that's made difficult by their own choices and then rethink to make things better they tend to learn. That said, plenty of Jr-Mid devs don't advance with more practice, they stay jr-mid.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#92

1. Make lots of mistakes. 2. Experience pain in the form of late, buggy software and angry clients. 3. Read books and work on side projects. (Martin Fowler’s were my favorite). 4. Repeat for 5-10 years with hopefully ever-decreasing amounts of 1 and 2. You probably think I'm kidding...

It's curious that for my first software enterprise I'm already doing those things. It's a lot of A. just starting, B. pushing through pain, C. keep pushing.

Strangely, there have been very few customers who have been unhappy. Many have even written long glowing reviews that have had a great positive impact in profits.

Those who give negative feedback seem to always have a problem or a pain. Being kind of a bloodhound to discover what that pain is and where did it come from seems very valuable.

Two most difficult things for me seem to be: A. drawing borders and limits on my time and what to do and when to say no, B. pricing

They say just surviving long enough mean you win, but turning a business to make profit seems really a herculean task, even as a solo dev.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#93
Usually if you are the smartest person in the room it's time to move on to a new job, otherwise you are only hurting yourself especially when you are still in the early stages of your career where you'd want to learn fast.

Otherwise I'd suggest to look at projects that the "community" deems well written.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#94

1. Make lots of mistakes. 2. Experience pain in the form of late, buggy software and angry clients. 3. Read books and work on side projects. (Martin Fowler’s were my favorite). 4. Repeat for 5-10 years with hopefully ever-decreasing amounts of 1 and 2. You probably think I'm kidding...

That really doesn’t help. How do you know that what you are doing is a “mistake” if it works? 10K line UserManager classes “work”. That’s how you get the “expert beginner”. https://daedtech.com/how-developers-stop-learning-rise-of-th... The only feedback you get as a sole developer are your compiler and errors in production. You would never know that it isn’t a good idea to write your own AcmeDatabaseManager or AcmeL…

If you have a 10k line UserManager class and you are happy with that, than that is fine.

If the 10k line UserManager class has you pulling your hair out, you know you have a problem.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#95

Blog posts other developers make detailing the way they've built a particular project have helped me gain some perspective when looking to understand how people are working in a particular stack. Learning from other projects is good for understanding how people are using contemporary tools. Github is also a great source for this, you can search with those tags to find relevant projects. As for software engineering in…

Blog posts other developers make detailing the way they've built a particular project The hard part is finding the right blog. There are a ton of blogs out there from developers with little experience who are convinced that their way of doing things is the best/only/right way. The blogs are often nothing more than SEO for their resumes. For that reason, I'd lean heavier on books. At least with books there is some fil…

Yes, good point. Usually you can filter blogs by reading the comments and seeing the reception it got as well as the popularity. If it is an open source project, you can see the stars on GH and read through the issues on the repo to further filter. Books get outdated very quickly for modern tech stacks. I would recommend them for the fundamentals, but not contemporary stuff. You obviously have to do your due diligence here. Researching the author is also important obviously if you are going to truly heed their advice.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#96
Since you are using node, a good first step is to setup ESLint. It will help you stick to a standard and probably teach you new things. That's how I learned about const, let and arrow functions (I think I was using airbnb standards at that time). Otherwise, it will improve the overall consistency of your code.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#97
I believe generally we are expected for some altered arrival to altercate that there are consumers and that after that there are protocols. Beyond that it seems like the arguments fall short of the science, my department, and that makes it less interesting than if you were develop your own "mindset" and make it out of the situation alive where the cat was once left dead. All scientists know what I just said. That we all don't know what I just said means that I cannot have anyone to teach me unless I give in to God or allow some man with a pinkish hand, think oink, to produce my offspring for me.

Tell me, I'm lying sir and we will have a chat.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#98

Earlier quoted context omitted.

That really doesn’t help. How do you know that what you are doing is a “mistake” if it works? 10K line UserManager classes “work”. That’s how you get the “expert beginner”. https://daedtech.com/how-developers-stop-learning-rise-of-th... The only feedback you get as a sole developer are your compiler and errors in production. You would never know that it isn’t a good idea to write your own AcmeDatabaseManager or AcmeL…

How do you know that what you are doing is a “mistake” if it works? Reading. Plenty of books, blog posts, and forum posts point out that you shouldn't have "10 KLOC UserManager classes". The thing is, one has to figure out how to integrate "book learning" AND real world experience, so that they're constantly synthesizing a newer, better understanding.

Funny thing is, if you look at codebases of some opensource projects [1] doing complex and ambitious stuff, written by some real experienced engineers, you’ll see the common „dogmas” (don’t have long classes, don’t have long methods etc. etc.) are not obeyed. And yet, they shipped very complex and successful software. It’s almost as if these rules are mostly arbitrary and don’t really matter.

[1] I’ve noticed that in codebases of Apache Spark, Apache Oozie, Apache Cassandra, and Firefox.

Re: Ask HN: How to learn best practices when you have no one to teach you?

#100

Earlier quoted context omitted.

That really doesn’t help. How do you know that what you are doing is a “mistake” if it works? 10K line UserManager classes “work”. That’s how you get the “expert beginner”. https://daedtech.com/how-developers-stop-learning-rise-of-th... The only feedback you get as a sole developer are your compiler and errors in production. You would never know that it isn’t a good idea to write your own AcmeDatabaseManager or AcmeL…

I'd argue it's not a mistake if there are no visible consequences. If you get a production bug that takes a week to fix because the code is a mess you feel it. If adding simple new features is a pain, you feel it. Now, of course, you might want to skip that, by learning from others, but OP is suggesting that you make your own mistakes.

It is a "mistake" as soon as the work gets to be too much for one developer and the company brings in some more developers.

By this time, that one inexperienced developer gets promoted to "Architect" because he knows where all of the bodies are buried. Now one of two things happens. He brings in more inexperienced developers because he doesn't know what a good developer is and they keep adding on to the UserManager class and to organize it better, they add section breaks. The class grows.

If they are lucky, they get an experienced developer who tries to tell the "Architect" about proper coding techniques, management and the architect dismisses the critique as "if it ain't broke don't fix it"/"this is the way we've always done it". All of the good developers leave and you are left with only bad developers.

Then you end up with the "Dead Sea Effect"....

http://brucefwebster.com/2008/04/11/the-wetware-crisis-the-d...

Post reply on HN