719 karma · joined March 7, 2020
I've got the reply "if you don't like it, stay off the internet". Well.
Also, I don't see why one would even consider using a framework if squeezing out every bit of performance from your hardware is that important. I can't imagine writing a Web app without some framework in the interest of time it takes to develop. Then writing a hundred of the same stuff again? You just have to ensure you don't use a bloated framework which is akin to not choosing a bloated library. Unless you are working on a device layer, it's not our job to spread things over the hardware. Unless you have direct access to memory, you can't do this anyway with most of the languages designed to develop apps. I think the primary goal of an app developer is to implement the business logic correctly and securely in a reasonable time. I agree with the OP that libraries should be preferred but I don't see a problem especially with performance in the domains frameworks are used.
If the 3-month notice is true and the compensation comes with that, then its still cheaper to let go now than in 3 months as there will be other costs like bonuses, expense claims for phone bills etc, other mandatory govt insurance schemes in some countries, more leave accrued. I'm not too convinced that it was all a nice gesture.
I don't mean, dogmatically follow unit tests (actually my statement wasn't predicated on unit tests). If you have a better approach that can validate the software is correct then I'm all ears. If you have a better collaboration tool than git, I'd be happy to try it. With all due respect, what I can't do is take your word for it that you can build software that works (covers all functional and non functional specs), and they continue to work as more code is added, and is worked on by more than one or two developers, and that you can continue to validate and roll out more software over the years even when the original developers aren't around. It's difficult, costly. It can work, it's just not the best way. The industry will evolve and come up with better tools and processes than we have today as we did before yesterday. Only thing I took from the couple examples you gave is that you've had the misfortune of working in some terrible teams. Though I still don't see how you'd be better off without the rest of the usual practices we have today. The guys who couldn't code the tests, I can't imagine them building a non trivial software well either. I'm not defending any one process. I just don't agree that we don't need any process, and that we should just write code that (seems to) works.
This doesn't mean that you were going to better off without git workflows, code reviews, tests. My experience has been the opposite. It's exactly where there's no good technical leads/technical discussions/code reviews I have seen this kind of mess. Each person goes on and do their own thing with no clear direction or architecture.
At the end of the day, for me, to stay sane in the face of this kind of nonsense(as in bad engineers - unfortunately there are those even at senior positions), so what if the button that could have taken a few minutes to change now takes 6 days if we are paid to do it? As a responsible engineer, you point out the issue perhaps with a proposal for improvement. If they listen, good. If they don't, fuck it. On the other hand, if all I end up doing is changing colors of buttons regularly, each taking a week, then for the sake of my career, just say no and move on - unless of course if the pay is so good that it makes sense to spend a couple years doing it - people have to do far more shitty jobs for less. And spend some of the free time to code like a cowboy :)
However, even I can see that a team would get burnt if they built an enterprise software the way I code my personal email client. The problem here is that people forget that building software professionally is an engineering job. Like other forms of engineering, there are processes and good practices to facilitate both functional and non functional aspects of a software and the building process. While the extra burden of version control, testability and extendability takes some of the fun away, I would have reservations working with someone who pushes directly to a release branch, does not write test and hardcode values instead of uaing configuration. It's about balance and realising that job is a job.
Im thinking of may be Rust or Go right now for more pragmatic reasons. Thank you for sharing your opinion.
The build time of C++ can be really long. I noticed it too.
Things like lack of generics and type system makes you repeat things quite a lot (e. g. It was pretty impossible to write a true ORM or a DI system in go). I found the interface system quite awkward in that types implicitly implement an interface if they have the same method signature was weird to me. I think method overloading wasn't supported either, if I remember correctly.
I think people who loved Go initially probably came from C. It feels a lot like C with better standard library, memory safety and fast compile times. I like Go for the same reasons actually. But until there's at least some way to write generic code, it's an awkward language to anyone coming from more expressive languages. I program in C# mostly which is an extremely expressive language with classes, interfaces, generics, expression trees, linq, delegates (akin to function pointers). Go is far behind other languages for application development, my two cents. But for systems programmers used to C which is a very small language, Go must be like a transition to paradise :)
I like opensource, I myself am a Linux user. I just like a world where perhaps individual devs can build nifty useful software that we pay a small fee for and use. This way the small guys can benefit. Unfortunately, the current state of OSS (which has changes since the early days) are concentrating more power in the hands of a few organizations.
Take Sublime Text for example. I like it that an engineer builds something useful, ask a one time fee for it and we pay something really affordable for it (while there was also a free version available). This way, talented software engineers could actually make a decent living without everyone has to build crappy software for an advert-based economy. So, IMHO, opensourcing the software is an act of grace and would be at the discretion of those engineers. To expect everything to be FOSS or perhaps even demand that, I find is detrimental for individual software engineers/small players.
I'm not fully convinced that data science with ML and more modern techniques are applicable across domains out of the box. I think there is value to be added if data scientists can specialise in domains.
If we take humans as an analogy, even with the kind of general intelligence we have, we need domain expertise to be able to have advanced intuitions and make predictions about the future. I believe this is true for data science as well.
I'm all for abandoning projects that makes no sense to maintain. But if this happens too often, then somewhere along the decision chain people are missing the mark on what's worth building and supporting. In Google's case, they should probably put a bit more thought into it before releasing something to the public. This situation, to me, is a sign of overconfidence among Google workers about their abilities. In humbler places, they do side projects too but before they start them there's a lot of discussion about the purpose of the project beyond the code and the value it brings. When I saw the list of projects Google had killed, most of those projects looked plain boring to work on and seemed like undergraduate projects. Then again, may be it's it's own strategy to build as many stuff as you can quickly hoping some of them might take off.
I do not look down on any programming language. What I meant there was that php is often used for Web applications. Not server side performant critical or security critical components or systems programming. There's also a practical reality that some kind of coding doesn't require too much regulation on how we need to write code. I realised that bit came out wrong but I couldn't edit it.
Substitute software engineering with any other engineering descipline with "I stopped worrying about best practices" and you will be able to see what's wrong with your approach. But then again, if it's php, your domain doesn't require too much care.
Title is just misleading, as is often the case with this kind of studies nowadays.
Trying to save my passwords is particularly annoying till I disable it.