I am really bad at writing clean code. 1) Feel really bad, when code reviewer points out naming convention; white space errors. 2) my software design skills are moderate at best. 3) I don't do testing unless needed. I wish Microsoft had a 2 week boot camp for all new hires like fb. What should I study /refer to which would be an equivalent of a boot camp & which would make my software engineering skills professional. TC :- could be better.
My team put together an onboarding bootcamp similar to what you described. PM me for details.
5' 6" indian? Glad to see your back.
Naah, he moved to fb. Just saw his latest post.
You can quickly fix the naming conventions related comments by running a code style check before PR os sent for review. It will point out most of the obvious issues. For remaining which it can’t fix have a checklist of your own. Find out whose code you like and read through it. Also, you can read lot of code on github. You learn most when you see more code which is clean & is designed well. Its not easy & a lot of experienced developers also lack this! Keep practicing & keep learning
If you find that you are getting the same comments over and over, start a checklist. Review this checklist before you submit any code to review. It sounds like you already know some of what should be on it - proofread for white space errors, write unit tests, etc
You just need more experience, keep trying to learn good habits
1) No one cares 2) Book time with a senior engineer and design together before you start coding. Learn from doing. 3) Seem like a conscious choice you can make. Book time to test.
Try contributing to existing open source projects with code you find to be very clear, and doing your own open source projects. Existing, popular, open source projects mostly have pretty high-quality code. And when making your own open source project, your self-consciousness will force you to learn and apply good practices. Also, this may sound strange, but try learning Python or immersing yourself more deeply in the Python community if you already know it. You will naturally end up doing this by writing some projects in Python. Or better yet, contribute to some existing Python project. The Python community overall has a really good culture around writing clean, understandable, well-documented, well-tested code, and the community is eager to spread this culture. The vast majority of the info you will naturally run into while googling stuff for your Python projects will reflect this. You will basically pick it up by association, especially if you are actively applying it while working on your own projects. (Not to say that other software communities are not like that; it's just that I've observed that Python is at least one such community that seems to have a pretty consistently good culture.) So basically, read good code, actively try to write better code than you did yesterday, and immerse yourself in a community that promotes good code. It will come to you, bit by bit.
This is really insightful. Thanks !
The most impactful decision that really improved my craftsmanship was to become an active code reviewer myself. Not just review the few folks on my team, but actively seek opportunities to review outside of the team. Reviewing other people's code helps in a lot of ways: 1) you learn what makes code good and what makes bad code, discover awesome design patterns, and just generally learn from others 2) you grow as a code reviewer over time. Guess what? When you get good at reviewing and improving other people's code, it immediately applies to your own work. I always review my own code (as a code reviewer would) before publishing, and am able to find a lot of the small things like you discussed before other eyes hit it. Growing your review skills makes you a better author.
This is an convinient approach. Thanks !
This might be controversial advice but it worked for me. Learn a language that supports purely functional programming (ml, Scala, Haskell...). My OO and procedural code quality increased 10x after I did that. Testing is just part of the job, but if your components are well designed it's much faster and easier
Could u elaborate on this?
I believe that a lot of bad code results from the following: 1. Storing state when it's not necessary 2. Mutating state when it's not necessary 3. Carelessly managing state when state IS required 4. Choosing types that are too general and don't put enough constraints on computation 5. Mixing effects with computation 6. Careless handling of effects All the above make understanding, modifying, and testing code harder to do. Nothing prevents you from writing code in Java/C#/Python/JS that avoids the above pitfalls, but those languages also make it extremely easy to write code that does have those problems. Also there's tons of code out there from the past few decades that set a bad example. The functional languages I mentioned make it difficult or impossible to make those mistakes. So basically you learn how to write programs in a language that forces or encourages good behavior, then take those lessons back to whatever language you use in your day job and you'll notice increased productivity, better design and fewer defects.
Health & Wellness
Yesterday
999
Issues with sleep
Working Parents
Yesterday
380
How to relocate out of Blue areas?
Tech Industry
Yesterday
584
How’s capitalism going?
2024 Presidential Election
Yesterday
1479
Uh oh: President Trump leads Biden 49% to 43% in a two-way race.
India
Yesterday
3425
Why is it so G*damn difficult to move money out of India
Find someone that is good in design, and look at his pull requests and ask for feedback, dicuss the design
You're assuming that OP has the skills to figure out who is good at design when he's self-proclaimed only OK at it. The feedback one is good though. Do you do design reviews with your team? Do enough of those with Sr folks and you'll start to see patterns