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...
Ask HN: How to learn best practices when you have no one to teach you?
111–120 of 209 posts
Re: Ask HN: How to learn best practices when you have no one to teach you?
#112I don't know why, but in my experience software practitioners are apt to be incurious and beginner-hostile. They tend to expect questions to be absurdly well-formed-- almost to the point of answering themselves. I believe this is part of the reason why stackoverflow seems like it is overrun by assholes.
The fact is, the best way to learn anything is by having a good teacher or mentor. A truly good teacher won't merely answer questions. A good teacher ASKS QUESTIONS and provokes the student into discovery. Good teachers are rare, but they aren't necessarily subject-matter experts, they just need to be a few steps further than the student along the path.
Even if you don't have someone that you can call a mentor, you can get on a rewarding path to learning new stuff by forming a workshop to learn a subject with colleagues. Exploring new subjects and solving new problems together with another person is an amazing and energizing way to learn things. It almost doesn't matter what skills you have relative to others, if you're far ahead in some topic, you will get better in it by teaching it to someone. If you're far behind, you can depend on the other to give you some clues for proceeding. If the chemistry is good and the environment allows it (not a sweatshop) this will work just fine.
Re: Ask HN: How to learn best practices when you have no one to teach you?
#1131. 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...
Re: Ask HN: How to learn best practices when you have no one to teach you?
#114Re: Ask HN: How to learn best practices when you have no one to teach you?
#115Re: Ask HN: How to learn best practices when you have no one to teach you?
#116Reach outside your company. Genuine appeals for focused help are rarely dismissed. You don't need to know almost everything (and derive what you don't from first principles), that is unreasonable. You do need to have a network of folks you can ask help or feedback from. Being on a small team without much support will force either very fast growth or failure, and your ability to be intellectually honest (is this true…
Re: Ask HN: How to learn best practices when you have no one to teach you?
#117Now, here are what I think is the most important: experience, planning and critical thinking. Experience you gain overtime, there is no shortcut. But you can plan from the beginning, and think hard before you commit.
You're already asking yourself the questions. The internet is vast, there are lots of answers. And guess what, someone's best practices are someone's else bad practices. It's about your company trade-offs.
Since you are in a startup, you'll probably need to do lots of modifications on your business logic. That means for you, API development best practices includes planning for the future, so probably having versionned API. Is your business logic mostly about CRUD? Read up about REST. Or mostly about RPC? Might want to read up about SOAP.
You also need to know what's the time expectency of your code. Is it just a POC? Go ahead with the fastest, dirtiest way to do it. Is it a MVP that is going to change quite a bit? A bit cleaner, but you can get away with a few shortcuts. Or are you building a well-defined product that isn't going to change much? Document, test, and do it as clean as you can. You are still going to need to refactor a bit every year or two anyway, when you get more experience.
Keep at it long enough, while thinking about better ways to do things every day, and eventually you'll learn all you wanted to know. Don't worry, you'll still have a ton to learn, given the opportunity.
Re: Ask HN: How to learn best practices when you have no one to teach you?
#1181) learn (read guides, books, code)
eg: find something close to what you're doing at one of the books at: http://aosabook.org/en/index.html
Read about nginx if you're working with web servers - even if your server is in node. Read about postgresql or mysql if you work with data. Etc.
2) implement
Try things out. Do a module in ttd (red/green/refactor). Pack a sub system up as a node module, distribute it on npm.
3) automate
If you have any tests - set up CI. See that all your commits "pass" (ok, because you only have that one test - but now it's easy to add more).
Once CI is working, you can set up automatic lining.
4) repeat/improve
In general, try to find the smallest step from where you are, towards where you want to get to. Avoid leaps. Change one thing at a time (eg, you've used mongodb+node+express+react: try using typescript or change out react for vue. Or look at using postgres over mongodb etc.
I'd also try to encourage some kind of internal sharing. Maybe tech lunch Friday - where you can each give a lightning talk on some small nice thing you've found/used recently.
Try to "budget" for improving. Make it work, then spend an hour or two making it (more) beautiful.
Re: Ask HN: How to learn best practices when you have no one to teach you?
#119Earlier quoted context omitted.
So even if you see that your 10K line UserManager class is hurting your velocity and you are spending more and more time maintaining your AcmeDatabaseManager and AcmeLogManager, you still don't why it's taking longer or what to do about it.
Neither did the first person to encounter it, but they figured it out anyway. There is no magic one-size-fits-all process for this.