gilfoyle
The english language helped, sure, but it's the lack of opportunities in their own state and the higher education levels that created the conditions for the immigration to Middle East. Kerala also had a long history of trade with Arabs.
Sure, you can be immensely impactful being a people leader and a conduit between business and tech without ever having written any code. But you can't call yourself CTO if you haven't written any software yourself without diluting the meaning of the title to homeopathic levels.
Courage to be Disliked - it's helped me put different life problems in perspective.
Mountains Beyond Mountains: The Quest of Dr. Paul Farmer, a Man Who Would Cure the World - This has been on my bookshelf for a long time, I just picked it up recently, looking for meaning after witnessing covid devastation around. Just a couple chapters in, but it is a really inspiring book.
Consulting companies tend to optimise for output (delivering on time, code quality, reported bug counts, number of stories, sprint velocity etc.)
A full time product engineer has more skin in the game and freedom to work across the stack while consultants might be restricted to non-prod environments and therefore limited access to infra/devops work and prod support/troubleshooting. YMMV.
There is a huge learning in supporting what you build and not getting that experience can be a limitation in consulting.
However consulting offers you the opportunity to work across domains, tech stacks, work with new people, travel etc every 1-2 years whereas in product companies a commitment of 2-3+ years is desirable.
Finally, it boils down to quality of the group of people you are going to work with. A consulting firm with higher density of talent would be more interesting than a mediocre product team.
Thankfully, Java ecosystem has learnt from other languages and frameworks and with Java 8 onwards has addressed some of major pain points For e.g. lambda, streams, vars, text blocks, records etc,
On the other hand, Shopify and Dropbox that used Ruby and Python heavily had to invest in type checking to bring back some sanity and this is evidence that beyond a size of code base, static type checking is worth it.
Considering these, I find Java to be a very good option to build stable enterprise applications compared to Ruby or Python.
Then there is accidental technical debt that is mostly due to lack of design skill / judgement that results in code smells, spaghetti code, poor abstractions and a codebase that sucks the life out of everyone.
When most people write about technical debt, they refer to the former while it is the latter that is much more costly and prevalent and yet, avoidable.
https://craftwork.design/downloads/method-4/
It ships with many layouts, blocks and components in React that you can mix and match for building landing pages. If building a page from scratch isn't in your wheelhouse it's quite useful to get something out quickly.
Mobile app development used to take a lot of effort with separate builds for iOS/Android and low code reuse. React Native changed the game and made building mobile apps easy and much less expensive.
Gitlab has been a fully remote proponent going back a few years and these persistent reliability issues add some doubt to that model - even if there might be altogether other issues in play.
However, it is essential to keep in mind why these things are done and not just cargo cult them.
I have felt Scrum is cargo cult agile which helps non technical managers retain power post "agile transformation" in the form of "scrum master". Just that title changes the power balance in meetings and kills the spirit of what they are meant for.
If it is due lack of social contact (due to working from home), try hanging out with friends or acquaintances everyday. It's a good idea to do that anyways.
Lack of exercise and exposure to sunlight can be a factor. Being outside on a nice sunny morning really cheers me up. Carve out time to walk in a park or in the midst of nature.
If the work isn't interesting, try to see if there are other places you can contribute and ask for it. If you can also identify a interesting problem worth solving then you can own it and run with it.
Lack of appreciation at work or from colleagues can also be a factor. If that is the case, acknowledge that many are also going through a rough time at this point. Perhaps you can help set an example and try influencing the culture a little bit. For e.g. an attaboy on a solid PR to a colleague or engaging in conversations outside of work before start of meetings.
Its actually not unusual to have technical cofounders who have no prior software engineering work experience.
Having one place for chats, documents, tasks is great. Its fast, simple and real-time!
A lot of these large IT companies relied on long term maintenance contracts for infrastructure and legacy software with unnecessarily large teams on self serving time and material (T&M) models. But these days, even large enterprises have to innovate to stay in the game and their experience with top end Agile consulting firms made them realize that you can do with much fewer people with automation and hiring better. On the other hand, the large IT companies got stuck with their old model and without training and experience on challenging projects, the talent atrophied even while having to eek higher salaries every year due to inflation and talent loss to startups and others.
However, the numbers being reported so far aren't huge compared to the employee sizes of these companies. For e.g. 5% layoff would actually be a reasonable trim on an annual basis. In that sense, the carnage hasn't started yet.