The “Real World” is depressing me
lazarski.me
lazarski.me
It's a hard truth to swallow that in the "real world" (read: any business that's not a software company) we as software developers are simply there to enable people to do their jobs better. Our software doesn't exist as an end in itself. We are purely a means. Bad/inelegant/old software can often accomplish a business's goals. It might not be as efficient or pretty as possible, but remember that your job isn't to make pretty software, it's to make a business successful.
Not world wide large but large like 500 people worked there. I was just a frontend jquery guy how was doing some fancy frontend stuff but i head a look into the company.
They failed not because of old code. What is bad code choices ?
"we as software developers are simply there to enable people to do their jobs better." Exactly!
"it's to make a business successful." Right. For example in a company which was a eCommerce Company. They wrote the eCommerce Software them self and it worked for 6 years but they got bigger and bigger and the manager didn't care to make the software better. One day the main developer quit the job and nobody now would know how to change that or to do that. is this still a good Bad/inelegant/old software ?
That's a planning / organization problem, not an IT / software one.
the 500 person company had more then just technical problems.
We all live in the world in which this happens. Not all of us, thankfully, are employed in that part of the world; that does not mean, though, that it does not exist. I'm glad you're not part of it; I'm not, either, but only because I left and made my own way. It wasn't easy, and still isn't, but it was and is worth it.
It's easy to dismiss doom and gloom because it's not everywhere. But the GP's experience is perfectly real.
It's so easy! I wonder why he hasn't just done that before!?
However, the problems come when you're working with software that's decades old, has no master feature list, sparse documentation and no unit test coverage for countless feature enhancements and business rules that were tacked on over the years, so no one understands everything that it does and no one can touch the code without breaking something unpredictably, plus it's monolithic and not modular or portable at all, so it's really hard to migrate any part of its functionality. And it's in a language no one learns anymore, so it's really hard to hire developers. Meanwhile your business has become so dependent on it that you can't continue to make money unless the program continues doing its job. So the software will only continue to get older and more outdated, because it's irreplaceable for all the wrong reasons.
Sure, it's fine to still be on a COBOL system, but in reality I bet that most companies that are still on COBOL would migrate to more modern and maintainable systems if they could. But they can't, they're locked in by the amount of technical debt they've accumulated.
Seriously? And he has the guts to say Enterprise is broken with his so many years of experience.
What is with this trend where people with 1-2 years of experience think they know more than 100s of people with more years experience than they have been alive shouting this bullcrap? And I have nothing against youth, I started my career at 18 after dropping out of school, but I had the good sense of not being an arrogant know it all that wanted to rewrite complete systems on my first real job.
However, there are a couple of things that I'd ask someone new to that world to consider:
* It's trivial to point out all the ways some existing system is broken and how much better it could be given a imaginary greenfield to recreate it.
It's legitimately hard to figure out how to remediate or replace that system while keeping the business moving by scheduling downtime, training users, managing expectations, working within a budget, working within the abilities of your staff or finding new staff.
I've seen more than a few otherwise smart (typically young) people poison themselves and everyone around them by being impatient, idealistic and simply ignorant about everything beyond their own desktop.
* Doing the hard things, taking the broken stuff and making it shine builds credibility and trust. It's rare that you can come in the door and start reinventing a place, but given a solid track record - you absolutely can or at least be given the autonomy to work on more satisfying things.
* I don't have start-up experience to make a direct comparison, but I do know that the typical rates I've seen for equivalent roles in a few start-ups and even some of the prestigious SV BigCos are low to terrible relative to what's available to competent people with a track record in "enterprise".
* If you take it seriously, I think there's actually something a lot of satisfaction to be had in an enterprise. You're not racking up a million users, but you are getting a shot to change the lives of thousands if not tens of thousands of people who depend on your software and systems for their livelihood and interact with it for 8 hours of every day.
Thank you.
"However, there are a couple of things that I'd ask someone new to that world to consider: * It's trivial to point out all the ways some existing system is broken and how much better it could be given a imaginary greenfield to recreate it. It's legitimately hard to figure out how to remediate or replace that system while keeping the business moving by scheduling downtime, training users, managing expectations, working within a budget, working within the abilities of your staff or finding new staff. I've seen more than a few otherwise smart (typically young) people poison themselves and everyone around them by being impatient, idealistic and simply ignorant about everything beyond their own desktop."
Maybe I'm one of the typical young people. I don't know. But when I come to a Company and see thing that can be improved why not improve them?
"* Doing the hard things, taking the broken stuff and making it shine builds credibility and trust. It's rare that you can come in the door and start reinventing a place, but given a solid track record - you absolutely can or at least be given the autonomy to work on more satisfying things."
It should be more like a transition. Take one peace make it shiny and then take the next.
"* If you take it seriously, I think there's actually something a lot of satisfaction to be had in an enterprise. You're not racking up a million users, but you are getting a shot to change the lives of thousands if not tens of thousands of people who depend on your software and systems for their livelihood and interact with it for 8 hours of every day."
At the and its not just about the revenue. The people how make the revenue should have a good nice workspace plus nice software which helps them not throw stones on there path. If people are not so frustrated they work better (I think).
There's absolutely nothing wrong with wanting to improve things, but there's plenty that can go wrong and hurt everyone involved depending on how you go about it.
>"It should be more like a transition. Take one peace make it shiny and then take the next."
Sure, so long as whatever is working continues to work to whatever extent that work implies along with all the connected concerns including, but not limited to:
* Maintaining equivalent expertise in the development, administration, operations and support teams.
* Discovering and accommodating connected systems, whether they themselves are documented or not.
* Complete documentation of the solution.
* Setting and meeting realistic schedules.
* User training.
* Testing.
Most of those things are not nearly as sexy as rewriting old code in a fast new language or implementing some kind of bleeding edge system, but they are absolutely necessary.
It's not just write, compile, launch and move onto the next.
I don't want to accuse here, but it's hard to imagine full cycles of those sorts of things happening for a project of reasonable size, relating to currently broken systems in multiple jobs within two years.
>"At the and its not just about the revenue. The people how make the revenue should have a good nice workspace plus nice software which helps them not throw stones on there path. If people are not so frustrated they work better (I think)."
I'm not sure what you're saying here.
Maybe because you don't know jack shit about things are and why they were done like so, and think you are smarter than the other people?
Sorry to be mean but I had to deal with a few people like you, and I ended up being responsible to clean up the fuck ups they did because they had all this shiny ideas on how to improve the code, or how to rewrite components of the software or use a different framework/language because "Java is dead man!" ideas and fucking it up for the business and leaving the team to clean up when they eventually leave because 'company is broken, I tried to fix it, but couldn't because X, but it wasn't my fault'.
Yeah, it is literally the same as saying "I have an idea for a web service/site."
I see my role as an IT professional as helping the other members of large organizations to understand what IT can do for them and how it should be used securely and appropriately. It's way, way, way bigger than just enjoying hacking on code or building small networks; it's putting together systems to support business.
After all, for most of the world IT is there to support the business, it's not the businesses' product.
I don't really care to argue over this, so consider that a rhetorical question.
That's in all seriousness, btw, it's not worth getting upset about stuff like that.
And with that, I think I really am done perpetuating this silly discussion.
But as your career continues, you'll find that you are _always_ learning, and in that process of learning you, too, will do the kind of stupid shit that someday a wiser you will wish you'd done so, so differently. The point is, in time, people and organizations of all sizes build legacy. Yes, even startups. You should actually feel pretty good if you work on something that lives long enough to develop a few warts.
There are two related skills you really have to work to build. The first is the discipline to set time aside to fix the broken things. You'll be surprised how hard that can be. (ESPECIALLY in a startup.)
The second will be tolerance; the ability to accept that, yes, some things are totally wrong in the purest academic sense—and maybe embarrassingly so—but at the same time, they are working and the best customer outcome may be a focus on some other feature.
I have done bad things. Everybody will.
"There are two related skills you really have to work to build. The first is the discipline to set time aside to fix the broken things. You'll be surprised how hard that can be. (ESPECIALLY in a startup.)
The second will be tolerance; the ability to accept that, yes, some things are totally wrong in the purest academic sense—and maybe embarrassingly so—but at the same time, they are working and the best customer outcome may be a focus on some other feature."
Fair points. Fixing things is always hard. I learned that on the Java Project. And yes as long as they are working I'm on your side. But and that a honest question: What would you do when you see that thing X will break in maybe a year and there is no way to scale it and the manager is ignore that it will break in the near future?
In my opinion the best option is to ensure that your manager understands the forthcoming problem, and even if they choose to ignore it, have a plan for what you'll do when that happens. Sometimes what seems to you like them ignoring the problem is actually acceptance of the risk; a choice to defer action.
If you can be anticipating the problem and be the person ready to get working on a solution when it's finally required you'll usually win heartily. If you fall to an I-told-you-so attitude it won't be very helpful for anyone.
Of course, depending on how management handles it when things do finally fall over you may want to consider looking elsewhere. After all, there's good and bad leaders everywhere...
Your right
and yes the I-told-you-so attitude is really bad.
Polish your resume.
It's important to be able to look at software from a business perspective (where software is simply a tool to accomplish a task) as well as from a developer/maintainer perspective.
For example, I'm currently rewriting a major system that has been in use here for many years. Our estimate right now is the total time for the rewrite will be about 2700 person-hours over the course of about 18 months.
Supporting the existing system takes about 10 to 20 hours per month. The existing system uses deprecated libraries, unsupported 3rd party components, monkey patched to hell, tightly coupled and has many issues. We can't even rebuild the entire thing from source code because we have unlicenseable components!
But, from a business perspective, the current system has run for many years and is likely to continue running. At 10 to 20 hours per months of support, it would take 15 years to add up to the 2700 hours we're spending in less than 2 years on a rewrite. And a rewrite, like any software, won't be zero-support.
In addition to mapping those hours to dollars, they also map to other features in other applications. Every extra hour I spend on this rewrite is a feature or improvement on another application that could have been done, but was deferred.
In the end, from the business perspective, the new application and the current one are basically identical: the serve the same business purpose! So why spend the hours on a rewrite? Why not just continue to support the current system.
So, as a software person, we hate certain badly broken software that we want to bulldozer and start fresh. But from a business perspective, the only concern is value, cost, and ROI.
I get your frustration, but if there are problems, you should try to craft new solutions instead of complaining.
I think IT sucks in general because there's a big lack of proper skill in programming skills, available tools, law and how businesses stimulate and reward innovation.
History showed humans overcame many technological challenges, but I think there's always more to do, but it just gets harder and trickier. I think ancient mathematicians and scientist were as frustrated, yet we know now about DNA, we have programming languages, lasers and GPS. In short there will be awesome, crazy solutions in the future one day, but they're so awesome that you don't know about it yet: science fiction and futurology are jokes compared to what real inventions and discoveries end up to be.
I feel like the people linking to cached pages have a tendency to get lambasted here for reasons I do not understand.
So I tip my nonexistent hat to you!
Well, the mediocrity described here is exactly what startups take advantage of, right?
The fact is most of the "real world" business and enterprise space, as noted by other commenters, just isn't about "developing software." In these places the goal, with respect to software development, is commoditization in order to reduce costs. They don't care if the code is pretty, or even if it actually works all the time. All that matters is that it works well enough to get the job (mostly) done most of the time. Software development is the same as tech support is the same as the CAT5 cable laying guy in these places. It's all "IT", it's all a (very expensive) cost, and it's all something the organization views with a snarl, not a smile. If you want to feel valued as a software worker, don't work at these places.
Working on getting the server back online Never got such a load of people on my blog ;)