An argument people use is that these systems help you later in life. I find these systems really hard to adopt and also find it difficult to work with people who expose these systems outwardly.
1,432 karma · joined August 5, 2016
An argument people use is that these systems help you later in life. I find these systems really hard to adopt and also find it difficult to work with people who expose these systems outwardly.
As a not very organized person, and having struggled with getting personal systems running, guides like this help quite a bit. I've only improved by taking bits that stick for me (https://www.hanselman.com/blog/one-email-rule-have-a-separat...). Anytime I tried a whole system, it failed to get going at all causing me more stress.
It was expected that extension maintainers would respond negatively to this. In many cases it presents a decision: do I port this to the new platform, or move away from Python completely? You have to remember, the impactful decisions leading us down this path were closer to 2008 than today when dropping Python or making it the second option to help people migrate, would have been viable for a lot of these extensions. There was also a lot of potential for people to follow a fork of the traditional CPython interpreter.
There were no great options because there are many variables to consider. Perf is only one of them. Pushing ahead only on perf is hard when it's unclear if it'll actually impact people in the way they think it will when they can't characterize their actual perf problem beyond "GIL bad".
Improving Python performance has been a topic as far back as 2008 when I attended my first PyCon. A quick detour on Python 3 because there is some historical revisionism because many online people weren't around in the earlier days.
Back then the big migration to Python 3 was in front of the community. The timeline concerns that popped up when Python really got steam in the industry between 2012 and 2015 weren't as huge a concern. You can refer to Guido's talks from PyCon 2008 and 2009 if they are available somewhere to get the vibe on the urgency. Python is impactful because it changes the language and platform while requiring a massive amount of effort.
Back to perf. Around 2008, there was a feeling that an alternative to CPython might be the future. Candidates included IronPython, Jython, and PyPy. Others like Unladen Swallow wanted to make major changes to CPython (https://peps.python.org/pep-3146/).
Removing the GIL was another direction people wanted to take because it seemed simpler in a way. This is a well researched area with David Beazley having many talks like this oldie (https://www.youtube.com/watch?v=ph374fJqFPE). The idea is much older (https://dabeaz.blogspot.com/2011/08/inside-look-at-gil-remov...).
All of these alternative implementations of Python from this time period have basically failed at the goal of replacing CPython. IronPython was a Python 2 implmentation and updating to Python 3 while trying grow to challenge CPython was impossible. Eventually, Microsoft lost interest and that was that. Similar things happened for the others.
GIL removal was a constant topic from 2008 until recently. Compatibility of extensions was a major concern causing inertia and the popularity meant even more C/C++/Rust code relying on a GIL. The option to disable (https://peps.python.org/pep-0703/) only happened because the groundwork was eventually done properly to help the community move.
The JVM has very clearly defined interfaces and specs similar to the CLR which make optimization viable. JS doesn't have the compatibility concerns.
That was just a rough overview but many of the stories of Python woes miss a lot of this context. Many discussions about perf over the years have descended into a GIL discussion without any data to show the GIL would change performance. People love to talk about it but turn out to be IO-bound when you profile code.
It is dangerous and is likely to cause a range of problems. The challenge is stepping away from that part of the work. It would seem the best way to do this is to progressively give up this direct work and mentor your replacement(s) possibly reviewing changes before quitting entirely.
It seems to be a personality thing with some people being unable to take those steps before being forced by circumstances. I love leaders to have curiosity about details and want to create the environment for great technical work, but that is a very different type of work that doesn't drive the same rewards (or dopamine hits.)
At least a big part of their success was containing technical by avoiding product debt. They had a clear vision and very tight control of their product which is different from 99% of startups. They were experimenting but not throwing any crap at the wall which was never cleaned up or iterated on.
There was a very strong product-engineering connection and alignment which is unusual. Misalignment there is the genesis of much tech debt. Many product features are thrown out with little iteration to get them right but use "shipping so we can iterate" as an excuse to throw them out to users.
I first developed coping skills for work situations in my first internship. Thanks to a great manager who recognized some of my issues and was able to give contextual help. After that my professional life was better, but I struggled in social and academic contexts. Eventually, I started to get the social/relationship part down but only by being forced to because I moved to another country for a job.
Without these events, I'm not sure I'd have developed these skills. I still struggle and eventually pursued medication. I suspect some people have an undiagnosed condition, but the majority have limits to their emotional development, challenges from their upbringing, etc. that are very individual to resolve.
Unless there is some forcing function, I think the majority of individuals will fall into paths which don't help them. Then it's even harder to get onto a path where it's /just/ a matter of "developing skills".
Marco seems like a very independent individual who wants to minimize dependencies on other people. He has mentioned in the past that he does get outside help on things, but this doesn't extend to other people taking ownership. At that point, he is managing people which doesn't seem something he wants to do.
All of this is orthogonal to Adobe's business practices. You should expect them to operate the way they do given their market share and the limited number of alternatives. I personally have almost moved completely to Affinity products, but I expect that Adobe should be better placed to execute products and for Affinity to be playing catchup to some extent.
FWIW I have a CS degree and got the material to review because I have had to answer questions similar to OP's. It's only after strong familiarity with Conery's book that I'd recommend moving to items listed on Teach Yourself Computer Science. Why? You are trying to compress years of learning while dealing with some struggles that don't have affordances in the other material. Learning is hard work and while the Imposter's Handbook will get you started, you need to dig in much deeper in a targeted fashion.
Going deeper in relational databases is one of the things with the biggest payoffs (see Conery's other book.) It is rewarding for the self-learner to go after advanced mathematics or other CS topics, but this is a harder path with less immediate career value.
If XML was removed, these specs wouldn't have been much better. The motivation of the companies sponsoring specs was to build something that sold more enterprise middleware and identity servers. This was never going to be attractive to the individuals working with IETF, or the people working on web standards who'd create WHATWG (I know SAML isn't their domain.)
Many readers here also won't be aware of how web services, SOAP, and XML were the AI hype of the time. These were getting pushed into every kind of solution. At the same time, the alternative options for document and serialization formats weren't ubiquitous, so having XML everywhere was somewhat pragmatic for the average developer. I can't imagine ASP (or early-.NET) developers trying to deal with ASN.1.
With web development, I've always thought that there is an element missing for many devs: design acumen and appreciation (I need better terms.) Just look at the site linked from this post and you see an attractive personal site. Most devs struggle with these aesthetic elements.
Desktop development is fairly constrained. As an example, devs can make good or bad decisions around use of the toolkit, but it's less of an open canvas than the web. A lot of the expanded scope of CSS can be more easily exploited if you appreciate the design aspects or have designers creating some target design for you. Putting these capabilities in front of devs without those elements doesn't lead to much success which is another factor driving sentiment.
Using https://github.com/bradwilson/ansible-dev-pc (public equivalent to ours), you can automate the setup of a Linux laptop or WSL2 environment under Windows. This covers a fair chunk of our dev team. Once you start thinking about making this work on macOS, it starts becoming quite a bit more work, but it's not terrible if management values the effort.
If you have people doing mobile and Windows desktop development in addition to Linux web apps, it starts to get much more complex. Maybe you can't offer a fully "pre-installed" laptop, but you can automate the time-consuming parts like a Visual Studio install.
From experience, you are going to encounter a lot of developers who struggle more than you expect with troubleshooting and automation of their work. This includes experienced devs. It seems to turn on interest and curiosity versus dev experience. It helps to create a checkpoint at onboarding where you make an effort to determine the best approach for them and know who accepts an automated happy path provided by you and who wants to handle things on their own (and perhaps fails). You can then report on the general pattern of issues to management and prioritize ways of improving your happy path build so they don't reject it.
What you describe is great from the dev perspective when you have experienced devs with an interest in automation/tooling. From the company (or other dev in a larger organization) perspective, it can become a bugbear. Having some minimal dev environment that is accepted across the whole dev team is helpful for onboarding, or rebuilding machines when something seems off.
In most organizations, devs are rightly fearful of the pain that a rebuild will bring. That pain can and should be mitigated by the IT team with empathy for devs, scientists, or whatever audience the machines are for.
I wouldn't advocate for trying to achieve an ideal setup, but rather some baseline that isn't offensive e.g. if you put VS Code on there make it a checkbox option with other tools. Start with things that take a long time to download and install. Many of the personal tools and configurations are relatively small compared to the Visual Studio install on my current machine, or Xcode on my Mac.
Thanks for sharing Jetify. That's why I love these threads on HN.
This is why startup people straight out of school are often unencumbered with ideas that impact their mission. If you go into a large organization, you are exposed to a reality that can distort your perspective. It's a myth that people can't move between large and small organizations, but the differentiator is their awareness of and desire to embrace the current circumstances. Many end up preferring the luxury and ease of large organizations and fail because they don't make the switch. Many startup people don't make the move in the other direction (even if they are exceedingly successful and it might be practical move.)
Similarly, a desire to only focus on engineering is something you feel will inhibit your ability to run a business. Over time you might be able to discover ways to reduce your hate for the other work. People here love to prescribe advice for situations like this, but it's really hard to give good advice without knowing a lot more about you.
AUKUS is one of these huge deals with the results coming many years after huge investments creating great uncertainty. That makes it easy to attack politically.
EDIT: What's missed by the original commenter is that Australia was already investing in submarines from France. If delivered, there would be similar outcomes. The project had just as much uncertainty around it and was off-track when AUKUS was announced.