pinchcramp ( @pinchcramp@lemmy.dbzer0.com ) 40•1 year agoThat programming as a career means you’re going to spend writing nice, clean code 80% of the time.
It’s rather debugging code or tooling problems 50% of the time, talking to other people (whether necessary or not) about 35% of the time and the rest may be spent on actually spending time doing the thing you actually enjoy.
I may be exaggerating, but only a little.
AggressivelyPassive ( @agressivelyPassive@feddit.de ) 11•1 year agoIn my experience, you’re rather inaggerating. I’m not even 10y into my career and if I get to actually code for 2h a day, that’s already a success. Most of my time nowadays is documentation, meetings, jira, research and calls with the clients.
pinchcramp ( @pinchcramp@lemmy.dbzer0.com ) 3•1 year agoI think it heavily depends on the size and (management) culture of your employer. My most recent gig had me sit in way too many meetings that were way too long (1hr daily anyone?), dealing with a lot of tooling issues and touching legacy code as little as possible while still adding new features to our main product on a daily basis. Obviously “we don’t need a clean solution. We’re going to replace that codebase anyways, next year™”.
The job before that had me actually code for about 80% of the time, but writing tests is annoying and slows you down and we don’t have time for that. Odd how there was always time for fixing the regressions later.
I think it’s also a question of how you position yourself. Without noticing it, I’ve developed a kind of “will to power” in the sense that I want to shape the product we’re working on. So instead of just sitting in my corner and working on ticket after ticket, I’m actively seeking conversations with stakeholders to find out, whether it even makes sense to implement it as described in the ticket, or propose new ideas, etc.
Also, my mother taught me (by virtue of being completely untechnical) how to explain complex problems and systems in a way that non-technical people understand. So if “a developer” was needed, management often enough volunteered me.
I could pull myself mostly out of this stuff, but I’d get even more frustrated not being able to at least try to make things a bit better. So I’m putting on the headset once more.
anti-idpol action ( @pkill@programming.dev ) 2•1 year agoalso microservices in my experience worsen this sort of bitrot where the amount of usual duplication it involves means that even if you manage not to have poorly documented spaghetti magic that gets updated once in an eon in one service or two it still might be elsewhere and this
- discourages refactoring due to the duplication
- harms consistency
- encourages lousiness because your stuff might mostly work on a surface level with the rest of your system because you only expose APIs and don’t need to worry that much about how your methods will be called. Which might seem convenient to use and implement in an ideal scenario, but could easily become troublesome to debug if anything goes wrong.
abbadon420 ( @abbadon420@lemm.ee ) 3•1 year agoI really don’t mind any of it though.
pinchcramp ( @pinchcramp@lemmy.dbzer0.com ) 1•1 year agoDifferent strokes for folks I guess 🤷♂️
0xCAFe ( @0xCAFE@feddit.de ) English33•1 year ago“We’re going to clean up that code later.”
Dr. Wesker ( @wesker@lemmy.sdf.org ) English30•1 year agoThat you can just go to a bootcamp, and be good at or naturally suited for it.
That you can go to college and get a degree, and be good at or naturally suited for it.
Eh, I’m naturally good at it. I got shoved into the programming UIL group in school with absolutely no background in programming and tied for 3rd place.
But, I really don’t enjoy doing it.
coloredgrayscale ( @coloredgrayscale@programming.dev ) 10•1 year agoWhy are you in programming related communities if you don’t enjoy it?
I browse by all
Plus, I have to do light coding for my job (script writing)
I Cast Fist ( @ICastFist@programming.dev ) 27•1 year ago“Programming is just writing code”
Programming is, first and foremost, understanding what the fuck you want/need the computer to do. That means that some programmers (mostly analysts) may understand workflows and processes better than the people whose job depends on their knowledge of said things.
Daxtron2 ( @Daxtron2@startrek.website ) 9•1 year agoPeople don’t realize that as you get better at programming, the amount of code you write goes down. At least in my experience, my work day has shifted to 80% thinking about what I’m going to write and then about 20% actually writing it.
spartanatreyu ( @spartanatreyu@programming.dev ) 6•1 year ago1 hour of planning can save 10 hours of work.
1 hour of research can save 10 hours of planning.
Ephera ( @Ephera@lemmy.ml ) 26•1 year agoThis one’s a hot take, but: That Python is easy.
I’ve had to work with it in three projects in the past five years and I consider it one of the hardest programming languages, for anything but very short scripts.
You don’t get proper compiler assistance, unless you have 100% test coverage. You don’t get a helpful text editor. You don’t usually get helpful type hints in libraries you use, so you have to genuinely just study the documentation and/or code. You get tons of quirky behavior in the stdlib, build tools, async stack, imports. You get breaking changes in minor versions of the language.
I find writing code in Python extremely mentally taxing, because you just get so little assistance, that you have to think of everything yourself.
ursakhiin ( @ursakhiin@beehaw.org ) 12•1 year agoI think Python is easy to learn but difficult to get past the basics. I’m also not convinced that getting past the basics is even worth it in three long run. I say this as a person who has used all Python at work for roughly 70 percent of the last 15 years. My current position is moving to Rust and my last 2 positions were moving to Go. Everybody was happier.
lolcatnip ( @lolcatnip@reddthat.com ) English1•1 year agoYeah, when I was at Google there was a big push among the SREs to switch from Python to Go.
AggressivelyPassive ( @agressivelyPassive@feddit.de ) 11•1 year agoDynamically typed languages all suffer that fate. There’s a reason Typescript literally has that feature in its name.
What does help though is type hinting. You “just” have to enforce it and its fallout in your entire codebase.
Ephera ( @Ephera@lemmy.ml ) 10•1 year agoYeah, we invested a lot of time into type hinting and checking, but mypy would never exit without warnings and errors, because many libraries we were using had no type hints.
It was also just exhausting/cumbersome, having to write type hints everywhere, as there’s no type inference.But yeah, we always joked that someone should create TypeScript for Python – Typhon.
Rimu ( @rimu@piefed.social ) 5•1 year agoTry the PyCharm IDE. It’s really smart and helpful. The free ‘community edition’ is fine.
Ephera ( @Ephera@lemmy.ml ) 7•1 year agoI’m sorry to say this, but PyCharm is precisely what we were using. I do consider it the best Python editor, but it’s several classes below IntelliJ for Java/Scala/Kotlin or even the extremely new RustRover for, well, Rust. And I’d say roughly at the level of KATE (a non-smart text editor) with just the rust-analyzer language server hooked up.
It is extremely impressive what PyCharm manages to analyze in Python, but other languages offer similarly good tooling out of the box, or make such analysis much easier by having static types.
driving_crooner ( @driving_crooner@lemmy.eco.br ) 4•1 year agoI don’t know if i qualify as a full programmer, I’m an actuarie but 90% of my work is in python, 5% SQL and 5% excel. I love python because is flexible as fuck, I can connect to the SQL server, send the queries to a pd.DataFrame, process the information, scrap some webpage for adicional information needed, and finally export to an excel file that the accounting team can use. I don’t write fully functional programs, but small specific scripts for different tasks. R is another popular programming language between actuaries and statisticians, but I haven’t find anything that R can do, that I can’t in python.
SorteKanin ( @SorteKanin@feddit.dk ) 5•1 year agoI don’t write fully functional programs, but small specific scripts for different tasks.
This is exactly why your experience is different and you like Python better than many others. You are using Python as it was meant to be used and where it excels; for small scripts.
When people say they don’t like Python they mean that Python does a really, really bad job when it comes to larger systems. Static analysis becomes exponentially more important in larger systems and Python has basically 0 of that.
But as long as you stick to relatively small stuff (less than a few thousand lines), Python is pretty nice and fast to develop in.
Flipper ( @Flipper@feddit.de ) 3•1 year agoSo you are saying using python to write the server for a federated multimedia messenger is a bad idea.
Let me tell you, I’m shocked😲
anti-idpol action ( @pkill@programming.dev ) 2•1 year agoalso just plain readability. Indentation-based scoping is horrible for larger codebases. Maybe if it was a purely-functional language like Haskell where this sort of scoping works better and all effects are tightly contained. But most larger codebases tend to use python in OO way and that can get messy pretty quickly. Damn, if python had a piping operator like elixir that’d be of a lot of help, actually. Plus there is so much legacy code in a language that had e.g. ternaries long before adding something seemingly so fundamental as switch-case.
TehPers ( @TehPers@beehaw.org ) English1•1 year agoMight just be my inexperience with the library, but every time I end up with a pandas dataframe, I spend the next 4 hours trying to figure out the right sequence of index statements and function calls to get the data in the order I want. It always ends up feeling like I’m doing something wrong, and the only way to really tell is to run the code as far as I can tell. I don’t use dataframes very often though, and I’m sure it gets easier with experience.
ResoluteCatnap ( @ResoluteCatnap@lemmy.ml ) English2•1 year agoMy general dev experience is limited mostly to python but with pandas one thing you can do is set up a jupyter notebook so you can run just the parts you want until it’s working as expected, then you can move it over to your python script when you’re ready.
But working with pandas does get easier with practice. If you’re wanting to dive in a bit more, the “getting started” page has a tutorials section which features a 10 minute high level overview, a cheatsheet, and link to some community tutorials.
alsimoneau ( @alsimoneau@lemmy.ca ) 1•1 year agoI’m a scientist that has been coding almost exclusively in Python for the past decade and I strongly disagree.
Python is great at being the glue that holds everything together, and everything crunchy part of the program is being handled by a library anyways.
I code with two terminals, one for iPython and one for vim. And you don’t need anything else. The beauty of Python is that it’s not a language that is so full of boilerplate that you need an IDE to type it for you to be remotely productive.
Overall, Python is a language made to be used by people that need to make something that just works and don’t need to spend years learning programming paradigms and industry practices. Fortran and C are so unwieldy in comparison and everything more modern lacks the expansive and diverse libraries of Python.
SorteKanin ( @SorteKanin@feddit.dk ) 3•1 year agoI’m a scientist
And this is exactly why you like Python. You haven’t had to use it at a truly large scale. See also my comment here: https://feddit.dk/comment/5769585
Addv4 ( @Addv4@kbin.social ) 25•1 year agoThat if you know how to code, you understand how computers work and understand really complicated math concepts.
jadero ( @jadero@programming.dev ) 3•1 year agoI call that the “nerd equivalency problem”. I think it’s the source of much (most? all?) of the problems with software that comes out of organizations that are not programming shops by nature.
“We’re not moving fast enough (or, “I have this great idea!”), hire another nerd!”
The problem also exists within individual programmers (“sure, I can do that UX/UI thingy, just let me finish building this ray-tracing thingy”), but that’s just an ordinary cognitive weakness that affects us all (thinking that being expert in one field makes one expert in all). It’s the job of proper leadership to resist that, not act as though it’s true.
stevecrox ( @stevecrox@kbin.run ) 24•1 year agoTechnical Leads are not rational beings and lots of software is developed from an emotional stand point.
Engineering is trade offs, every technical decision you make has a pro/con.
What you should do is write out the core requirements/constraints.Then you weigh the choices to select the option that best meets it.
What actually happens is someone really likes X framework, Y programming language or Z methodology and so decides the solution and then looks for reasons to justify it.
Currently the obvious tell is if they pitch Rust. I am not saying Rust is bad, but you’ll notice they will extoll the memory safety or performance and forget about the actual requirements of the project.
LoamImprovement ( @LoamImprovement@beehaw.org ) 5•1 year agoI know they make a joke about Tom in office space being the one who brings the specs from the customers to the engineers - as much as it looks like he’s dead weight, there really is a skill in being able to explore the customer’s needs (and frequently manage their expectations of what the proposed software should be and do) and parse them into something more technical for the engineers, because you might not know how to program, but you’ve got a good idea of what the capabilities are because you communicate with the engineering team on a daily basis.
tatterdemalion ( @tatterdemalion@programming.dev ) 24•1 year agoThat a “working” prototype with no tests is just as good as a carefully-designed and well-tested feature. I see this happen so often that a coder puts a prototype in front of a product manager or exec and they are like, “this is exactly what we need, now! Ship that!” And then misery ensues for all of the engineers that need to maintain this piece of garbage. As managers pressure the engineers to build new features on top, they inevitably break fundamental parts of it, and without a confident leader to demand that tech debt is paid off, that product will consume the souls of many desperate coders.
In contrast, if you do it right the first time, there will be significant parts of code that never need to change, and the parts that do need to change will be much easier, because it will be obvious if it breaks the tests.
nilclass ( @nilclass@discuss.tchncs.de ) 6•1 year agoThat sounds super familiar :D
Anyway, a prototype is not a bad thing, if the managers know the difference. It’s easier said than done to “do it right the first time” if you don’t know how / what to build. Prototypes can be built to validate hypotheses and generally figure out what works, then build the real thing afterwards.
tatterdemalion ( @tatterdemalion@programming.dev ) 6•1 year agoYea I should have clarified. Prototypes are a great idea. The problem occurs when you say, “this is good enough we can improve on it as we go.” Yea good luck balancing priorities when everything breaks from tapping your keyboard too hard. You MUST NOT MERGE the prototype.
Ethan ( @firelizzard@programming.dev ) English2•1 year agoAs my first job out of college (when I didn’t know what I didn’t know) I was hired to build a bespoke inventory system for a manufacturing company. My prototype became a production system the second I showed it to one of the engineers. The next three months of my life were a living hell as I frantically fixed bugs on a live system. Lesson learned.
anti-idpol action ( @pkill@programming.dev ) 1•1 year agooh yeah and the overt emphasis by suits on frontend development because it feels more tangible. like yeah sure we can add a follow button in a couple lines of code… granted you want to allow duplicate requests by non-signed in users or users that block each other with no manual approvals support, no protection against CSRF and the followee not getting notified
Cyclohexane ( @cyclohexane@lemmy.ml ) 21•1 year agoRequiring a candidate to know a specific programming language is stupid. Nearly all of the commonly used languages in industry are similar.
It’s maybe more valuable to require knowledge in a specific framework, where knowledge is less transferrable between popular frameworks. Nonetheless, I personally rather hire an engineer that solves problems and learns flexibly rather than one that happens to know the right tech.
onlinepersona ( @onlinepersona@programming.dev ) English3•1 year agoIt’s not a black and white issue. “Jack of all trades, master of none” vs “expert of one”. Both have their place and I think it’s better to have a mix than just one or the other.
I’ve seen python newcomers writing code as if they were writing in another language. They don’t know about dataclasses, operator overrides,
__init__
vs__new__
, metaclasses,__init__.py
vs__main__.py
,@property
,match
, the walrus operator,or
assignments, or the common pitfalls of python like mutable defaults, type hints, and a bunch of other things.
Knowing a language in-depth helps write DRY code, avoiding common pitfalls, handling things better like debugging, profiling, and other tooling, and avoiding pitfalls of the language, which newcomers have to first learn, regardless of how their experience with other languages.A lot of stuff is transferable, for sure, but every language uses different idioms, covers different paradigms, and so on. It’s good to have at least one expert on the term to teach others, and to have people flexible enough to switch of willing to learn. Having only experts can mean a static team unwilling to experiment or use better programming languages or technologies. Having only beginners or mediors of a language can produce functional, but sub-optimal code. YMMV
frezik ( @frezik@midwest.social ) 2•1 year agoI used to agree, but now I’m not so sure. There are huge time savings in having someone already familiar with a specific technology. They’ve ran across an issue before and can quickly find the solution.
For example, I started learning Elixir a little over a year ago. I struggled with how to get it to change data in place, and the answer is that you don’t. You work with data in an immutable way; you make a copy with the change made and throw away the original. Once you get used to it, this works very nicely, and Elixir has quickly become one of my favorite languages. However, few other languages force you to work immutably, and nobody does it voluntarily. It takes a bit to get your head around it, and you’ll take a lot longer on any given task until you do.
neomachino ( @neomachino@lemmy.dbzer0.com ) 1•1 year agoI generally agree with this, there’s specific circumstances but for the most part its true.
I went from a C# position to PHP, to Python, to perl all with little or no experience with what I was jumping in to. There’s different nuances and the syntax might take a bit to get used to but as long as someone understands the how and why of what their code is doing that can be pretty easily transfer to most other languages. It’s all about the fundamentals.
CodeMonkey ( @CodeMonkey@programming.dev ) 1•1 year agoIt is better to find a developer that has experience with the language features you use rather than one that is experienced in the exact language you use. For example, I work on distributed systems in Java/GoLang/Python. We want candidates that understand how to write concurrent logic and stay away from people who are just Java web developers.
The big issue is doing a coding interview with candidates. We have a standard straightforward problem that candidates need to solve by filling in a stubbed out method. We have it in Java and have ported it to GoLang. If we have to interview a candidate who does not know either of those languages, we would need to find a language that the candidate knows and we know well enough to port the problem to. We would also have some difficulty digging in to design specifics like choice of concurrency primitives.
driving_crooner ( @driving_crooner@lemmy.eco.br ) 20•1 year agoThar just because you solved a particular problem in 10min, all other problems are going to take 10min too.
vause ( @vause@programming.dev ) 20•1 year agoRelevant XKCD: https://xkcd.com/1425
randy ( @randy@lemmy.ca ) 12•1 year agoAnd here I was thinking of https://xkcd.com/664/
rodbiren ( @rodbiren@midwest.social ) English18•1 year agoNo programming language, development philosophy, or technology can save you from projects and business lacking clarity. Your ability to communicate and be understood is as/perhaps more important than the quality of your ideas. Consistency is better than perfection.
CodeBlooded ( @CodeBlooded@programming.dev ) 15•1 year agoThe misconception that we’re the person to go to to fix your printer…
…I mean we probably can fix it, but it’s a waste of our time…
Worx ( @Worx@lemmynsfw.com ) English5•1 year ago10% of my ability to fix your computer is because I know the issue
90% is that I don’t panic at error messages and I know how to use a search engine
Cyclohexane ( @cyclohexane@lemmy.ml ) 13•1 year agoSome programmers are software engineers. They solve problems, sometimes problems with great ambiguity or non-straightforward solutions.
And some programmers are… code technicians? They understand and write code, but their job seldom involves problem solving. Often times, they’re asked to code an already solved problem, or mostly solved.
This is not a diss. I was in the second camp for a while. But it hurts your career to stay in that. So be careful.
monomon ( @monomon@programming.dev ) 1•1 year agoSame. Writing code is FUN! However that’s not the only goal there is. It’s a part of the puzzle. Perhaps it takes some maturity to reach that point.
souperk ( @souperk@reddthat.com ) 1•1 year agoTotally agree, I had the fortune to read Domain Driven Deign by Eric Evans early in my career. While, the book may be outdated, it helped me understand that my job is to turn the unknown or ambiguous into code. I find that much more exciting than being a coder.
This one might be a bit controversial, but has rung true in my general experience. Probably a lot of exceptions to these rules, but here goes:
You don’t really know a programming language until you understand a fair amount of the standard library and how packages/modules/dependencies work. Syntax is pretty easy, and any mainstream language will work just fine for solving basic leet-code style problems. But when you really spend a lot of time working with a language, you’re going to spend more time learning about common libraries and how to manage dependencies. If you’re working with a language like C++ or Java, this could also include build systems and how to use them.
Another precursor to being able to say that you know a language is that you should also be familiar with best practices (ie. how to name modules, how to write documentation, etc.) and common pitfalls (undefined behavior, etc.). This is one of the hardest parts about learning a new language in my opinion, because the language may not necessarily enforce these things, but doing them the wrong way can make your life very difficult.
owsei ( @owsei@programming.dev ) 2•1 year agoThat’s what I hate about javascript, it doesn’t warm you about undefined behavior, it just throws.
I used to not really care about that, but after learning C and Rust, damm, I wish there where result types everywhere
spartanatreyu ( @spartanatreyu@programming.dev ) 6•1 year agoSome small nits to fix:
-
C has it’s own undefined behavior.
-
JS has confusing behavior, not undefined behavior. Its specs are well defined and backwards compatible to a fault, making some things unintuitive and harder to learn if you don’t learn the history of the language.
-
Problems with both should be avoided by learning and using standard practices. (Don’t pretend C is object oriented, always use
===
instead of==
in js, etc…)
In complete agreement:
- Result types are awesome, all future languages should be designed around them.
owsei ( @owsei@programming.dev ) 2•1 year agothank you very much.
By undefined I meant the usage of undefined in the language, however you phrased it way better :)
-
Ethan ( @firelizzard@programming.dev ) English2•1 year agoCounterpoint: knowing a programming language doesn’t matter if you can solve problems. A competent programmer can pick up a new language and be productive within a few months. That is, a new language within the same paradigm - going from a imperative language to a functional language can be a drastic shift, but going from one imperative language to another is easy. If you can’t do that as a intermediate to senior developer, you’re not a competent programmer IMO.
The real skills of a good programmer are things like problem solving, debugging, understanding how to write readable and maintainable code, etc. Having deep knowledge of a specific programming language or languages is helpful and enables you to work faster, but if you’re only a skilled developer in the languages you know - if you aren’t capable of pivoting those skills to another language - you aren’t a skilled developer IMO.
Agreed overall, you will still be competent switching from one language to another, but intricacies and nuance matter a lot here. You may have enough knowledge to solve problems, but will you have enough knowledge to avoid creating new ones too? Like performance issues, or memory leaks, or other unwanted behavior? C++ is a great example here: someone that’s smart but inexperienced might just be dangerous enough to start writing classes with dumb pointers without overriding the copy constructors, and this is just a recipe for disaster.
I think it would take more than a few months to develop the kinds of experience that you need to be aware of these issues and avoid them. And while C++ is a very easy example to point out here, pretty much all languages have their share of footguns to be aware of, and it just takes time to learn them. A “deep knowledge” of a language is not just about being faster and more productive; it’s also about not creating more issues than the ones your solving.
Ethan ( @firelizzard@programming.dev ) English1•1 year agoI think the degree of footgun danger depends a lot on the language and the application. I agree that C and C++ are dangerous until you really know what you’re doing, though IMO most of the danger comes down to memory management and that’s a portable skill, once you’ve learned it. That being said, I don’t have a lot of experience with C++. C was my first language so I’m used to plain old normal boring pointers (are those “dumb pointers”?) and I’ve never understood why C++ needs 9 billion types of pointers.
Go has one particular footgun - loop range variables. Other than that, IMO high-level, garbage collected languages don’t have major footguns like that. My first job was writing a bespoke inventory system for a manufacturing company, and I wrote it in a language I’d never used before - C#. In five years the only major issue that had was due to my inexperience with SQL and had nothing to do with C#. And though I haven’t written nearly as much code, I’d say the same about Java, Ruby, Python, and JavaScript.
vrighter ( @vrighter@discuss.tchncs.de ) 9•1 year agothat doing more work, takes more time.
Gamers are especially guilty of this.
"that 2013 game runs at a smooth 60 fps. This medern game running at quadruple the resolution with raytracing sometimes dips to 58 fps on the same hardware. Devs must be lazy, they just need to add OPTIMIZATION to the game
onlinepersona ( @onlinepersona@programming.dev ) English1•1 year agoI don’t know what it’s called, but it’s a common phenomenon: available room will be exploited. It’s exactly why computers nowadays don’t feel faster than computers from a decade or two ago: they do so much more because they can.
Stuff like electron would’ve been impossible in 2000 or 2005: it’s just a behemoth in terms of computational needs and power consumption. Earlier computers would’ve struggled endlessly with it. Current hardware however makes it seem as fast as previous tech.