The problem in that segment is that it's basically the same disposable, non-repairable tech that's destined to the dumpster in a couple of years. The company is selling the appearance of having a different design philosophy, and it works because the consumer has no way of telling.
So, if you want to do anything more profound in that space, it's going to be hard to compete.
That one you linked has actually quite a lot of features - the 12 presets, auto cooking mode, weight setting, the potentially confusing buttons like "express" and "micro power".
Microwaves that are just time and power setting, cooktops that are just four knobs, ovens that are just mode and heat, maybe a simple timer… I’d buy those too.
Along the same lines, I also find it useful to have a text log for each sizeable task I undertake. This could contain anything, notes of module structure, code & data snippets for testing, everything!
Like one of the top comments mentions, it acts as a node of knowledge within a wider system (graph) and I end up revisiting these logs more often than you would expect! It only gets better as you explore/document more and edges form.
Yea, for me what really helped is once I interned at a hydraulic engineering company and I was tasked with debugging a custom software for pump modeling/optimization in GIS.
I had no background in C++ or the GIS I was dealing with and this was a one-off thing that was built for a project, but not maintained or documented at all.
The lead eng that wrote the software also had a long and detailed personal log of what he was working on. He just gave me that.
It helped a lot to understand not only how the software worked, but also the design decisions.
I’ve been doing something similar. If I read a blog post / paper, etc. where I learn a lot on a topic I’m interested in, I will catalogue a pdf of it in Obsidian with a tag and an optional note. This makes it easy to access information locally very quickly and I find I learn a lot more because if I forget something, I open up the resource, read the doc and, come out learning a little more. A kind of convoluted version of spaced-repetition but more passive learning.
Granted, I’m aware this probably won’t scale to many topics but a few years and hundreds of notes later, it’s still working well for me.
I don't even save the sources, I'll just assume I'll always have access to the internet and that I'll be able to find what I need when I'm thinking about it.
There’s read.cv which is a network, portfolio and job posting site that’s more focused towards the design community. I have seen software dev jobs posted in there too.
I’ve also struggled to find an alternative to LinkedIn (which is unbearable at times). Maybe the way forward is for each community to have its own unique platform, like read.cv for the design community, another for games, embedded, etc.
Aside from that Hacker news who’s hiring has been the most useful in discovering opportunities for me personally although I realise this is focused mainly on technology roles.
Excellent point. Giving my perspective as a relative newbie (~5 years) to the industry with no comp. sci. background.
It was around the year 3-4 mark that I decided to knuckle down and try to improve my fundamentals (data structures, algorithms, memory models, concurrency, CPU architecture and some network fundamentals) by reading popular papers and literature and writing all of my personal projects in C and C++. I’m about two years into this study and while it’s been immensely rewarding, I’ve found it to be a huge undertaking while juggling life and a full-time job.
What I’ve also noticed is that, while I understand a lot more about what the CPU is doing, memory manipulation and how to write more efficient programs, I haven’t found it be particularly beneficial to my daily work (still Python and JS). I would love to be able to put these concepts into practice for many hours of my working day but it’s difficult to move from general web-stack development to more performance-oriented development (embedded, low-latency, OS, etc.).
My guess is that this is one of the reasons we have ended up in this situation. You can get away without knowing the fundamentals (a good sign of progress?) and that if you really do want to pursue these areas that promote building this kind of knowledge as part of your career, the barrier to entry is quite high and the positions are fewer than say a decade or two ago. I find it a shame because in my eyes, these areas are the most interesting and exciting areas of programming. It’s an art.
> What I’ve also noticed is that, while I understand a lot more about what the CPU is doing, memory manipulation and how to write more efficient programs, I haven’t found it be particularly beneficial to my daily work
I think this is because of the effect OP is describing: no matter how much time you spent studying, the odds that you learned about the specific thing that will make the difference in your work this week are slim because the technology is so broad and deep. Odds are that what you choose to intentionally study is irrelevant to your work.
You've picked a slice to learn about, but those who were working on it as it got layered know it all. Once you have that kind of knowledge, the odds of being able to explain some unexpected behavior approach 100%, but acquiring that knowledge took decades.
I've found a method that does work pretty well is to dig really deep into the topics that come up in your actual work. Instead of a random sample of fundamentals, find the parts of your job that feel like magic and explain that magic. Skipping over V8 and straight to the CPU might not be useful for a JavaScript dev very often, but a deep understanding of V8 is relevant more often than you might think.
I agree about the high barrier to entry, but I disagree about the modern job market.
There’re huge areas of the software industry where performance matters to this day. Examples include videogames, content creation, video processing, engineering software, science related HPC, and now AI.
However, transitioning from web development to these areas gonna be hard. That software doesn’t run in web browsers, the code is either desktop apps, deep inside web backends, or supercomputer programs. And high-performance C++ is often not enough for them, depending on the area ideally you might also need GPU graphics and/or GPGPU compute.
I was lucky I have never worked on web apps. I know TCP/IP reasonably well, I have some general understanding of HTTP and HTML, but I’m totally clueless about the modern frontend technologies.
What I’ve found most helpful for understanding how something affects Python specifically (but this holds true for nearly any language) is godbolt [0].
Find a chunk of code you want to optimize, simplify it as much as possible, then put it into godbolt. Match the interpreter version to yours. Then go look up the bytecodes and see what they do. Try changing the Python version to see how it differs, or a different approach to the problem (e.g. a map instead of a list comprehension).
This takes an enormous amount of time, of course, but you can learn quite a bit.
> Getting a job becomes more of a random toss than assessment of my skills.
I’ve coined a term for this throughout my long job search, it’s called the “leetcode lottery” (patent pending).
You can do a couple of hundred leetcode problems, but you’re still at the mercy of the Gods when your technical interview comes around. The worst part of this whole charade is that I come out of most interviews having learned nothing valuable and I can say the same for the interviewer. They haven’t learned about my strengths and weaknesses, etc.
I don’t have a better solution for how you can get an idea of my knowledge and skills over 2-3 hours of technical interviews though. And until someone does come up with a better idea, we’re stuck playing this game.
I think certification is essentially the same thing as having someone else interview the candidate, so it won't be better and is easier to game than interviews. Working together with someone on the kinds of problems you actually face is the most realistic way to assess a person's abilities on the work to be done because it's less of a proxy than anything else.
Yeah kind of. I think of it like DRY though. Most people aren't good at interviewing. Everyone does some random thing they think is better then the rest. But really it's uninformed. Just like you wouldn't implement your own hash map for most cases, you don't need to do a technical interview for everyone. I had one company do three seperate coding rounds. How many candidates do they have, what a waste of time for everyone.
Technologies: Python, Typescript, React, (Learning C)
Dream role:
I would love the opportunity to work with C (or Rust) in a professional setting. I think there are a lot of interesting problems that are being tackled in this space (audio processing, embedded, linux development and latency sensitive applications). I realize my experience is limited in this area but I hope that my current skills can bring value to your team (and business) while I build up confidence and competency. I'm hungry and always willing to learn. I enjoy working for smaller companies and teams :)
About:
Currently working for a trading team in a large investment bank. Prior to that I worked across the web-stack for 3 years at a start-up. As of the last year I have found myself becoming increasingly interested in performance focused programming and I find great joy in learning how the fundamental components of our software works (think memory allocation, semantics, concurrency, os basics).
I’m also a “full-stack” web developer and would love to transfer to a career in C (or Rust also?). There’s such a wide variety of interesting problems to be solved over many applications.
I’m not sure how I would begin making a career transfer. Would anyone happen to have any advice / experience on this? I would be really grateful!
The best way to do it (if you can) is to get paid for making the change.
First, study C and/or Rust on your own. Maybe do a personal project or two.
Second, find something at work where Rust or C would bring some benefits. Tell your boss that you think this would work better in a language like Rust or C, and explain why. Volunteer to try to do it. (Note: Appearing too eager at this point might be a mistake.)
Do the second step a few times and you become the Rust/C expert. And you get paid as you do the work that helps you get better!
Also know your boss. I know I cannot suggest such a thing to my boss. Generally, the more "serious" your company is with an established stack the less likely you're going to get a green light to do anything not blessed by management.
If OP plays it wrong they can also look like a tonedeaf dunce. Definitely try to read the room.
Thanks so much for your advice! I agree, having the opportunity to use the language as part of your daily-work helps massively, and is one of the best but most difficult options to realize. I'm aware this will come with some sacrifices (pay reduction, longer hours to catch-up) which I'm willing to make while I become more competent.
As for the second point, that is a great suggestion. However, I'm very limited by my current working environment (regulation, corp. restrictions, etc.) so it becomes a little more difficult.
I believe I will just have to push very hard for option one and continue to study areas of interest in my spare time. I'm reading xv6: a simple, Unix-like teaching operating system which is helping me grasp some practical applications using C.
I also think there could be a good opportunity to expand this to kitchen appliances too. Premium quality but really dumb. I would be a loyal customer