I have a newly graduated SW Eng (BS in CS) who is struggling to find a job and getting advice to go back and get a Master’s Degree in #LLM in order to be more marketable.
I’ve always heard that grad degrees aren’t strictly necessary in SWE to start but is this changing? Are there other time investments that make more sense (open source contributions, certifications, personal projects, etc?)?
Is growing your Dev/Ops skills important to you? Then my free, no-fluff newsletter will give you inspiration! It comes every Monday morning with my Mentor Monologue (a column on a specific topic I pick for each week), news from my DevOps community of practice "The Server Room", and a bunch of links to interesting engineering articles.
It’s been so long since I did anything with authenticated users, curious about “modern” patterns and standards.
Specifically, an authenticated user wants to do something. What patterns and standards are you using for permissions?
I’m seeing middleware mentions. But, curious what else is out there. Not looking for “use Framework X” and should be testable. Doesn’t need to be web-specific as I’m just looking for patterns and standards.
"Tests provide the only reliable documentation of design. The story they tell remains true long after paper documents become obsolete and human memory fails. Write your tests as if you expect your future self to have amnesia. Remember that you will forget; write tests that remind you of the story once you have." (Sandi Metz, "Practical Object-Oriented Design")
What is the best way to offer you text-to-speech in my video game? Should I build it in myself? Or should I somehow make the text available to external screen reading plugins you already have installed?
What is the best way to enable text-to-speech? I'm trying to imagine how a blind person would find the toggle in a settings menu they can't see. The only way I can think of around that would be to enable it by default and have an option for users who don't want it to disable it at the beginning, but that sounds cumbersome. Is there a better middle option? Is there a commonly-used keyboard shortcut I can enable or something?
Spaghetti code is easier to write than maintain, and in doing software archaeology (yes, it’s a thing), I’ve encountered numerous reasons for it. Requirements creep is one of the largest reasons.
In fact, the first real software archaeology I did was explained, proudly, as being a product of someone walking in and telling the developer, “Wouldn’t it be nice if…”. Of course, nobody wrote anything down, and by the time I got to it the software was 25 years old and didn’t even have a brochure. People were still walking in and saying, “Wouldn’t it be nice if…”. Meanwhile, the company was required to follow standard software processes because it was required for contracts.
So I learned, from good teachers and a few bad ones, about Software Configuration Management, Software Quality Assurance, and Software Testing. There were reasons we did things a certain way. Our project configuration management contained everything needed to rewrite the software from scratch, including every single tool. I’d actually done a backup of a development pc after writing down the hardware specifications of the system and handed that in because quality assurance had to be able to take the same stuff and rebuild the same software so that it could be tested.
From scratch. And it had to pass the same tests. From scratch.
What I saw in other companies after that was never at that level, and on the surface it seemed ridiculous. However, any software engineer worth their weight in skittles has been screwed over by a platform changing underneath the code. Windows was infamous for it, though I did encounter it in an Apple shop as well. Your code hasn’t changed, but some update suddenly had you in the middle of bug city without even a flip flop. Microsoft has been notorious about that, with their version back in the day called DLL Hell. It’s just their (old) version of dependency hell.
I never had the problem with *nix systems, though when open source became popular and everyone started using that in their code, *nix systems started to get it too. People blamed the open source, but it was really 2 things that caused the problem.
(1) Bad Configuration Management (if it even existed!) and
(2) Taking the open source project for granted.
Open Source projects that are done voluntarily are completely outside the control of a company, but having an open dialog and even sending some money for pizzas and beer can avoid issues. Even with all of that, volunteers are fickle, so having in house expertise on projects becomes as important as how important the projects are to a company’s software. A company doesn’t really know this, though, when they don’t have software configuration management for their projects – so you end up with spaghetti projects, or as I call it, “Spaghetti Configuration Management”.
Toss in the developers that are copying and pasting from Stack Overflow, or now GPT, dash in employee turnover, where expertise is lost, and you get software entropy. Talking about software entropy causes the eyes of pointy haired bosses to roll to the back of their heads, so instead we talk about technical debt, because one thing businesses understand is debt.
Over the years, companies I worked for were at various stages of technical debt. It’s a real thing, and the startups that survived long enough to get to the point of technical debt were the worst because of the culture shift needed: Documenting things, tracking things, and making sure that the knowledge stayed within the company. I can say with good conscience that I left every company better off than when I left it, sometimes because of the company, sometimes despite the company.
How can we reduce #code review anxiety? Our intervention reduced code review anxiety, increased self-efficacy, & increased self-compassion. Our intervention, which focused on cognitive restructuring (where folks identify, challenge, & reframe negatively biased thoughts to be more realistic and compassionate), likely worked by increasing folks’ self-efficacy & self-compassion.
"What leads to #code review anxiety? Our model shows that we can intervene on code review anxiety by targeting the cost bias (when we overestimate the "cost" of a negative outcome) and anxiety self-efficacy (our belief in our ability to tolerate and manage anxiety), with anxiety self-efficacy being the strongest contributor to code review anxiety."
I want to be transparent about the fact that I've developed software in order to solve problems even though I've never been a software developer professionally.
Would it be crazy to include a section like this in my resume?
Fascinating article from IEEE Spectrum that discusses the carbon footprint of software and how we can both measure and improve it: https://spectrum.ieee.org/green-software
The benefit is not only less carbon, but following some of the principles that are outlined can decrease costs and improve efficiency.
The article references tools such as Firefox Profiler and Ecograder as well as an open source Sustainable Software Engineering course.
How do you manage to find time to code your personal projects and read tech literature?
My family is not even that big, but for me it's a constant struggle to reliably find 30-60 minutes a day to do my thing.
Most of the time there are house chores, or some apartment renovation, or my partner needs me to help with something, or it's time to go out, etc etc etc
Your application is not your data, and modeling your application solely on the underlying data can cause some serious problems, and the world can go topsy-turvy if the underlying data model changes and you don’t have a concrete way to keep that from rippling through your application.