Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

I feel I hit the job ready part and started to work as a software engineer and I think I'm about as productive as I cost the company. Actually I feel a little better than that and my colleagues a little worse than that, but I guess that's how everybody in the middle feels.

The thing is, after that job ready upwards slope there is the next downswing. You're able to get something done, but what you envision is not what the company needs. You also realise that to be productive you need a lot of skills you never learned in school time at all, e.g. packaging, shipping code to customers, versioning, and actually create a tool that another person can, reading code of other people, and finally using the tools your coworkers build which are only marginally more productive than doing it manually or writing your own tools, and only after learning the arcane ways in that they are designed (much like the tools of your design, and quite different from the billion dollar applications you are used to in daily life). Also you will really become slower, because all the meetings and compromises drain your energy more than the coding, but there is no way around it if you work in a team. Is there another high coming after that? From looking at my coworkers it seems this down swing will last.

tl;dr the job ready high is not the end.



sort by: page size:

Loving programming and loving professional software engineering are two very different things.

SWE does have a certain amount of room for up and down--any objective-based thought work job does. But if you're going to be part of an organization, at some point you need to learn how to be constantly valuable.

But that is not necessarily the same thing as being constantly productive. There are other ways to contribute value to a team and, for that matter, other ways to structure your work so that you do harder stuff while feeling more up to it. Macros, metaprogramming, other tooling, all that stuff can be very useful for packing work into your useful moments and benefitting from it later (but can be an excessive timesink too, so watch out).

Sometimes you're not up to coding but you can put together an architectural plan for the next task in line. And to be honest, if you get very good at coding you may find that your hour of high-quality work in a day is enough to keep you employed because it has as much/more impact than someone else's four hours of mediocre work. I'm not even talking 10x programmer here, just that most good code is written in jumps and spurts, maybe capped off with a "holy crap the groove" all day session or three.

But the thing is, at some point you'll have a crunch deadline that won't accommodate the fact that you're not very useful that day. And early on, you're definitely going to be leaning more on the consistency of your beginner/intermediate work than anything. And no matter what, you always have to keep relationships going with your coworkers. The social/political aspect of software engineering is a pretty big deal in most companies. It's not something you necessarily notice when things go well, but you'll sure as hell notice when it doesn't. Depression hits that hard.

Overall, I think you've gotten some good advice here, though I will say as someone who has dealt with similar issues in the past, freelancing will require an extra level of self-discipline to pull yourself back onto the rails after an episode. But I also think it should be on the table to do something other than software engineering for a living. It's entirely possible this is something that, for you, would be a great thing to do on the side, not so great for a paycheck.


A few years back I had a job where I spent 50% of my time on a glamorous project and the other 50% doing "internal consulting", which means doing various projects for various people using various toolsets. After that I spent about a year working at job shops, where it was the same story.

In this environment I was forced to use a new language every few weeks... Not usually glamorous languages (say Haskell) but more commercially common (and not so common) languages.

I found that my productivity was definitely hurt by the constant need to re-learn the details of how to accomplish simple tasks, like opening a file or figuring out where they hide the urlencode function.

That can get you into maintenance programming hell pretty quick. Your manager always thinks you're too slow (although other people doing the same job are even less productive) and you don't get respect, don't get a raise, and ultimately the walls squeeze in until you need to move on.

Personally I think the things you can ~do~ with software are more interesting. I think it makes more sense to pick a language that's "good enough" and focus on getting highly proficient.


I learned how to code in University and did pretty well at it after an initial struggle. I studied EE but felt like being a programmer matched my interests better so I got a job in that.

I've been working a few years at the same place. I write Python REST APIs at the moment. The other person on my team does UI work, which I started out doing and still do sometimes. I've built the whole back end system from scratch so I feel like I have a good understanding of how everything works and the ability to work on any level of the stack, though I know the most about the back end.

I have been feeling disinterested in what I'm working on. My team is only 2 people and we don't work together on much of anything. I find this other person difficult to talk to. A couple of friends from Uni work there but all 3 of us are different projects.

My company seems to have issues hiring people and the people there are mostly B or C level. It seems constantly disorganized and like there isn't any vision or clear direction of where my team is going. I'd like it if I were on a larger team and was able to get feedback on my work so I can get better.

On the positive side, they pay pretty well, have no dress code, and allow flexible hours. I'm enjoying making money and building a life outside of work. However, I think I would enjoy my life more if the 8+ hours I spend every M-F felt more meaningful. I can think of other projects that have been mentioned that I would like to take on, but it seems there's always something in upper management that keeps them from getting going.

I don't know if I'm an A-level programmer that could get a job somewhere else. I'm probably a B or B+, but I think I might rather be working at a company with A and B level people so I can learn more. As it is, I feel like my interest is going downhill and that might start to show in my work. On top of that I'm not sure if it's a good idea to stay at the same place for too long.

