Go to bed, you’re drunk.
Go to bed, you’re drunk.
I’ve never done it but apparently you can actually gradually transition to Typescript one file at a time by renaming them from .js
to .ts
. Might help a bit. Good luck anyway!
Yeah IntelliJ does amazingly without type annotations but even it can’t do everything. E.g. if you’re using libraries without type annotations, or if you don’t call functions with every possible type (is your testing that good? No.)
Static types have other benefits anyway so you should use them even if everyone in your team uses IntelliJ.
Honestly I would take a look through a good standard library that provides a lot of algorithms (e.g. C++ or Rust). That has the basics, especially for data structures.
Also have a go at some hacker rank tests. Especially if you want to learn dynamic programming (abysmal name), they absolutely love that.
Linters 100% won’t. A static type checker is not a linter.
Yes because you used static type annotations. This thread was about code that doesn’t use static types (or static type annotations/hints).
It’s an example to demonstrate that linters cannot reliably detect variable name typos - you need static types. None of the stuff you mentioned is relevant.
The typo in your example is also undetectable by linters. I think you’re missing the point.
What’s awful about this example? The only thing I do is access an object member. Does your code not do that??
Yes you can use static type hinting and the static type checker (Mypy or Pyright) will catch that. Linters (Pylint) won’t.
If you use VSCode, open both files and then ctrl-shift-P “Compare active file with …”
You’re welcome.
def foo(x):
return x.whatevr
No linter is going to catch that.
This is the sort of thing you have to learn by experience, like how you can’t really learn good coding taste from reading a list of rules (though some lists are helpful).
Anyway in my experience documentation is quite different in public (i.e. seen by customers) and private (inside your company). For internal stuff there’s a much smaller incentive to document things because:
I think the best thing to do is to accept that people aren’t going to expect documentation internally. There’s zero point writing guides to tools on your company wiki or whatever, because nobody will even try to look for it - they’ll assume it doesn’t exist.
Instead you should try to keep your documentation as close to the user as possible. That means, don’t have a separate docs
folder in your repo - put your docs as comments in the code.
Don’t put deployment instructions on your wiki - add a ./deploy.sh
script. It can just echo the instructions initially.
Yeah, honestly you should stick to if/else until you’re really sure you want to do something more complex.
This is really terrible advice. Sometimes it’s better to do that, but definitely not in the example from this article.
If anyone says you should always prefer polymorphism to switches they are a bloody idiot.
There’s no value for the higher ups in fixing it
Well there is, it’s just long term value that they don’t even understand.
Really you should just make fixing technical debt part of your regular job. Don’t ask for permission, just do it. (Except for really big things obviously.)
What language are your apps written in? Generally the best options are:
There’s also Flutter which is pretty nice, but again you have to use Dart for the GUI so if the rest of your app is in another language you’ll have some friction.
But yeah, I would say the language you want to write your “business logic” in is the biggest factor to choosing. Also if you care about exposing your app over the web.
Definitely agree with tech debt. Seems like nobody except me cares about improving things, which is surprising given this survey!
Also definitely agree about reliability of tools/systems, but again it feels like it’s just me that cares about robustness - everyone else is very happy to churn out hacky Bash scripts, dynamically typed Python and regexes with abandon.
Either you’re all a bunch of hypocrites or the SO survey is quite a biased sample!
I would probably recommend not trying to understand the whole field of programming initially. It’s huge, you won’t understand what the terms mean (e.g. OOP, functional programming, etc.) and it’s not very motivational.
Instead I would pick one or two popular languages to learn and actually make something in. The no-brainers are Python and Typescript. They’re hugely popular, not difficult, and let you get a lot done.
I think I would consider learning both at the same time. If not, at least don’t stick with Python too long. It is immensely popular but also has a lot of brain dead design decisions. Especially a) it’s reaaaally slow, you easily get a 50x speed up just by switching language, and b) the “infrastructure” around it - installing Python, adding libraries etc. is completely awful. There are attempts to fix that but they’re nascent.
Above all I think a good thing to have is a realistic goal of something to make. For Typescript the obvious thing is a web site. I really like this way of making web sites - you can get started with literally 2 command - but it may be a little too much for a beginner.
For Python I would look into some kind of automation or maybe web scraping thing. It’s decent at that.
Or if you have more specific project ideas you could use the most appropriate language for those, e.g. a microcontroller project you probably want to start with Arduino (C++). C++ was my first language (apart from QBasic which doesn’t count). Probably not for everyone though. I was very young and had free time.
I seriously wonder what kind of circumstances lead someone to be this irrationally devoted to such a flawed and outclassed language. Probably best if I just block you though…