I am always the kind of guy who is creative, authentic and believes in move fast and break stuff. However, my company expects me to move fast but don't break anything. I was also told that I make small mistakes from time to time. (Most recently, I forgot to turn on a cron on prod). I do love my work and I think the decisions I make and the code I write are of high quality but these issues are affecting my optics. (I have trouble concentrating for long hours. I work in short bursts if that's worth anything). How do I overcome this situation, and improve my optics and my confidence? Thanks
Ask HN: How to release features seamlessly as a Software engineer?
1–9 of 9 posts
Re: Ask HN: How to release features seamlessly as a Software engineer?
#2Load test constantly. My policy is to (almost) never develop using "sample data". Instead, I take a very large example of real world data (say 95th percentile of what is actually used in the wild) and develop with that as my backing data. If operations are slow enough for me to be annoyed in development, clearly they will be too slow for the (many more) people who have to work with the project once complete.
> 2. Since this service is constantly updating, I frequently fumble with git. like accidentally pushing testing code/hardcoding onto prod.
Lock the `main` branch, only allow commits to it from PR's. Review your own PR's.
> 3. There are lots of flows in the service, so missing out on testing one of them.
Does making a change in one flow tend to adversely affect seemingly unrelated others? That might be an engineering shortcoming you should address. Besides that, automated testing. Some stacks allow "recording" a flow, then automatically making sure that same flow can happen on every PR. See point 2.
> 4. other notable issues like bad queries from analytics team
There are no bad queries, only insufficient validation, timeouts, and/or load balancing.
Re: Ask HN: How to release features seamlessly as a Software engineer?
#3Re: Ask HN: How to release features seamlessly as a Software engineer?
#4> 1. I did not do enough load-testing Load test constantly. My policy is to (almost) never develop using "sample data". Instead, I take a very large example of real world data (say 95th percentile of what is actually used in the wild) and develop with that as my backing data. If operations are slow enough for me to be annoyed in development, clearly they will be too slow for the (many more) people who have to work wi…
Interesting point. Will try to incorporate that.
> Does making a change in one flow tend to adversely affect seemingly unrelated others?
It doesn't happen that much, but because there is a lot of intersection between those flows, they are kind of interlinked(to reduce code duplication). But point noted, I will try to see if they can be separated.
> Lock the `main` branch, only allow commits to it from PR's. Review your own PR's.
Done.
> There are no bad queries, only insufficient validation and/or timeouts.
Validations are huge issue. When you have hundreds of variables and one of them throws DivisionByZero error or invalid data type, those are hard to catch
Loved these suggestions especially the first one. any more ideas?
Re: Ask HN: How to release features seamlessly as a Software engineer?
#5> 1. I did not do enough load-testing Load test constantly. My policy is to (almost) never develop using "sample data". Instead, I take a very large example of real world data (say 95th percentile of what is actually used in the wild) and develop with that as my backing data. If operations are slow enough for me to be annoyed in development, clearly they will be too slow for the (many more) people who have to work wi…
> I take a very large example of real-world data (say 95th percentile of what is actually used in the wild) and develop with that as my backing data. If operations are slow enough for me to be annoyed in development, clearly they will be too slow for the (many more) people who have to work with the project once complete. Interesting point. Will try to incorporate that. > Does making a change in one flow tend to adver…
Not so fast, if you have shared code that is breaking that'd be a perfect place to start introducing automated testing. In general automated UI testing is more work and false-flags than it's worth, but the exception is heavily reused code. That said, if you have code that is technically reused, but there are so many parameters that no use site is the same and changing the way one parameter gets interpreted causes issues with another, yes that'd be a good thing to fix up.
> When you have hundreds of variables and one of them throws DivisionByZero error or invalid data type, those are hard to catch
What makes those hard to catch?
Re: Ask HN: How to release features seamlessly as a Software engineer?
#6This sounds a lot like my experience. I have had the same issues as solo owner of the tech projects. What helped for me was setting up a complete staging environment, where all new features are tested by either your business users, or better a person to do sole QA. I would advise your company to hire a contract QA person if you can. Then set up your deployments to go to staging first, when everything is tested you sh…
Re: Ask HN: How to release features seamlessly as a Software engineer?
#7This sounds a lot like my experience. I have had the same issues as solo owner of the tech projects. What helped for me was setting up a complete staging environment, where all new features are tested by either your business users, or better a person to do sole QA. I would advise your company to hire a contract QA person if you can. Then set up your deployments to go to staging first, when everything is tested you sh…
Re: Ask HN: How to release features seamlessly as a Software engineer?
#8Earlier quoted context omitted.
> I take a very large example of real-world data (say 95th percentile of what is actually used in the wild) and develop with that as my backing data. If operations are slow enough for me to be annoyed in development, clearly they will be too slow for the (many more) people who have to work with the project once complete. Interesting point. Will try to incorporate that. > Does making a change in one flow tend to adver…
> I will try to see if they can be separated. Not so fast, if you have shared code that is breaking that'd be a perfect place to start introducing automated testing. In general automated UI testing is more work and false-flags than it's worth, but the exception is heavily reused code. That said, if you have code that is technically reused, but there are so many parameters that no use site is the same and changing the…
Re: Ask HN: How to release features seamlessly as a Software engineer?
#9This sounds a lot like my experience. I have had the same issues as solo owner of the tech projects. What helped for me was setting up a complete staging environment, where all new features are tested by either your business users, or better a person to do sole QA. I would advise your company to hire a contract QA person if you can. Then set up your deployments to go to staging first, when everything is tested you sh…
On an unrelated Note, I admit I hated the idea of setting up processes because I enjoyed the freedom given to me by my manager to make architectural and code decisions on my own and move fast rather than following rigid practices. I am not sure if that mindset is good.