Any advice on how to get back into it mentally or how to find new work? Is this how it is everywhere?


Yeah that's the view I take too. Max out your pay/mental effort ratio and then enjoy your time. Being a mid level software engineer is pretty darn chill once you get decent at your craft.

I spent much of the first 15 years of my career at companies that would rather ship crappy software tomorrow than good software next week. The stress level was high because we were always in a rush, and management always was always pushing to get more out of every developer, like wringing the last drop of juice from an orange before they threw it out.

We often worked overtime so we could write the code we were assigned to write. We couldn't do that during office hours because office hours were for meetings, answering email, and fixing bugs in the crappy code we pushed out last week. Because last week's code was counted as "done," fixing it didn't count as "progress." We weren't getting anywhere unless we produced something new, and that only happened after hours.

A few years ago, I started working at a university in the US, where things move much more slowly. I started having the time to properly architect software, to rewrite chunks of code when necessary, and to write much more thorough tests so I'd have fewer surprises when we got to production. The saner pace and the ability to be thorough made the work enjoyable again.

The academic world in general tends to move more slowly and cautiously than the start-up world, and that academic mindset creeps into even the non-academic parts of the university. The go-slow-and-be-right attitude is good for designing and building complex systems.

That said, universities are a mixed bag. Get into the wrong department, and you might find yourself maintaining crappy software that no for-profit enterprise would ever run. You might find yourself in even more meetings, with more politics, about things that matter even less.

But if you manage to find a decent project with a decent manager, the university can give you back your work-life balance, along with some of your sanity. You'll even find a little extra energy to put into your side projects, because the job hasn't wrung you dry.


I interned at a retail company ad a software engineer when I was in college, and thought hat a sophomore in college knew everything they needed to about programming to work there. I still believe that's but there are so many other skills to be had there.

Now that I'm full time at a start up, I've learned so much in the past year, not just about programming, but more about design, testing, tradeoffs, business, and DevOps.

The amount of skills a software engineer needs is much less of just programming than I thought. So many soft skills involved, so much design, so much practice and iteration.

It's absolutely amazing to see how much there is to learn. I can't see myself at that retail company again, just because everything was slow. They had very stable services and ops, no doubt, but since there was already a group of people to handle that task, I never learned it. At a start up, I need to do everything, and I love it so far.

That said, I can see it becoming overbearing at a certain point and wanting that slow down eventually, but I'll play it by ear.

It's a great industry to be a part of, and as a young developer, it's a very exciting future.


Definitely. In my experience, the nitty gritty "labor" part of software development, the actual process of learning and writing code, gives great satisfaction and enjoyment. But after a few years, a few projects and / or jobs, and especially once your hard work is effectively thrown away in favor of something newer and shinier written and advocated by younger and louder people, you get more cynical.

But once you get over that, you realize that code itself is just an implementation detail, and it's the people higher up that have more influence. As developer you get paid an X amount a year, that's about it; as a higher up, you get to play with millions, both as money and as 'resources'.

As a developer you'll learn your limitations, that you cannot solve everything and that you alone are not good or fast enough to tackle nontrivial projects (currently in the middle of that, single developer, at the current rate it'll take years for my software to become viable. At least I'm on the payroll). If you have bigger ambitions, climbing the ladder is the way to go. Personally I'm hoping to be able to get a small team together in the coming year.


Were you paid? If so, then as that one guy put it, you and the company are even. Yes, that's the reality of the software life, and yes you're either on your way or already burnt out.

The other reality, is the majority of software work doesn't end up mattering in the long run, or even in the short run, and you need to come to terms with the reality that you're exchanging your time for a salary and maybe some equity, but don't get your hopes up, it's just a job like others. Nobody is really changing the world, and it's a lie that we bought 12 years ago when we got into it. You can work on something that improves someone's workflow marginally though, and that can be satisfying. It's way way more satisfying to just get the work done and then have great interactions out in the real world with people you meet. I recently helped a Taiwanese immigrant get their passport, and I started my day by playing an mmo with some friends, now I'm back to coding whatever.

The other other reality, is that a lot of that time even if the product or website or company is worthwhile and sells stuff, it's often not the "features" or the fancy frontend that people care about. That's why Rockauto for example is so awesome, and look where you're posting right now.

It's probably worthwhile to go independent, but the same things apply, except you'd now have a real stake.


I'm not sure I'd agree that software engineering isn't looking to great right now, though I'll admit that I have a limited set of experience. Even in a boring job, there are things you can find interesting. If you're (re-)implementing the same CRUD interfaces, maybe look at some templating or code generation to cut down on the time that takes - get meta about your work and find new ways to be more productive. Up to you whether you use that boosted productivity to do more work or to spend less time working.

Nobody really cares about whether work can be done in a "productive and enjoyable way". If your company or engineering manager thought they could get away with turning you into human machine because that's your only option then they most likely would or someone else would eventually.

