< Back to the archive

Like what you see? Subscribe here and get it every week in your inbox!

Issue #201 - January 15, 2023

Here are the top threads of the week, happy reading!

Top comment by PragmaticPulp

> I have come to a realization that I don't really enjoy Software Engineering(& the processes that it comes with) but I do love programming & solving problems.

I can almost guarantee that you’re just at the wrong company.

Some software companies can turn even the simplest tasks into a grueling series of processes, endless meetings, and joint work across a big number of “stakeholders”. These companies will take the joy and productivity out of programming and replace it with a series of rituals and set of language that people use to go through the motions every week so they can collect paychecks.

Start interviewing around. Talk to your network. Find a company that values programming and real productivity but discourages unnecessary meetings and process. You will be much happier. There is no escaping the fact that you’ll have to work on legacy code, document your work, and meet with people some times. However, it doesn’t have to be a miserable process-filled slog.

Top comment by jb1991

I don't know you personally but I doubt cognitive decline has anything to do with this.

As we age, we usually end up with more and more life responsibilities, beyond just the work we are doing. All of that is input to the brain and requires energy in response. The brain is not infinite.

I often feel as you do, but then I have periods where I am as light and agile in my productivity as 20 years ago, maybe even more so, and usually it is my life circumstances that are the culprit.

I remember once about 13 years ago I was working on a mobile game and had a similar problem as you describe; there was one day where the technical work seemed to overwhelm me and I felt inadequate. But I was just a young chap, and it was a passing moment -- I had indeed just taken on some enormous new life responsibilities at that time, which were the likely explanation.

Burnout is real, too, and giving yourself space (if you can) to relax and not think about work for a break can be quite useful to recharge.

Top comment by chrchang523

As others have noted, part of the problem here is that the engineers in question are actually not yet smart enough. It usually takes substantial experience to identify simpler, more-maintainable ways to meet challenging performance goals. If you are not fortunate enough to have a veteran engineer who can lead the way in pushing back against unnecessary complexity, you'll want to try to grow your own.

This requires some luck, but there definitely are things you can do to help the process along. In particular, I recommend allowing some probably-unnecessary complexity -- I'd expect your engineers to innovate less and learn at a slower rate if you try too hard to stamp this out -- but be strategic in where you allow it. Software that is already load-bearing for your business should be subject to higher standards. Set an expectation that stable functionality becomes easier rather than harder to work with over time. When the backend has to become more complex to achieve performance goals, ask your engineers to do their best to encapsulate that complexity, and keep the higher-level interfaces simple.

Top comment by gardenhedge

TypeScript itself is good but typescript errors are bad and annoying

Top comment by xyzelement

In brief:

1. What worries you? Not some blatant project stuff but bigger deal issues. "How do I learn enough here to make a lot more money in a few years" or "I don't understand how our product is going to make money in this environment". Stuff like that is probably on your mind in some way (unless you are an unthinking dolt, but you wouldn't be asking this if you were) - get it out there and gain perspective.

2. Blind spots. You know how everyone in your life has some stupid thing that holds them back that they are oblivious to but is obvious to everyone else? You have it too. Find a way to convince your manager that you can tolerate real feedback and ask them about this. It will make your life better way beyond work.

3. Find out what worries them. Maybe in some way you can help them deal with stuff "beyond your pay grade" - your pay grade will eventually have to catch up :)

4. This should have been number one - get to know them as a person and help them get to know you.

Good luck. Doing any of these will put you on an exponential growth pattern compared to others.

Top comment by PreInternet01

Congratulations! Having cracked versions out there indicates that your software is both useful and notable, which is a point where many developers would love to arrive at, maybe, one day.

As to what to do about it, there are two basic tracks, neither of which is incompatible with the other:

1. The legal route: notifying distribution sites that they're hosting content in violation of copyright law, requesting takedown, and if required, demanding such (with a DMCA notice or similar). If a distributor is unresponsive to both, DMCA Google, Bing, etc. to at least suppress the cracks in most search results;

2. Having some fun with it: make sure that a special page on your own site becomes the #1 search engine result for " crack" and similar. On this page, put a human face on your pricing, explain the available discounts, and finally offer to supply a free registration key to anyone that truly wants it, so they don't have to download all kinds of shady binaries. Of course, any such free keys don't come with support and display a prominent PIRATED VERSION notice in all window captions, printed outputs, et cetera, but you disclose all of that upfront and explain how that's a small price to pay...

But above all, make sure not to confuse a "pirated copy" with a "lost sale". In 99% of cases, the Venn diagram of those has very little overlapping area.

Top comment by corysama

I worked in gamedev for 20 years. In retrospect, I could have made a lot more money selling ads for cat pictures. But, enjoyed the chaos of being at the intersection of art, tech, design and commercialization.

My advice to everyone wanting to enter gamedev is the same as for everyone wanting to start a startup: Be realistic about failure. It’s a high risk, high reward business with tons of uncertainty. It’s easy and common to be so enthusiastic about working hard to succeed against impossible odds that failure become a “Voldemort” term that shall not be spoken..

But, if you are realistic about the fact that “risk” includes the possibility of failure, you can be realistic about what failure means and what you plan to do when it occurs. If failure means your family will literally be homeless and starving, don’t take that risk! If it means your dreams don’t come true and you’ll have to go back to some boring desk job… Well that’s a bummer. But, it’s not anything to be afraid of.

Be sure to have enough money in the bank to pay the bills if you suddenly, unexpectedly have no job and need to find another. Be a coworker who people want to work with again because people who leave your company before you are how you land your job at the next company.

Top comment by softwaredoug

"Introduction to Statistical Learning" - https://www.statlearning.com/

(there's also "Elements of Statistical Learning" which is a more advanced version)

AI: A Modern Approach - https://aima.cs.berkeley.edu/

Top comment by xavdid

I'm proud of a lot of things about my site, but maybe the domain most of all: https://xavd.id

It's written with Gatsby and hosted on Netlify (which handles the build step without configuration). I picked Gatsby because I wanted to use react/preprocessors, but also wanted to be able to "just write" (and MDX lets me do both of those). It also has a vibrant plugin ecosystem and is JS based (vs Ruby, which my previous site used; I don't write Ruby any longer).

I blog a few times a year, a mix of technical topics and media reviews. The blog is meant to be mostly text, but it being in React means I can drop in rich things, like support for hide-able spoilers and nice code blocks. I've optimized the layout for reading text (good font size, max-width, line-height), so hopefully it works!

Some favorite posts are:

- Python Dataclasses from Scratch: https://xavd.id/blog/post/python-dataclasses-from-scratch/

- My yearly media review. Here's 2021; 2022 should be up in the next few days: https://xavd.id/blog/post/favorite-media-2021/

Thanks for looking!