* Depression and Anxiety
* High blood pressure
* Weight gain
* Not having any idea how to simply relax
* Friends were more or less entirely from work
* Loneliness
At the end of the day I didn't want to go learn more stuff. I tried like hell to just gain my life back and failed miserably. It wasn't until reaching basically the bottom that I found a couple things that helped me:
1. Blood pressure medication was a must, I'm still trying to determine if this is stress related or a genetic thing.
2. Meditation. I found I did a ton of thinking about the future, worrying about the past, and just in general not being able to live today. I still struggle with this, but meditation and mindfulness have helped me a lot in trying to be in the present rather than past or future (depression/anxiety).
3. Time off. Though mine was sort of forced and forced to be longer due to COVID-19, I found time off helped, but since it was unplanned financial concerns kept me stressed out and I'm still trying to recover financially now.
If an employer wants me to continue upping my game they will need to give me the time to do it while I'm working. Within reason. I'm not expecting like weeks or something, but I just won't give up my free time anymore, it's too important to my health.
The sad reality is I know this is something an employer will tend to look down on. But I've found that happiness is not work, and work is generally not happiness. You have to have happiness outside of work and they need to be distinct separate things. Work, fundamentally, is about paying for the things I need to live so I can enjoy myself. I've found I don't need fancy toys or an expensive house to enjoy myself. I don't have to live on a lot of money.
Anyway, a little long winded, but your comment hit a chord with me.
On top of this, little kids are home so productivity is hard. I do nothing but sit at my desk trying to close tickets. Stress level is through the roof, gained 20 pounds, no time with the kids.
It is not great.
A few suggestions, no idea if they'll work for you but maybe you find something in the list or one of them gives you an idea.
1. Meditation. Even if it's just 5 minutes a day. Most of the apps have free trials. I really like 10% Happier but all of them are reasonably good.
2. Journal. This is a good way to just snapshot your feelings and stuff. I'd suggest writing it on paper as opposed to using some form of technology. Take 5 minutes a day and write.
3. Go for a walk, maybe with the kids? Time with the kids and good for your health. Even if it's a short walk, it's something.
4. Try to find one simple way to improve each meal you eat. Can you reduce the salt? Can you swap in something healthier for that unhealthy bit?
5. Find a lightweight hobby you can do a little bit each day. Maybe it's building lego, maybe it's reading a book for fun (and not work), etc.
6. Get enough sleep... this is important. Sleep is vital and without enough of it you just set yourself further back.
I know you said time is tight, but the thing is you have to try to make time for things will get worse. Start with 5 minutes a day. Most people can find 5 minutes in their day.
Good luck. I hope you find some small ways to improve your life. Ultimately for me not working that job was better for me. This is a terrible economy though so I get that you feel stuck. When it starts to improve, take the time to find something that's better for you.
This seems to be against the spirit of most systems. If a company has a "required weekly point total" it seems it would be a race to the bottom as developers start inflating point values. Also, if "required weekly point total" needs to go up over time, and it isnt through improved methods, then that will also lead to point inflation.
At that point, the points mean nothing because you can either use them to honestly estimate projects, or you can weaponize them to churn developers (in which case you cant use them to estimate any longer.)
The planned amount of work is established via a number of tickets, each containing a point value in vague terms of difficulty/time. As you complete these tickets you tally up points. While this system is quite efficient, I'm also starting to have doubts as it could tend to lead towards gamification. Analyzed from a narrow scope/from manager or director's perspective, can lead to simple conclusions about the employee. For example, John is a better worker than Mary because for the past 5 sprints, John's point total was 130 while Mary's was only 100.
Your gamification example and using agile velocity to rank individuals is it’s own dark pattern too. The team should be the unit when doing agile, everyone has their strengths and weaknesses, but ranking due to to ticket closes is lazy, and so many factors that increase team velocity. For instance just having someone on the team who can tackle the bigger ticket can hugely improve team performace, as can having someone good at closing lots of little tickets. Neither is necessarily more important to the team, but having them both can be really effective.
I can tell you from experience that point quotas however it’s measured is its own mistake, that will lead to substandard teams. I was lucky enough to have enough clout at a previous job that every time management tried to go this route I was able to push back long enough that general productivity had a chance to improve without this sword of damacles causing morale problems.
And if you work for a place that has billable hours, I’m sorry. Much of my advice, while applicable, may be trumped by needs around client billing. Hopefully you make enough money to deal with this kind of stress...
I work with multiple groups at any given time and all of them end up following many of these patterns. Through one proxy metric or another, agile systems become bad accounting and metric systems that are used to pressure developers to the point of burn out and or leaving.
For management, the goal is to push more efficiently from a fixed salary. From their misguided perspective, they're already paying you $100-200k+, so they own all of your time. The more they can get you to do over 8 hours, the less they're paying per unit (hour) of labor. This leads to high turnover, burnout, poor products, and is ultimatelt passing costs off to employees.
At some point, for many, time investment vs compensation can even out to working a fulltime and decent full-time and part time job (12 hours a day). The employer has managed to disguise this through all sorts of deceptive means. The employer may be ignorant that fact, they may (genuinely) think they're just pushing you to work a full 8 hours or so, but it's more common than people seem to want to admit. And ego in software development and widespread imposter syndrome for newer developers just perpetuate this problem.
New developers won't admit when a request is absurd, they assume they're slow and pickup the slack. They also are trying to gain entry to the market so they're willing to sacrifice their time in hopes to jump ship for a less toxic environment with higher comp to time ratio. "This is just temporary." Ultimately, that mentality creates an expectation and experience only buys you so much efficiency in certain situations. Those new developers provide positive reinforcement to business managers that "this is the way."
As that happens at more and more enviornments, work to life balances become toxic at more and more places and the end result is, those new developers may never get a chance to escape that toxic balance because they've enabled it, everywhere, through fierce competition of ego.
I learned this at my first job when a very senior (nearly retired) developer working in development since the punch card era seemed to only be producing a little more than I could in a day. I thought, well he must be barely working, lazy or incompetent because I'm a newbie and not too far behind him. "This guy supposedly helped contribite to the development of quantum theory, write some of the first computer simulations for this, and friends with nobel prize winners? What a sham, his skills must be so dated!"
So for awhile, I started churning out more progress than him but he never changed his pace. At some point I realized I was investing a lot of extra time for no apparent reason. I didn't get paid more. I got some "brownie points" but ultimately, I realized I was undercutting my manager and mentor by using my free time and at the same time, creating an expectation of my production rate that required more than 8 hours of work. I was sprinting in a marathon and only harming myself by trying to be competitive and show I was as good or better as this relic developer. It turns, out I was just unwise, and he was light years ahead of me at setting realistic expectations. Through the rest of my career I realized he had created the most realisticand accurate time estimates for development timelines I've encountered and created a work environment that was well balanced for everyone and kept his boss happy, all while no one was stagnant and still developing professsionally.
If there is company-wide point tallying, it will lead to gaming and point inflation -- at which point the benefit of rate estimation will be lost.
One could call it metrics-driven development.
Anyway don’t mean to preach, sounds like you’re having a tough time. Sorry about that hope it gets better
It's stupid.
Some of this comes from team dynamics: you all have to together commit to not working every night to avoid burnout and competing with one another.
The move from estimates to story points is actually a part of this compensation already, companies pretend that story points are about giving the developers more freedom to our faces, but actually they are about taking our estimate that something can be done in a week and removing the word “week” so that it can be estimated as a couple days’ work instead by our supervisors.
The fundamental process is already, at most agile shops I have seen,
- I the dev am going to build in some unconscious safety buffer by giving an estimate that I'm 90% or 95% confident in,
- I am going to give myself more safety buffer consciously by doubling or tripling that estimate when I communicate it to my boss,
- my boss is going to give us even more safety buffer by lumping together all of our tasks and then adding another 50% of time to that
- and then they are going to give it to their non-technical bosses, who are going to survey this estimate for the project and insist that it needs to be done in 25% less time, it is urgent, we need it sooner than that.
Story points allow a bunch of this to happen without explicitly contradicting anyone. But the basic problems is much more fundamental and it is that management and engineering are being phrased as having opposed interests. This is a basic failure in any negotiation: once it turns into a zero-sum game, everybody loses. In turn, there is a set of books that pinpoint say deeper problem, as being focused on controlling costs rather than driving revenues—which we see in these story point quotas, gotta make sure you get your money's worth from the dev team.
Name the company so that no one else suffers needlessly by tying their ability to provide for their family to said employer. That sounds like a terrible situation for anyone to be in.
That's not an employer you want to work for, and in the end, all they will succeed in doing is hiring kids who don't know any better, and driving away skilled talent.
Could also be Vitamin D deficiency, which is probably common among developers.
Take your Vitamin D supplements, a few thousand IU a day, probably more if you're not White. Get sunshine. Sit by a window.
It's particularly critical for men's health as Vitamin D is critical in the proper production of testosterone, as well.
That said, I would guarantee that you're better off with that 1000 IU than with nothing!
It's sad that this is what continuous learning for software engineers has come to mean. Don't do that! Learn to express different and deeper ideas in the technologies you already know. Programming is a huge world. Maybe you have truly tapped out line-of-business CRUD apps, but remember every line in the CS course catalog is a whole universe unto itself.
Operating systems, distributed systems, databases, graphics, embedded systems, HPC, etc. Pick a layer of the stack, understand it, and move it forward a little.
You'll notice that many of these worlds have completely skipped the Javascript framework treadmill, and K&R C from the 1970s will get you a decent part of the way there.
I mourn the time I have to spend re-learning CRUD because it distracts from this mission.
In other words, become an expert at solving specific business problems with technology, not a technology expert looking for business problems to solve.
I was there a little over 10 years ago at 35. I belatedly learned how to play the game. Until my current job, it was all about resume driven development and job hopping the minute my salary or what I am doing at my current job got out of whack with the market.
The reality is that software engineering automates software engineering jobs the most. As a result, people in this industry do highlight the importance of not neglecting your skillset.
However, I wouldn't take that as them trying to maximize their revenue. They've simply found that they need to do a deeper analysis on skills to not get automated out of a job.
> All those years of missed revenue add up quickly
I'm only talking about money here
But, if you are working for less than your fair market value, you’re providing the lifestyle that your company’s owners are happy with.
I'm not European, but I imagine that this isn't the case in Europe as it doesn't have the same culture around work.
For example, while landlords aren't supposed to raise the rent by more than 2% per year, I've had my landlord surprise me with a 5% change, but moving is too expensive to realistically consider [1].
Factor in all the additional costs of living, and if you don't get significant raises every year, you're going to fall further behind each year and be unable to afford a family, a house, or an emergency.
It's not great.
1 - When I moved to a good neighborhood in NYC, I had to pay a brokers fee of 15% + moving costs + up front costs to the landlord. Say my rent was 3k, this would be 5400 (0.15 * 3000 * 12) + ~500 + 9000 (first + last + security), or approximately 15k just to move into a place you don't own.
Rule of thumb for me in my career is I expect at least a 5% raise yearly to account for cost of living and inflation of currency, otherwise, like you said, you'd be losing money YoY.
Thankfully, I've gotten many > 25% raises throughout my career. It's possible, but it's rare, and jumping jobs usually gives larger pay bumps.
My mortgage is less than $2200 for a 3100 square foot house brand new build and that wont go up besides property taxes and insurance.
(Fortunately, this is a good employer that realises what the reality looks like and is willing to offer me competitive raises to make it a doubly mutually beneficial arrangement.)
That being said, I was quite content with my pre-Covid salary which was pretty much average for a top end individual contributor locally. But I did need to make at least $20K more over in two years.
Then Covid happened, along with pay cuts and the local market dried up.
But now working remotely for BigTech means my base salary is a little more than it was pre-Covid and RSUs+Bonus is pure gravy that goes directly to long term savings.
It also meant my wife didn’t have to go back to work in the school system with a Covid going around.
I know someone who applied for a similar role (one level up) at Amazon who lives in MiddleOfNowhere Nebraska and he made about the same as someone who lives in Seattle.
There was no harm in trying.
Improving soft skills isn't the same as playing the career development game by job hopping. Soft skills are as much a part of a developer job as programming. I'd actually argue it's the harder part.
Resume driven development often involves not giving a damn about what you're actually trying to solve, and trying to make what you're doing sound as impressive as possible to onlookers who have no clue what you actually did. Complicated architectures, hip technologies, fancy percentage based "improvements", it's all bollocks.
I agree largely that Western society has created a work culture where working for "the man" is not a desirable thing to do; employment, by and large, should not be the purpose of our lives. There are so many other things, like social life, family, sports, playing the guitar, and so on, that humans can do so well, but because of the capitalist structures that have been put in place where the rich get richer and the poor get poorer, it's not hard to understand why this kind of approach to employment exists.
So? It gets them hired and at better rates than those who accurately estimate the size of the projects to boot.
Companies need to stop rewarding irrational behavior, but right now lack the right feedback loops including investors willing to "Venture" capital into a losing business, passive + TARP-like investing driving asset prices up despite inherent risks and bosses who care more about politics/appearances than facts.
The choices are either have relevant skills to keep yourself marketable or be willing to do the “leetCode monkey dance” and remember how to reverse a binary tree on the whiteboard.
What other reason would I go to work everyday?
So now I have a job that pays below market rate but leaves me with a lot more time, in which to write my novels. I have more than enough money - more money won't make me any happier, but less discretional time will certainly make me worse off.
There is no such thing as having money to burn at the middle-class level unless you want to live on peanuts when you're in retirement.
When I say 'enough money' I don't just mean enough money for current expenses. In my opinion, there really is an amount of money beyond which you're probably just adding a measure of unhappiness to your life, if you're making money your first-order objective.
By focusing on money you can actually reduce your overall burden. In my humble opinion this far and away beats taking some low salary job just to get more time.
While you are busy not being concerned about money. I bet your employer is glad to be getting you cheaply.
And with this being both my abs my wife’s second marriage didn’t do us any favors.
My base salary now is the same as it was pre-Covid pay cut and was more than enough to reach our short term needs and slowly meet our long term goals.
The RSUs+Bonus goes straight to long term goals - paying off the mortgage, cash flowing college for my son and saving for retirement.
This is kinda of where I am right now. I still enjoy programming, but its becoming more and more apparent that I should have kept it as a hobby and pursued something else as a career.
That's the thing - this is much easier to do when you're financially independent. If you have kids, and have to put them through school, and maybe have sick parents to care for - costs can add up fairly quickly; and it's easy to find yourself in a position where you can't lose your job, which is a lousy position to be in.
Interesting part is - it can also be easier to choose what you work for when you have more money (or at least that's been my personal experience so far). A different version of the "rich getting richer" dynamic, basically - it's easy to say "no" to stupid things, to avoid or leave crappy jobs. Also if you're highly paid that often means you're listened to/ your voice has some weight - so chances of working on stuff that delights you increase significantly.
(NSFW:Language)
Japanese has a nice word for it, "Ikigai".
I don't mind working. I would just like to do it less. A few years ago I dropped to part-time in order to be in a grad program in CS. I found that 25 hours provided me with the perfect life balance.
Whether making a positive change to the world is in the front or back seat (or in the vehicle at all) will depend on company culture and may even differ within a single org.
I make good money. I work 10am-5pm every day. I don't make as much money as people who are more career oriented.
But I also save 50% of my paycheck even factoring in that I have a wife and three kids, and my wife stays home with them. What's the point of chasing more money? If anything, I'd like to scale back, but that's not the easiest thing to do.
I then job hopped when my current company was either not keeping my salary at market rates or were getting behind technologically. I left one job that had two products - a legacy PHP product and a new C# project that was using then current technology.
The C# product wasn’t gaining traction after two years, raises were anemic and they moved everyone to the PHP product. There was no way that I wanted to spend a year doing PHP. I left.
But the smartest but riskiest move I made the next time I was looking for a job was to leave a full time job for a contract to perm where I would get the chance to build a development department and lead two green field projects.
That’s where I first (belatedly) learned about AWS and discovered how much “cloud consultants” made.
Once those two projects were done, I self demoted to a senior developer where the newly minted CTO wants someone to make the company “cloud native”. I jumped on every single project and took the lead on introducing AWS services.
Just from working at those two companies I was able to get my current job.
I wonder if this will keep me stagnant in my programming chops. But at the same time I realize that expanding the chops is diminishing returns for my life from all angles, including satisfaction and finance. I have hobbies, families, communities that I serve and are expanding other non programming skills.
That being said, at the same time I also kinda don't know what is fun anymore about programming. I think for me, creating real stuffs that real people can use is always fun, but at the same time I don't have ideas. Many (useless) ideas are already reiterated over and over again by people posted on Github/Reddit.
I tried to go deeper into a specific implementation, like for example database engine or compiler. But I realized that wasn't as fun as I thought it to be.
In terms of programming, I always liked learning programming languages, but it gets old real fast. Once that is over, I don't know what else should I do. I'm thinking of learning OCaml next. Or maybe I should try other field of programming like game development. Or maybe I should just be content not doing any programming related hobbies anymore and just stick with my other hobbies.
Currently just doing 80's clones for fun and practice.
This is a side effect of having non technical managers. They cannot judge your technical skills beyond a certain point. They can judge your people skills and domain knowledge. They reward improvements in what they can judge.
The above doesn't apply in tech companies and in tech hubs. It applied to me when I searched for jobs in a relative backwater only (and as somebody who wanted to advance technically it was frustrating).
This is why I think you'd be more likely to find expert beginners in Maryland or Singapore than in San Fran or New York.
In Singapore if you previously worked at Google you were golden even if you were a goddamn moron and technical tests were done incredibly badly or not at all. I could see why people didn't improve their technical skills and why expert beginners were omnipresent. Nobody was going to reward them for it.
In London that sort of thing exists too but companies that interview on merit rather than pedigree did at least exist and weren't extremely uncommon.
I have limited experience of SF but I expect it is more like London than Singapore.
Leetcode was common in Singapore, because if you google programmer questions that's what comes up.
DC's a tech hub, people from SF and NY just don't realize 'cause they don't know 'bout that government contracting ecosystem.
I feel like the article and the hype cycle push us towards the latter rather than the former. Which is awkward because that seems like a good, concise definition of expert beginner: someone that has 1 years experience repeated 10 times.
Of course, it can pay well to be certain kinds of expert beginners.
I haven't found a person who never left for 20 years who was hella good at their job yet. I know there must be some though.
This is definitely my feeling. After awhile, you've created most the types of functionalities and at some point, you start to see a lot of the same functional outcomes from shifting technology and shuffling abstractions. At that point, it's literally just the tedious effort of learning some new abstraction someone decided to create and some sensible flow within their set of abstractions from start to functional product. You end up dealing with slightly different processes that require tedious time investments to suss out.
Sometimes it's a useful shuffle. You gain a more rapid development process, things are easier, you gain additional functionality than previous approaches for similar efforts. A lot of times it's literally just "ah, new shiny" and you can't be bothered to deal with "ah, new shiny" with your free time as you felt you had to as a beginner/novice (spending several weekends and evenings or so of your free time). You've also, through your career, been forced to deal with these transitions due to someone else's decisions and been burnt multiple times learning to do the same thing slightly differently because someone else in charge or a group with momentum was sold by new shiny.
At some point you learn to assess new shiny before you invest time into it. You've seen the marketing tricks, you've seen the tech industry dazzle with ambiguity/complexity tricks, and you frankly would rather go exercise, spend time with family, or do anything else but be trapped investing personal free time due to some business scheme. Unfortunately, a lot of other people haven't learned to objectively assess new shiny and fall into the marketing and ambiguity traps. It may be business leaders, it may be younger developers eager to 'improve' with new shiny because it's going to be "paradigm shifting," etc. Ultimately, momentum builds and you either join the club being sucked into new shiny (where a lot of resume driven development starts, IMHO) or are left behind.
It's amazing how people continuously fall in these silly traps. I'm not saying all change is bad, there are some improvements and some tech has to be kept current to remain interoperable with other tech. I am saying that a lot of it is an absolute waste, and this is why you have these 'Expert Beginners' -- those who realize outside of tech, the vast majority won't see imporovements and inside of tech, the improvements for adopting a new technology are often questionable (if even existent).
I don't know, maybe development should be individual thing. Less bureaucracy, less politics, you get to control more. Besides other human can be finicky.
These days I rather be full stack dev.
Good thing is technology, due to non stop advancement, inherently enables individual to do more and more.
Most often I found that bringing on junior developers and mentoring them very closely brings about a very strong team bond. These developers also inevitably become very productive pillars of a team.
Of course, there's always going to be a place for solo work - by teamwork I don't mean constantly pair programming (although doing it a little bit is a good learning experience for fresh grads) - I just mean collaboration, communication, the like.
The truth is organizations only respect you for the things you do well and that an organization thinks is important. (So if you are great at documentation for example, and the organization doesn't prioritize that, don't be surprised that no one cares. Etc.)
Doing things you are not very good at or don't have time for only damages your brand. Saying no is also a way to test the waters about how much what you are doing is valued. Imagine part of your job is X, and someone says: "Can you do Y?" You say: "I can't I am working on X." If they say do Y instead, its a hint that either X isn't that important or people don't think you are valuable to it. Find that out!
People will waste your time with meaningless or unimportant work. It is one of the ways that they tell you that they don't really value your contribution. Or not. The way to find out is to try no.
The biggest improvement I ever had as a developer came from reimplementing the same thing in Lisp and OCaml that I previously done in Java. It was quite eye opening to see how much more concise I could be if leaving the mainstream languages and started to use something more advanced (also niche at the same time). After having discussions about this with me peers who completed formal education in CS, they explained to me many concepts that I was not aware of and turned my attention to functional programming and ML languages in general. As of today I am even more convinced that doing the same thing in different languages / environments helps me understand the problem domain better, select the right tool for the job and become a better engineer.
> The older I am the more I'm convinced that development is not individual thing - it's a team sport.
I agree. We usually do these implementation exercises as team work.
> they realize that that to learn how to do the same thing with 167 technologies is not a real development
is quite an arrogant view to take on new technologies. It assumes that the sole reason people use new things is a combination of ignorance and boredom. There may be some of that involved in some cases, but even re-inventions of the wheel usually come with a fresh perspective and incremental improvements over the last time. More importantly, knowing the technology of the day allows you to relate to and collaborate with others, which is most certainly not a waste of time.
Turning down applicants who have the above mindset isn't ageism.
Or deploying stuff over HP-UX Vaults, J2EE/JEE containers, mainframe language environments, VMs, Docker, k8s, lambdas (CGIs just got rediscovered),....
A different case would be rewriting your Angular app in Vue just because the latter is more shiny.
Slightly OT, but I'm curious why that is?
Not only is the language open source, while during Sun days it was only free beer, there are several contributors, and Microsoft has acquired jClarity, started contributing to OpenJDK, gives parity with .NET tooling on Azure, alongside Red-Hat supports Java on VSCode.
Ah, even Java has had more talks at Build 2020 than F# or VB.
The only uncertainty is from the anti-Java, Oracle hating crowd, for everyone else, companies using IBM, Red-Hat, Adobe, SAP,.... products, it is business as usual.
If you've decided ahead of time that it's a drudgery, you're only going to make yourself miserable. You don't have to spend all of your free time on it, but you do have to remain flexible and open-minded. You may as well try to find something there to enjoy.
As Alan Kay perfectly puts it, fashion driven industry, and naturally one must keep themselves fashionable.
So up one goes rewriting that working WCF service into gRPC, because fashion.
But is ok, after all someone needs to pay those consulting rates and keep projects rolling, book industry happy with introduction and best practices books, and new themes for conferences, and most importantly blog posts with postmortems regarding technology migrations.
a) Atrophic to one's career
b) Just a generally miserable way to live as a programmer
I don't believe things are so bleak, and I think people would benefit from being open to that possibility.
Career growth after entry level rarely hinges on acquisition of technical knowledge. If anything, technical knowledge is the easiest to acquire which is why entry levels can claim it without much work experience. Organizational navigation, team work, delivering actual results, knowing how and when to apply those skills (and when not to) mostly come with experience, and those are going to be the determining factors for promotions beyond entry levels.
> b) Just a generally miserable way to live as a programmer
I would argue it is more miserable to not have developed those tacit skills so that keeping up with the latest and greatest is the only element of competitive advantage to stay relevant. I would also speculate this might be the reason why juniors tend to over-emphasize the latest tech as the greatest tech, because they don't think they have anything else to be competitive in the job market.
Curiosity is not an algorithmic virtue, it doesn't apply to every case. It needs to be tempered with a dose of conservatism to deliver results in real world.
I think part of the problem is that some fraction of "new tech" is substantially just a reinvention of the wheel and/or oscillating fads, but it's all presented as "new therefore obviously superior" to what came before.
Others have probably said it better, but tech needs more study of history.
Secondly, I don't learn technology to make myself more valuable in the marketplace. At least, that is not the primary objective. I learn new technology, to make myself more efficient and the products I build better. And since I'm in the somewhat fortunate position of owning all the intellectual property I create, it's also in my best financial interest to learn.
Also, as I get older, I find the mental exercise of forcing myself into doing things differently is a lot of fun. To be honest: gaining mastery and learning is just plain fun. Thats why I do it.
I appreciate what you are saying, and I definitely think that some folks take the "here we go again" attitude towards a new approach that may very likely have a significant and positive impact on whatever they are working on. That said...
That situation strikes me as relatively rare. More often than not, I see people get excited about whatever the new flavor-of-the-month hotness is, and they forget about real world issues. One simple example is when the cost in money and (possibly) morale is not taken into account when switching from one technology to another. Sure, you may get a 1% incremental improvement in some metric that may save you X dollars, but the switch will cost 5x dollars to implement with additional soft costs like potential loss of morale and potential loss of efficiency due to lack of familiarity with the new system. I see this type of decision making frequently, and I consider it extremely poor form.
I think it's really important to ask why something needs to be done and to ask what the actual costs of switching are (esp. for folks on the front line). If the answer to why is "it will get someone a promotion for little or no benefit" or "a leader somewhere wants to brag / humble-brag about the new hotness with their peers", then the decision to use a new technology can usually be postponed to a later date. These are not uncommon scenarios, and they frequently cost companies dearly.
All I'm really trying to argue against is the mindset that "I could technically do this with the technology I've been comfy with for the past decade, therefore this new technology's entire existence is a waste of time and it's a waste of my time to learn about it." Learning != rewriting. And new projects != rewriting. It may end up being as simple as, "I just lost my job and nobody uses the technology I was using there any more, so now I can't get hired."
Of course it's not the sole reason; fad chasing, herd following, and résumé driven development are reasons as well. :)
And maybe because they realize that the majority of those 167 technologies only exist because someone said "Making frameworks and generalization is the only reason I manage to keep doing what I do." [source: https://news.ycombinator.com/item?id=13734009]
Yes! A few months back I was feeling quite burnt out over this feeling.
Taking a step back and focusing on a wider variety of work / hobbies / projects did wonders for my work motivation and ability.
It seems to me that taking on a larger, wider variety of mental tasks actually improves ones ability to focus on a single one, instead of spending all energy on one task (or job).
the 4h has to be shared. everyone on the team has to be in menstrual synchrony, so to speak. this type of work requires one to get "in the zone", or achieve the "flow" state. everyone has different biorhythms and won't even maintain the same time schedule on a daily basis or even weekly basis.
in an 8hr day you might get 3-4hr of good performance. yes you can do better, but not on a sustained basis. yes more hours per day will give you more but after 8 it really starts to become a diminishing returns thing.
if you tell people to only do 4hr of work, the output is going to be 1-2 hr of efficient work.
you are basically claiming it's a team sport but want to apply a principle that would only work for you personally. now if you can hire only people "like you" then you're golden. or, if you can pay (say) 2-5x market, fire quickly, compel people to have a very specific training-like schedule with execute-or-GTFO practices, have a high demand but high performance environment, only hire high experienced devs, then you might have something. it's not generalizable to the extent that it is usable advice or recommendation.
lastly does your 4h of work include communication and coordination functions? if so, it's reduced to 2h of work.
Idea: what we're actually measuring is the speed of human reasoning vs the business value of time-to-market.
I agree that doing the same thing 167 times is real improvement. Though I don't believe that to be the reason for the expert beginner.
I've seen countless people learn that one technology just well enough to scrape by. Not a bit further. And going further can be done during work hours.
I think this is a bit of a loaded statement. Phrased this way, who could argue that learning to do the same thing with 167 technologies is real development? If you listed out the technologies, I'm sure you'd get plenty of responses from people who disagree that they actually are doing the same thing. As a frontend dev, the technologies I'm aware of all have vastly different developer experiences and tradeoffs.
Part of your duty as a professional is to separate out the hype from the useful.
I just got done wit a brutal job search. I call this attitude "losing the fear." I would not be so sure the next 100k job is waiting for you if you are not improving yourself.
The older I am the more I'm convinced that development is not individual thing - it's a team sport.
Hey, company: divide your workday into 4h work for external projects and 4h work for team development.
Smart, mature developer, will realize that the most inhibiting phenomenon for him is usually the job itself.