Hey my first post here. I need to vent and also looking for some advice what to do next. Thanks for reading!
I started as a Java developer, quickly worked my way up to senior level (at least that’s how I was being refered to… as a senior Java dev). I was working on huge corporate systems such as trading platforms, banking and energy & utility. I have never really picked up anything regarding business domain knowledge. Projects came and go. Every project used a different technology stack. Well, not completely different but different enough to require some initial, non-negligible effort. So my spare time was mostly spent learning all those stacks and then discarding them when switching project. I was doing fine, performance reviews were always good. But at certain point I recognized I remember nothing. I mean I can tell if code is bad and I know some architectual patterns but the constantly shifting technology and the omnipresent “just another cog in the wheel” syndrome was slowly destroying me inside.
The systems I was bulding were truly massive and the older I was getting the more overwhelmed I felt. At certain point I said fuck this. I can not continue like this. There is no future ahead, just dispair and neverending hours of relearning technology and incredibly massive codebases…
So I took some time off and discovered world of mobile apps. I have always been fond of Apple products and with flat design one can create a nicely looking mobile apps without being graphic designer. So I spent few months working on an iOS app. The plan was to submit it on appstore and then find a job as iOS developer. I was having lots of fun and was feeling alive again. I didn’t need to solve convoluted integrations with 3rd party systems, didn’t need to configure plethora of services just to get that bloody thing up and running. It was truly refreshing and wonderful. Then Apple rejected my app submission because it supposedly didn’t adhere to their newly updated guidelines and my dream was crushed. I tried to talk to them and find out what was wrong with my app but to no avail. So months of work gone just like that.
Knowing I can not deal with Java projects anymore I decided to learn Python. A friend of mine got me a job but the project I got is a really old legacy system giving me some bad Java flashbacks from my past.
At this point I feel I can not continue anymore. The ever switching technology stacks and the current information explosion where dev is required to know so much that relying on stackoverflow and such is an absolute necessity leave me bitter and confused. I think software development is a dead end job. I think this wasn’t always the case but the information overload, super long hours and mostly the impression that software is cheap and easy to do (for many $0.99 price tag on appstore is outrageous and all apps should be free) leave me bitter.
I need to leave this cursed field for good but I can’t. I have to pay the bills and all my free time was spent learning technology just to discard it a few months later. Totally wasted time.
I am depressed and I have no idea what to do. If I continue I will be more and more depressed and who knows what will happen. If I don’t I will probably become homeless I guess. I have formal (university) education in computer science but teaching is not an option. Here basically everyone teaches and it’s super tough to get a job in this department. I know I didn’t give you much to work with but anything will help.
Sounds like my situation. Started out with C++, then C# as a senior developer. Now on a Python job where I do not feel senior at all. On the contrary I frequently have to ask new hires that are straight out of univ about things. Nothing wrong with that per se, but it’s a bit too one-way now to make me feel comfortable or happy.
I also took some time off and developed a mobile app, but it does not generate enough revenue to live on. Is there some way for you to port your app to a different mobile platform and get it published? Surely you learnt a lot about making apps in the process, so it shouldn’t be a total waste anyway.
I’ve also thought a lot about leaving the field and keep programming as a hobby. Don’t know what else I would enjoy doing though. I realize work can’t be all joy all the time, but I think there must be some basic enjoyment. I see that my coworkers have that, but I don’t anymore.
I know it seems tough, but it sounds like you’ve got some great experience. You sound a bit like me though: at times when things get too frustrating/depressing/overwhelming, you just get out of there as fast as possible, or throw up your hands and give up.
I guess I would advise this: when you feel overwhelmed, instead of giving up, just take some time off of whatever you’re doing. If it’s a job you’re not liking, take a week off doing nothing. Come up with a plan. Then, while you’re still working work on the other plan. Look for other jobs that might interest you. It sounds like you like mobile apps - maybe look for a job doing that. You could probably work for a company making phone apps. Maybe try android programming where it doesn’t have to fit Apple’s annoying rules.
Perhaps look at some open source work for mobile apps. You might be able to make some good connections. Who knows, maybe you meet someone who could help you get your app accepted by apple or let you know what you did wrong. Maybe take some cheap online courses about developing for the appstore and it would help energize you and show you what went wrong.
Sounds to me like you’re talented and intelligent but burned out. That’s ok! It happens to all of us, or has happened to me at least. Don’t forget, sometimes work is just that - work. It can be just getting through the day to day while you find something you like more.
Also, do you have a therapist? Mine helps me keep things in perspective. I can be feeling like “I can’t take this anymore!” and then the next day think “Say, this isn’t bad”. It’s so strange to feel so different from day to day, but that’s how it is with me. I’ve learned to try not to make any rash decisions because things change so quickly.
I’m not sure why you feel that way. First it’s very hard to make money with an app. 2nd, apps are rejected by Apple all the time.
Put the code on github and add your project to your linkedin profile. Personal projects don’t have to be production ready. As long as it’s yours and you can explain why things worked or didn’t, it has some value.
NNow, I can relate 100%. Ever changing technology stacks, but I don’t miss the business domain knowledge
From my vantage point, it seems to me you gave up too early on your new-found iOS passion. Hell, I even think you gave up too early on your Java path. 7 years can be not much in terms of immersing yourself in software-development, especially in this current environment where a new framework and new meta-programming language pops up every other week. It’s tough not to get nervous about new things not sticking because you have to keep learning new stuff all the time and only do coding-by-googling.
One way of working against this trend could be to try finding a work environment where you are allowed to focus on technology stacks that you prefer and have more freedom in choosing them, if new projects are coming in. You have to actively insist on not jumping on the next framework that comes around the corner.
Also, try focussing on the positive things that you got out of your experience. You’ve seen a lot of things: different tech stacks, frameworks, architectures, languages, build systems. This is your bonus. Other folks never get out of their C bubble (no offence to C coders, I love C, but prefer GO now ;)). You have a big advantage over those with narrow stack experiences.
So you have two options, apart from leaving coding altogether:
Find your niche and environment, where you can dedicate yourself to mastering a couple of tech stacks and languages as a coder. But stay hungry and foolish ™, and always try to enjoy whatever they throw at you. Talk to your co-workers about those issues you mentioned. Maybe they feel the same? Maybe they can help you overcome those issues? Worst case, you’ll find another team / project.
If it suits you, take advantage of your many experiences and try getting into team lead or project management roles. From my experience, there are many teams coding away headless and with no minimal scrum process in place. Having hands-on experience is very helpful in these roles.
I can relate to your experience. I’m a C programmer with 6 years of experience. I’m considered an asset at my current company, but I hate my job since I work on a large legacy codebase being contributed to by several teams and with my seniority, I’m expected to know how everything works together. After 6 years, I have very little to show on my resume in terms of cool features developed (at least in a way, say, an app developer would be able to showcase) because most of the work I do, although beneficial to the company I work for and requiring a lot of time and effort, involves tweaking code/data structures/logic to extract the last bit of performance/efficiency (something that can’t be described or would look cool on a resume).
So, I decided that I liked Python programming more and that machine learning would be something cool to learn and work on. Although I managed to learn a lot via online MOOC’s, I haven’t yet managed to make the job switch.
Since you and @Peter made the switch from Java to Python or C++ to Python, I was hoping you guys would have some advice for me. I consider myself a mid/senior level C programmer. I’m afraid that making the domain switch (to a Python/Machine learning engineer) will leave me starting at a junior role (with a lower salary which I cannot afford). Was that your experience as well? Is it possible to maintain the same seniority as my current role when switching domains considering that I’m not a hotshot programmer with the next million dollar idea? I wouldn’t mind the title or learning from people much younger than me.
In my particular case I didn’t have to switch to a junior role because the main task was C++, but it gradually slid over to Python. Since Python is fairly easy to learn (compared to other languages) I think you’d be able to leverage your skills from other domains quite quick.
That said, I didn’t find the experience particularly enjoyable, but I think that was mostly due to bad programming practices. The code base (in Python) was huge and not written to be easily maintained. Unfortunately Python has some constructs that allows hard-to-follow code. Some of the people had not been doing large-scale development before. I can see that it could be a very different experience in some other company.
It sounds like Apple didn’t give you a lot to work with on that mobile app. This is similar to others who I’ve known that have tried to submit apps. “Nope, not good enough.” No reason given.
Maybe find a buddy who has submitted apps in the past and see if he can tell you where things need to be different.
Changing technology stacks can be really stressful. Maybe try a smaller step… have you considered Kotlin, Scala, or another JVM-based language? The platform would follow the same rules but the language would be different, that might help. Perhaps you could do something on Android? That would give you a different platform, but the same language.
We’re all chained to Stack Overflow. It’s simply not possible like it was 40 years ago to “know everything” about the infrastructure or the language. Stuff changes so fast now that everyone needs help. Well, I guess SAS is one language that’s still proprietary or more or less finite in its capabilities, but I’m not sure that I’d want to get into that either.
Remember the old saying, “a friend in need, is a friend indeed.” Who would you rather have on your team, the guy who admits that he may not know everything and asks for input, or the snob who “knows everything” and so everything has to be his way? Humility goes a long way. Further, the juniors might be actually delighted to answer a question from someone with as much experience as you.
When I got my first software engineering job, a 20-year employee asked for my help coming up with questions for a C++ interview. It really made me feel good to know that someone who was as valued to the organization as that would ask the newb like me for anything. So not only are you demonstrating trust and humility, you might even be making someone’s day.
The opposite is also true - some kids these days scoff if you don’t know the newest JavaScript crap that got barfed onto npm. But their jaws will drop in a most satisfactory fashion when that production system that’s been around for 10 years goes nuts, and they watch you bring the situation under control with your knowledge and experience. I’ll give you three guesses who they beg for help when they get paged in the middle of the night, with people about ready to call a war room because that financial batch didn’t post and this month’s payroll is on the line…