Don't Get Stuck
stitcher.io
stitcher.io
In order to fulfill what you want you should work on side projects. Side projects are great way to vent out tech frustration. Working on PHP and got bored? Try python at home. Tired of using bootstrap? Try Tailwind. Feel angry seeing monolith CRUD apps? Try Docker at home and start making micro-services. You have endless options. You can also put code on Github to improve your resume.
At least in my personal experience: moving from SVN to git, moving development from C++ to JS (and company was making simple mobile games that are never CPU-bound) and then gradually adopting Typescript, migrating a commercial application from MSSQL to Postgres (saving a significant amount of $$ in license while actually improving performance), and many, many smaller refactorings, improvements and new shiny libraries — all resulted in direct positive consequences for the business.
If the company never adopts any new tech ever, it's a sign that it's lost its way.
So you're telling me I wasted last week installing the VB6 IDE on Windows Server 2016?
A company does not necessarily need to keep pushing new tech to production to ensure that their employees stay up-to-date. They just need to actually invest in their employees.
I am self-taught programmer. I learnt Pascal and C back in Uni. After that I never tool formal education for learning new tech. Youtube rocks.
(Obviously, this doesn't account for job-hopping for straight salary reasons)
My personal experience as a software engineer has been getting reimbursed for one or more conferences per year at every job. I've never had a software engineering manager say no to a relevant conference requested framed in a way that benefits the business.
I wonder if there's an aggregate data source available to see how common / uncommon this is.
Have your companies offered a general professional development budget?
Of course you should not expect a company to refactor every month. Meanwhile companies cannot expect tech enthusiast to stay with them if they don't offer interesting technical projects.
It is a negotiation. I have seen many stack decisions being pushed by HR and it makes a lot of sense.
Hobby projects are well and good, but there's nothing like having to solve full-scale problems that you don't get to pick and choose. When a hobby project gets too hard in a way that isn't fun, I drop it, because I'm doing it for fun. But some of the best lessons I've learned have come from things I was forced to solve.
The changes that have been most meaningful to my career are thing like becoming a tech lead and moving into engineering management. And these have happened when I've become embedded into a company.
* Line management: are you willing to be the man and promulgate the party line? You can be mostly apolitical in this role.
* Middle management: are you willing to be the pawn of a specific member or two of senior management and do their bidding (which probably isn’t fully aligned with the party line)?
* Senior management: do you know how to intelligently break the rules in order to stand out from the crowd of middle managers? This could be by developing a broad following within the lower levels of the company through self-promotion, through cultivating specific relationships with the CEO and/or board, or by (in rare cases) delivering on highly visible and truly remarkable results for the company.
One example I know from the 80's: you're a director of a factory in some South-American country that produces something. It's making a loss of a few million dollars per year, and everyone at the parent company for which this factory is simply a small business unit thinks it will amount to nothing.
In two years, you've turned the situation around and are profitable with 1 million dollars per year.
The company promotes you to your next role and your successor shows how difficult your challenge was, as it's losing a few million dollars per year again.
The trick in this case: be competent, and become friends with the local South-American director, as upon arrival you realize that the company you're running is actually owned 50% by the company you work for. The other 50% is owned by some South-American company and the whole reason it loses money is because they cannot connect with the South-American director.
True story, can't disclose sources, but anyone who has seen the 80's might know similar stories.
That was then though.
I feel so stagnant. My company has been bug-fixing non-stop for 6 months now. It's insanity.
Commit to your family, your friends, your hobbies, and charity. Don't commit so hard to a job, because ultimately it's a business transaction. Companies _will_ take advantage of your good will if you let them. Don't give them that opportunity. You owe them nothing beyond what you agreed to in your employment contract.
I'm just a super type-A, "wanna make an impact" kinda guy and I know this sounds dumb but I feel like I'm letting mental weakness "win" if I don't tough it out. Just writing it out, I know it sounds nonsensical.
I guess I just want to make sure things are good and thoroughly fucked before I bail, you know? ha
Unless you're a manager at your company it's not your responsibility to fix it.
Anyway, my habit of keeping myself honest sometimes backfires and when it does it manifests as running my head into a brick wall over and over until I'm REALLY sure that I can't fix it. But... I think I'm about there in this instance. Other devs are noticing the same thing I'm noticing, so I feel like I've got good evidence that it's a fundamental leadership issue here.
What area of software do you work in? (I'm assuming software here, which may be false)
Watson: we should be investing in ongoing training in new skills for our staff.
VP: But what if we train them and they leave?
Watson: What if we don’t and they don’t?
I didn’t look it up on quote investigator though. https://quoteinvestigator.com/
A client is paying for a refactor but the manager says "we don't have time to write tests, the client is not paying for that" (when indeed they are in the end).
The client does not pay for refactorings or testing, and your manager shouldn't be made aware of it because it's part of your regular job. If they have so much insight in your day job that they start complaining, they're micro-managing and probably redundant (if they have the time / energy to look as closely at you / your team's work).
Looking at it from a manager's perspective, I think you'd want to do everything in your power to prevent such situations. Feels like there's a general lack of future perspective in many companies.
Some people say yes, but often these are the people who are the "high achieving" tech workaholics who love to go home and code for fun.
Other people say no, and these are often the people who don't really care much about work and just look at it to a means to an end.
How would you know?
Personally, I would judge whether I still have opportunities to learn. If not with the projects I'm directly involved, do I have the autonomy to pursue workplace improvements and ways to keep learning at work?
Caveat is that I'm also very early in my career and while I highly value work life balance, which was part of what led me to change careers from semiconductors into software, I probably skew more towards achieving than not.
I would say if you are in that situation and enjoy it, you should still be learning and investing in yourself outside of work whether that's learning code or practicing your baking. Learning and struggling with new material is basically a muscle and needs to be an ongoing practice, even if it's not directly related to your day to day.
If you are the type that learns at work, then having nothing to learn at your work means you have nothing to learn. If you are the type that learns at home, not coming home exhausted from your work means you can learn more.
If you are a web dev, most of the time you are gonna deal with MVC and similar patterns that you're gonna reuse daily. It's obvious that it gets dull. And when you hear about a new toy that you haven't used yet? You get excited and you want to change a job to get to work with it. But guess what? You are gonna get bored with the new toy after a few months too.
Programming is pretty repetitive and most of the problems aren't that challenging after a few years of experience.
Maybe there are certain stages in a failing company. Stage I: A few great coworkers, product struggling. Stage II: Great coworkers begin leaving, you're still fighting. Stage III: The position OP describes in his post.
I went to all three stages you describe, feels very familiar.
I spent 8 years at the same startup - it graduated from chaotic and exciting to staid and dysfunctional.
I moved pretty high up so was in a position where I could introduce modern practises like agile, but I could never get management to mandate dev staff to do simple things like have a daily standup. The meetings would invariably drift onto other topics and go from a 15 minute standup to an hour long discussion about everything going on in the company where the CEO would get involved and try and hash things out.
As you can imagine we'd end up doing these at most once a week which became incredibly frustrating trying to get everyone on the same page.
On top of that the code base was stuck on XML, JSP/JSTLs, XMPP, Java 7 and Adobe Flex based APIs and libraries. The whole world was moving onto mobile apps, ES5/6, REST-JSON, Websockets, WebRTC and we were stuck using archaic stuff like XMLPullParsers, Flash Remoting and SOAP.
Those first 4 years were valuable lessons on what to do and I grew as an engineer, but those last 4 years were definitely lessons on what not to do. But you grow comfortable.
I think being comfortable is a dangerous place to be.
To quote Jim Rohn I think you have to embrace discomfort and ask yourself 'What am I becoming?' rather than 'What am I getting?' and ensure that you're growing. You don't want one year's experience times 8 - you want 8 years of growth.
That's a great insight. Thanks for sharing!
Hope you're in a better place now!
At a consulting firm, many of your projects will be new projects that you will have a hand in architecting. You won't be doing a lot of maintenance programming.
I'm sure some firms do take over maintenance projects, but at least that has not been my experience and it seems like something you can find out ahead of time.
One thing that is pretty common across companies is the possibility of being pigeonholed. If you take responsibility for some aspect of the job and do it well, your contributions and successes can go unnoticed. It reminds me of the scene from Futurama where Bender meets God, who tells him, "When you do things right, people won't be sure you've done anything at all." I've seen it happen to colleagues and have had it happen to myself. This isn't just a software developer's problem, though. It's ubiquitous.
Spotted on this page: https://www.pathviz.com/careers/software-engineer?review_id=...
This seems pretty true for anyone who I've seen leave a job. They will say that they were offered more pay somewhere, but usually it's because they haven't been doing what they wanted to be doing for some time at their current jobs.
I'll be rummaging around pathviz for a while.
Especially in this industry, getting comfortable can be disastrous. There's no job security, ever, but it's remarkably easy to fool oneself into thinking there is. And then suddenly it's gone, and a hostile job market with skills 5 years out of date.
Sounds like you haven’t found an employer who invests in your continued skills and development. A good employer/manager will give at least 10% and often 20% for skill dev.
With the resume of leaving every 2 years, many recruiters and hiring managers for companies that do invest in their employees would avoid you. So you’ll never find good employers either.
YMMV, but I've found this to be true. Mind you, it's been a decade since I've had to apply it. Freelancing doesn't count, and I'm making an exemption for C-level roles in startups, because they're never the same month to month anyway ;)
A story displayed in light gray on white is difficult to read.
But at the same time, with the current employee market being what it is, if you are unhappy there is _no need_ to play the grind game to help a company grow, unless you are really attached to it.
A company is not an ever-flowing pipeline up that pyramid, the job still needs doing. So it's normal that indeed people will leave to explore other opportunities in other places.
I'm not certain this can be resolved in smaller or medium-sized companies. The amount of opportunities tends to grow with the size of the company.