Python, and dynamically typed languages in general, are known as being great for beginners. However, I feel that while they’re fun for beginners, they should only be used if you really know what you’re doing, as the code can get messy real fast without some guard rails in place (static typing being a big one).
Disagree on this one, even though I can see where you are coming from. I first learnt programming in Java, and it gave me massive problems to understand the structure and typings. Obviously Java isn’t the most beautiful language anyways, but once I picked up python it started to click for me on how to solve problems, because I didn’t have to think about that many things. I could just go for it. Yes, my code was messy in the beginning, but I wasn’t working on any important projects. It was just for fun.
So I think learning how to solve problems is as important as writing clean code. And python really helped me with that.
Good programmers need to be creative, flexible (soft skills with others), critical thinkers, and problem solvers. Lacking those kinds of features makes for a rigid and terrible programmer that is near impossible to work with or code behind. Leave the ego at the door.
Degrees are meaningless, excepting places like CalTech. I’ve known too many ‘programmers’ who had a CS degree yet were damn near useless to think otherwise. Not to mention my own CS degree taught me almost nothing.
Agreed. I’ve known a lot more self-taught folks worth their salt than those with degrees. And those with degrees almost all started coding before they got to the university age.
I wouldn’t say it was a shit university, part of it is that I knew how to write code before I got there. But the CS program wasn’t great. My entire point is, if someone has a CS degree from University X and you don’t know if that program at that university is any good, the degree is meaningless. If the university’s CS program isn’t any good, you can’t count on the degree meaning anything.
There are also a lot of e-commerce agencies who just don’t have their sh1t together. Was expected to work on 3 different clients a day who all had different platforms, different requirements etc.
Yes, you can dump some new code into the project that looks like it’s working, but then you don’t have time for any unit tests, exception handling if the user won’t cooperate etc. The other “senior” programmer in the company never set up any local environment but instead ftp’d all changes directly to the live server. I asked him if needs help to set up a local server and debugger, but instead he would just dump vars on the live server and stream the contents of error.log to his second screen to catch any issues…
The amount of unqualified people is staggering beginning with those who have no university education.
I don’t see it as a problem, because qualifications without competence is meaningless.
You should be more concerned with how qualified people end up performing worse and being less educated, knowledgeable, and prepared than unqualified people.
Agile isn’t that bad. People just believe they are more productive if they are “heads down” and not held accountable for what they write/do.
Functional programming isn’t that great and doesn’t solve all of the world’s problems; it just pushes the issues with state to other parts of your design, and doesn’t scale well in deeply nested solutions.
IDEs with proper code support (i.e. automatic structure analysis, autocomplete, etc.) are one of the best ways to deal with a large codebase that needs refactoring. Doing widescale refactors without one is asking for trouble. If you believe you don’t need it, either your codebase is just that small (which is fine) or playing with fire.
Much of the advice out there on architecture and tooling isn’t properly contextualized on the codebase, market, and team situation. If you believe you have the One True Architecture Solution, you are naive. (Ex. Microservices, large complex code pipelines, monorepos, etc.) Be especially wary of anything from FAANG engineering blogs unless you are also in another letter of FAANG.
There. Got it out of my system. Have fun dissecting it.
The biggest problem with Agile is bad managers fucking it up. But bad managers will fuck things up no matter which way you do things.
But they’re going to want to somehow see progress, and they’ll leave you alone if they see some cards moving on a board. Even if they have no idea what the cards mean.
Whatever, it’s better than having to do status update meetings.
I think they mean something along the lines of good programmers aren’t big head know-it-alls. they admit when they don’t know something, ask for help, and collaborate as opposed to claiming to be an all knowing monolith software god. we’ve all met those guys at work.
But you can set a tab width instead so any developer editing the code can adjust the indentation width to his liking, without changing the actual files contents and having to worry about setting the editor up to insert the right amount of spaces.
Tabs are literally designed for aligned indentation, and they’re configurable for clientside viewing. There is no excuse for spaces. I don’t care if your goddang function arguments line up once they spill out onto another line. You’ve got deeper problems.
Tabs are designed for tabulation (hence the name), not indentation. The side effect is that a tab’s length changes based on its position in a line, which is terrible for programming. If you use tabs in the Python REPL, it looks like this:
<span style="color:#323232;">>>> def frobnicate_all(arr):
</span><span style="color:#323232;">>>> for item in arr:
</span><span style="color:#323232;">>>> frobnicate(item)
</span>
The horizontal tabulation character moves the cursor to the next column which is a multiple of the tabulation length. See the examples here: en.m.wikipedia.org/wiki/Tab_key
The horizontal tabulation character moves the cursor to the next column which is a multiple of the tabulation length. See the examples here: en.m.wikipedia.org/wiki/Tab_key
Yes
Clearly the whitespace produced by each tab character has a different length.
No, each tab has the same size, the text rendered over the top of the tabs are not the same size.
Always remember the golden rule: Tabs for indentation, spaces for alignment.
Tab goes to the next stop, the same way newline goes to the next line. Exactly the same way. If you write more text before the next line, the amount of whitespace shrinks. That doesn’t mean the “length” of a newline changes. It always goes one line.
Every IDE and editor (gui and tui) I’ve used has always come preconfigured with a tab-size of 4.
The only thing I’ve ever experienced having a tab-size of 8 was github, and I thought that was just a problem with a setting from github’s size that I quickly set back to 4.
It seems that tui editors come with tab-sizes of 8 only when a config isn’t provided, and every environment I’ve used where I’ve used a tui editor has always come with sensible configs (for things like config location, language recognition for syntax highlighting, etc…) including a tab-size of 4.
Really hard to do in a terminal. If you have errors you can see very fast where they are located/clustered in the file and can already tell just by the shape of the program where it is.
Another example: GUI color picker directly in my editor as a tooltip above color values in css/html templates.
Another example: inline preview of latex or Template fragments.
Yea well most of the comments in here are lukewarm takes so… there you go.
I for one really love the zoomed out preview on the right that has become popular in recent years.
I almost never navigate code based on its order or “shape” in the file. LSP-based symbol tagging or searching is way faster than scrolling. I guess you can click the spot on the preview that you need, but I refuse to reach for my mouse while editing text.
Really hard to do in a terminal. If you have errors you can see very fast where they are located/clustered in the file and can already tell just by the shape of the program where it is.
I use LSP integration to see a complete list of errors/warnings and jump to them.
Another example: GUI color picker directly in my editor as a tooltip above color values in css/html templates.
That’s for design, not text editing ;)
inline preview of latex or Template fragments.
I will use a latex or markdown language server that renders to a browser tab.
To be fair, I don’t do HTML/JS/CSS, so I bet VSCode or other GUI editors are great for that. But that’s specifically because you want to see something rendered. Most of the time you can just see it in an actual browser next to your text editor though.
Not really what you’re after, but… Using a gui text editor means scrolling is usually smoother. Similarly, horizontal scrolling/wraparound experience is better.
Semi related: Did you know they the jetbrains IDEs have official vim-like key bindings? I converted a windows gvim user to it.
I don’t even think that’s the case, honestly. There are ways to make it animated smooth as well, and the scrolling is already more responsive and fast, and thus smooth.
Using vim keybinds in gui ide’s feels bad to me usually cause of how slow they tend to be.
Yea I think I agree with you there, at least theoretically. In practice I’ve found that it’s easier to use a TUI editor over SSH, and they require less resources, but that usually isn’t noticeable on my PC.
You know, I wish it wasn’t. Much of Amazon was on a version of Perl for years (and may still be) for almost all of their front end hosting. Facebook has transformed PHP into Hack (which is better for types, though technically not strongly typed), strongly suggesting they were running PHP until 2014. Let’s not forget what WordPress is still in PHP too.
Depends on the community. In Lisp communities, for example, it’s very much a hot take. Which is a shame, because I’d love a statically typed Lisp-like language.
We can feel it in our bones… And boy is it a pain when you find a huge codebase that is JS only or python without types. Fucking hell dealing with that shit
Blame management for that. I implemented Scrum in a project that I took over without any changes to the framework and it is great. We are able to keep a healthy work life balance, no overtime, good relationship between the product and the engineering team, and the most important thing is on time feature delivery.
Not an Agile issue, but a “people fucking up Agile” issue. The priesthood of MBAs will adopt whatever terms people like and just hammer them into place to keep doing the same old shit.
I have experienced this but I think that’s the fault of the people implementing it.
For instance, I have been in a 4-person team where the daily meeting took 30 minutes and people often rehashed discussions they had on the previous day. I have also been on a 10-person team where the meeting took 10 minutes on a bad day
Oh totally seen it work myself but I don’t know that it was agile that worked as much as they had a kickass team.
Some teams just jive well. They communicate, they know what each other is doing, and they can plan with minimal waste. And when it’s successful that’s across all roles not just the devs.
In my opinion those teams would have succeeded in waterfall, kanban or their own home brewed strategy as well.
Oh totally seen it work myself but I don’t know that it was agile that worked as much as they had a kickass team.
Some teams just jive well. They communicate, they know what each other is doing, and they can plan with minimal waste. And when it’s successful that’s across all roles not just the devs.
In my opinion those teams would have succeeded in waterfall, kanban or their own home brewed strategy as well.
Add comment