Good luck bud. For both of us.
Ask HN: Are my expectations on code quality and professionalism too high?
31–40 of 306 posts
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#32To counter the flood of 'you sound reasonable', I think you are probably being unreasonable. The hint is "spaghetti code". What might have happened is you started slagging off everyone's code as soon as you've come in and now you're plucking at straws to justify it as you're getting ostracized. Also, objectively speaking, how can writing MORE code and spending MORE time talking to people be faster? Your argument make…
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#33To counter the flood of 'you sound reasonable', I think you are probably being unreasonable. The hint is "spaghetti code". What might have happened is you started slagging off everyone's code as soon as you've come in and now you're plucking at straws to justify it as you're getting ostracized. Also, objectively speaking, how can writing MORE code and spending MORE time talking to people be faster? Your argument make…
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#34This seems below average. No tests or code reviews is common but pushing directly to prod or connecting to prod databases is unusual. It seems you've gone from one extreme to the other. From what I've seen, even at companies were people work in silos producing untested spaghetti code, production is protected. In any case, among small companies, you'll have a hard time finding the same level of quality you were used t…
Just be thankful the devs can “push” to production and aren’t individually rsyncing their code into the app servers. :)
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#35Your standards are reasonable. However, what's missing in a lot of comments is a good process for assessing what the human and business factors that led to where the company is now, and how to approach changing it. This is natural as most people here are techies first, but it could lead to setting you up for a bad experience. There are very limited conditions, under which making this a blame exercise would be the rig…
"what the human and business factors that led to where the company is now, and how to approach changing it"
This is a people problem, not a technology problem (or an opportunity if you look at things that way).
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#36Re: Ask HN: Are my expectations on code quality and professionalism too high?
#37To counter the flood of 'you sound reasonable', I think you are probably being unreasonable. The hint is "spaghetti code". What might have happened is you started slagging off everyone's code as soon as you've come in and now you're plucking at straws to justify it as you're getting ostracized. Also, objectively speaking, how can writing MORE code and spending MORE time talking to people be faster? Your argument make…
I take it you've never worked in that type of an environment, with code review and (good, not necessarily perfect) test coverage. I am working in an environment like that and I regularly push 20-40 changes per week. There's no problem with speed. Furthermore, had there not been tests (and not just unit tests; the important stuff is large scale performance tests and output differs) I would never be able to push code o…
What's special about that?
How can writing MORE code be faster? Be honest with yourself, you know it's slower, it's hard to get right, and it's easy for many programmers to end up writing really bad tests that hinder rather than help.
Certain orgs might be able to pull it off, but generally speaking it's cargo culting.
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#38However, don't see it as demoralizing, see it as a way to teach other developers good practice and have a huge impact on the businesses engineering practices!
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#39I don't feel myself in a proper position to give you advice, since my experience is limited. But, some things I've seen working:
- identify whether there is a "dominant group" that enjoys some sort of political influence and are trusted by the direct manager. This is important. They are usually the oldest ones at the team and, as they got trust and respect from the management, they also got out of the pace with good practices applied elsewhere. Be careful with them, in case this group exists, because they won't let you proceed with such "disruptive" ideas risking to make evident that there's always been a better, more productive way, but they haven't applied them for pure inertia.
- if you have the opportunity, and think it's worth the effort, try to deploy or build some small tools/processes/etc and show them. That will be very eloquent examples;
- don't be concerned about taking credit. Everybody is interested on being more productive, but human emotions will always prevail over any rational need. I'm proud for having built some productivity tools in use for 15 years now in a company I've worked for, and almost nobody knew that I was the author. The "architecture" team wrapped them up on a asp.net web app and took all the credit. That's fine considering I achieved a more important goal. If I had attempted to bypass the architecture team and promoted my tool independently, it would probably have not been put in use.
And always bear in mind that this is usually a long term effort and you have to continuously assess if it's worth. Maybe other non technical aspects counterbalance the issues, maybe not. Some of my happiest years were spent working on legacy, terrible code. But this is a very personal and multifaceted decision.
Re: Ask HN: Are my expectations on code quality and professionalism too high?
#40The biggest problem was that most of the bad developers were located in a country, where once you are past your test period, and you are at work at 8, no one can touch you. Meaning that for years, they were doing every anti-pattern known in the books, and someone cleaning up after them(in most cases me). And in those conditions you are left with no choice but to... Cut corners... Eventually we managed to pressure all of them to quit. Keep in mind, there were entire releases where I've personally had to re-do everything they had done for that release because it would take less time than it would take me to tell them what they have done wrong or why. And they were perfectly happy with that. All while every deadline was approaching fast. Now with them gone, things are improving, though we still spend countless amounts of time to clear the roads from what they left behind while still having to build on top. Which, sadly, is a slow and painful process.
My advise - do the best you can do to your ability, even if it means cutting corners for the time being. Once the water has set, things will start going back to normal(but that could take a lot of time). This has to do with the lead developer(which we didn't even have at the start, and one was appointed much later). Eventually he quit so... I was next in line for better or worse...
So a 3 things you need to figure out:
1. Lead developer - are they pedantic, strict and do they go over stuff when they have free time and fix/optimize things? If they do re-factor or even rebuild entire chunks of the application with the intention to improve it, then sit back and relax. Things will eventually start falling into place(see my following points). Go through something big in the project they have developed on their own with sufficient amount of time at hand? Is it clean, well structured, documented and organized or is it just "working". Do they write documentation when they can or do they just kick the can down the road(again, stressing on "sufficient time")? If it is effectively good code, you are on the right path. Granted that the rest of the team has the will to learn and improve. Tl;dr - follow the leader, something which has been instrumental for many of the developers I've worked with. Eventually they will start mimicking the leader's behavior. Your best course of action is to give him/her enough space to be able to clear things out - you know - flatten the curve.
2. Tests, while good, are not always a clear indicator. Sometimes people take tests as ground truth and as long as a test passes, they will call it a day. In addition, some systems are way too complex for automated tests. I have such an example, I've worked out the math: you need a 124! (yes, factorial) to cover all possible scenarios. And counting... Good luck with that. So yes, no tests, just making sure that there's a way to restore things if something goes wrong.
3. Company infrastructure - some companies are incredibly strict and conservative, meaning that developers end up having to spend ridiculous amounts of time trying to get around firewalls, rules and regulations. Which, as you can imagine, takes a lot of time and a lot of effort to break out of. But with the adequate amount of will and time that's not impossible.