Be very thankful software developers are in such high demand because there will be a time when that little competition will not be viewed as some sort of team morale boosting exercise but just another bit of frivolous spending to be eliminated. It may not happen in mine or your working career, but it will happen eventually.


I had a similar feeling at my last job: I'm building software no one uses :(

I made sure to probe about related details when I was looking for my next (current) job. I found a company with a strong customer relationship, existing production software running, and more in the pipeline. Things worked out well and I got to be happy about seeing my code running in production, helping people do "stuff".

My one piece of advice is to focus on this aspect during interviews whenever you decide it's time to move on. After a certain dollar amount, optimizing things like this that you value will likely lead to a happier result compared with a bigger paycheck.


No, your expectations are not too high. You need to feel ok at work and if you are passionate about the type of work you do, it's reasonable to find a workplace where this sentiment is shared and going to work feels like fun.

I saw a few comments in this thread which said that this is simply the way it is at a large company. I strongly disagree. I've worked full time as a software engineer both at a small company with just a handful of programmers and, currently at a large corporation with over 8000 employees. In both cases, I've been surrounded by people with a passion for software. People who share my interests. People who want to excel at their job and deliver the best possible product. If you're someone with that kind of mindset, I urge you to look for a job where that is the norm. Part of the problem may be that you currently work for, as you yourself put it, a non-software company.

As others have pointed out, don't quit your job until you have a new one. If your search takes a while, or doesn't pan out, you may come to regret jumping the ship before you've found a new vessel. As a final note, let me point out that I am personally not familiar with the job market for programmers in the US. From what I've seen though, it seems like it is harsher than in Sweden.


Very well put. Hard to extrapolate factory work to office work.

I do believe that there are diminishing returns in software development (and startups) but a lot of it depends on the type of job, stage of company, existing support processes, etc.


You’re right on just about everything, especially the external pressures that come with a fancy office.

After 10 years of writing software, I’ve realized that being in an office is the opposite of productive when it comes to coding. The office is where your more career driven peers climb the hierarchy through soft skills, currying favors with each meeting and business lunch.

This might sound a little like a brag but I was pretty good at playing that game. Doing it remotely is a bit harder, but it’s possible if you’re especially power hungry. Honestly though, it was stressful and not even all that fulfilling after rising up to engineering manager.

Just getting to write code without bad managers who negatively affect my mood is all I’ve ever wanted, and I think there’s a lot of folks on this site that feel the same way.


When I finished my post-graduation in "Software Engineering". I feel so productive. I can release anything with very high quality if I have the necessary resources, and rework is a thing from the past. I can control the chaos, release often and confidently still having really good nights of sleep.

This is such a strange thing to doubt. I'm so distracted by it I can't really answer your question. Being a software engineer is a bunch of knowledge accompanied with some level of problem solving. You can even be a medicore one and use the paychecks to pay your hobby or something you actually like. So why throw it away if you don't know what you are throwing it away for?

There are work conditions where you have to call the police on the manager because he locked you in the building until the release is done. There are also work conditions where you want to work but everyone else wants to pet a cat for another half hour after lunch and the boredom slowly kills your mind. And there are a lot of nice workplaces in-between.

If you have any memory about the joy of programming I highly suggest to doubt the workplace before yourself.


This is perfectly normal. Software programming is all but commoditized at this point unless you're in some super specialized field.

Personally, I've been considering some sort of sales role in the future. Those people seem to be way over paid, better paid than me anyway and I'm doing okay. Note, this would be at a major firm rather than a startup.


I'm a software engineer. I work on a contract basis, contracts last 3 months to a year. I've recently made CI pipelines, Win 8.1 apps, IOS apps but mostly web-apps. The pay is good and the people I work with are cool.

I don't love it though. It's OK. It'd be better to code 20% of the time and observe, talk, think the other 80%. I think that this might make me more efficient and more productive.

My best job was my first. A guy had a profitable web-site and no technical knowledge, there was no notion of best-practice, and he hired me to do everything/anything. The environment was smokey, the equipment shoddy and the business practices disordered. I was straight out of uni and free to make any decisions I saw fit, any mistakes were on my head.

[edit] Thinking about it, it was the shear honesty of the place. I don't think anyone even tried to dress up what they were doing in jargon or exaggerations. Words like 'passion' were never applied out of place.


I'm a senior level systems engineer and architect at an F500. I'm happy. We're not a pure software company, but make equipment that's supported by software. We're in the midwest, so the pace of life isn't quite as hectic -- I'm not getting rich, but I have great work-life balance and live in a town with good schools, etc.

I love programming, and do quite a lot of it. But watching what the software devs do all day, I'm not sure I'd enjoy the drudgery.

What keeps me out of the drudge zone is the fact that my work is not predictable -- I get the weird problems that are not fully within any particular skill set. So it can't be planned or managed.

next

Legal | privacy