The most annoying thing about being a programmer is working with non technical people (Managers) who don't know shit about how painful the process can be, yet assume it is a very simple process.
You find your self working as a single developer in a startup that wants to build "the next facebook". They first pretend, all they needed are basic features.
They want it completed in one month, and launch the next week.You are taking orders from all the cofounders, in random sequence. There is absolutely nothing on paper, as a working plan.
Two weeks into the project, they want most of the current
The most annoying thing about being a programmer is working with non technical people (Managers) who don't know shit about how painful the process can be, yet assume it is a very simple process.
You find your self working as a single developer in a startup that wants to build "the next facebook". They first pretend, all they needed are basic features.
They want it completed in one month, and launch the next week.You are taking orders from all the cofounders, in random sequence. There is absolutely nothing on paper, as a working plan.
Two weeks into the project, they want most of the current features in facebook. Few days later one of them had already borrowed some features from twitter which he wants included without any prior discussing with his partners.
Three weeks into the project they realize that some features of facebook are no longer necessary for the project - you are asked to discard. The company is already out their annoucing to the world they are launching in a week time. You naively work day in day out, have not completed 40% of your "not well defined" requirement. By fourth week, every body is on your neck, hammering on launching.
You try to explain why it won't be possible to launch, considering:
- incomplete features
- bugs
- security concern
- cost of continuing development on a live platform.
Then every body is looking at you as a failure, a kill joy. Then you naively follow their rants and instructions, and launch the next facebook.
----The problem has just begun----
Over time, developers realize that what cripples their progress tends to be code dependencies. For example, a class that works fine, but not only does it need its parent classes, it may not be portable to other environments, and may also use many data types specific to a particular library, framework, OS, etc. Large chunks of nice code become unreusable (or at least, not without major effort).
What's even more frustrating is that for frameworks and OSes, the vendors want it this way. There are people who are consciously trying hard to lock one's code into their system.
The same way that it's eas
Over time, developers realize that what cripples their progress tends to be code dependencies. For example, a class that works fine, but not only does it need its parent classes, it may not be portable to other environments, and may also use many data types specific to a particular library, framework, OS, etc. Large chunks of nice code become unreusable (or at least, not without major effort).
What's even more frustrating is that for frameworks and OSes, the vendors want it this way. There are people who are consciously trying hard to lock one's code into their system.
The same way that it's easier to destroy than create, it's easier to make code that's dependent than independent. It's possible to break free, but it takes a lot of work that really has nothing to do with the problem at hand. Developers want to be abstract purists but they're always dragged kicking and screaming into specific and conflicting API environments.
Corner/edge cases. These are less-common runtime situations which, if left unhandled, will cause problems ranging from missing behavior to incorrect behavior to crashing. They're usually unforseen and when discovered, suck the joy out of coding. Because of time pressure, a developer who can change his overall approach or hack a kludge will opt for the kludge, increasing tech debt. Sometimes additional corner cases will crop up, or a kludge will itself create a new case. One could argue that a key difference between junior and senior developers is the number of corner cases they experience, as seniors understand the ramifications of their designs better. Some cases are rare enough to slip into shipped product, and then users find them and the bad reviews demoralize the developers. Cases make code ugly because one winds up with all sorts of if-else conditional logic instead of elegant linear algorithms/codepaths.
Imperfections of hardware. Programmers would like to just code without worrying about things like cache misses, heap fragmentation, branch misprediction stalls, memory alignment, threads, etc. Some of that stuff can chew up enormous coding time that again has nothing to do with the problem at hand, and in the end what was once clean, simple beautiful code is now a long complex rewrite that defies comprehension.
Opposition of elegance to performance. A well-understood OOP system, e.g. can add overhead that is notably slower than if it were coded in a more procedural manner (e.g. switch statements instead of virtual methods). Programmers would like to have clean, elegant, highly readable and maintainable code that requires no further optimization.
Refactoring too late. This happens when some tech debt piles up enough to motivate the developer to refactor the code, only to realize that no additional changes/additions will benefit from said refactoring. Cue the angst of "If only I had refactored earlier."
The best way to hire software developers depends on your needs, but here’s what’s worked well for me:
- Define your project clearly: Before you start searching, write out exactly what you need—features, platform, tech stack, and timeline. A clear plan saves a lot of back-and-forth later.
- Check freelance platforms: I’ve had great luck with Fiverr. You can find software developers for almost any project, from web and mobile apps to custom tools. It’s nice because you can filter by skill, budget, and delivery time, so you’re not wasting time scrolling through profiles that don’t fit.
- Look at portfolio
The best way to hire software developers depends on your needs, but here’s what’s worked well for me:
- Define your project clearly: Before you start searching, write out exactly what you need—features, platform, tech stack, and timeline. A clear plan saves a lot of back-and-forth later.
- Check freelance platforms: I’ve had great luck with Fiverr. You can find software developers for almost any project, from web and mobile apps to custom tools. It’s nice because you can filter by skill, budget, and delivery time, so you’re not wasting time scrolling through profiles that don’t fit.
- Look at portfolios and reviews: A good developer will have examples of their work and feedback from past clients. This gives you a sense of their skills and whether they’re reliable. On Fiverr, this info is right on their profile, which makes the process easy.
- Communicate clearly: Once you’ve found a potential developer, make sure you explain your project in detail. This includes deadlines, deliverables, and any tech specifics. Good communication is key to getting what you want.
- Start small: If you’re unsure about a developer, test the waters with a smaller task or part of the project. This helps you gauge their skills before committing to something bigger.
Platforms like Fiverr are great because they simplify the whole process. I’ve used it to hire developers for both small and large projects, and it’s been super reliable. Just take the time to review profiles and be clear about your needs—it’ll save you a lot of hassle.
You constantly feel inadequate, uneducated and/or unintelligent.
There are so many things that so many other people know, or do, that you have little to no clue about, and sometimes you can't help but feel like a complete dumb-a$$.
You feel like you are learning and growing all the time and yet you feel like you're always behind.
I don't know about others - this is probably the case in all of huma
You constantly feel inadequate, uneducated and/or unintelligent.
There are so many things that so many other people know, or do, that you have little to no clue about, and sometimes you can't help but feel like a complete dumb-a$$.
You feel like you are learning and growing all the time and yet you feel like you're always behind.
I don't know about others - this is probably the case in all of human professions and it probably depends more on your personality than anything else, but that's what I find the absolute,...
I was travelling from Moscow to New Delhi and the conversation with my fellow passenger was like this:
Me: I am working for XYZ company and I work as a tester.
(His TV was not working and he constantly asked the stewards for help, but they were unable to do anything. So he moves to me and said)
He: Can't you do something like they do in a Hollywood movie, just write some code, hack the system and make my TV work...?
Me: You have a lot of expectation which even my managers don't have with me :P

Being a computer programmer can be rewarding, but it also comes with its frustrations. Here are some common challenges:
- Debugging: Finding and fixing bugs can be time-consuming and often feels like searching for a needle in a haystack. Some bugs are elusive and can take hours or even days to resolve.
- Changing Requirements: In many projects, requirements can change frequently, leading to additional work and sometimes necessitating a complete redesign of a solution.
- Technical Debt: Rushed or poorly thought-out code can accumulate technical debt, making future changes more difficult and time-consumi
Being a computer programmer can be rewarding, but it also comes with its frustrations. Here are some common challenges:
- Debugging: Finding and fixing bugs can be time-consuming and often feels like searching for a needle in a haystack. Some bugs are elusive and can take hours or even days to resolve.
- Changing Requirements: In many projects, requirements can change frequently, leading to additional work and sometimes necessitating a complete redesign of a solution.
- Technical Debt: Rushed or poorly thought-out code can accumulate technical debt, making future changes more difficult and time-consuming. Addressing this debt can be frustrating yet essential for long-term project health.
- Tooling and Environment Issues: Setting up development environments and dealing with different tools can lead to compatibility issues, especially when working in teams with diverse setups.
- Overwhelming Technology Choices: The rapid evolution of technology can make it challenging to choose the right tools and languages for a project, leading to analysis paralysis.
- Isolation: Programming can sometimes be a solitary activity, which may lead to feelings of isolation, especially in remote work environments.
- Imposter Syndrome: Many programmers struggle with feelings of inadequacy, doubting their skills and fearing that they are not as competent as their peers.
- Time Pressure: Tight deadlines and the pressure to deliver can lead to stress and burnout, making it difficult to maintain a healthy work-life balance.
While these challenges can be frustrating, many programmers find that the satisfaction of solving complex problems and creating functional software outweighs these difficulties.
Where do I start?
I’m a huge financial nerd, and have spent an embarrassing amount of time talking to people about their money habits.
Here are the biggest mistakes people are making and how to fix them:
Not having a separate high interest savings account
Having a separate account allows you to see the results of all your hard work and keep your money separate so you're less tempted to spend it.
Plus with rates above 5.00%, the interest you can earn compared to most banks really adds up.
Here is a list of the top savings accounts available today. Deposit $5 before moving on because this is one of th
Where do I start?
I’m a huge financial nerd, and have spent an embarrassing amount of time talking to people about their money habits.
Here are the biggest mistakes people are making and how to fix them:
Not having a separate high interest savings account
Having a separate account allows you to see the results of all your hard work and keep your money separate so you're less tempted to spend it.
Plus with rates above 5.00%, the interest you can earn compared to most banks really adds up.
Here is a list of the top savings accounts available today. Deposit $5 before moving on because this is one of the biggest mistakes and easiest ones to fix.
Overpaying on car insurance
You’ve heard it a million times before, but the average American family still overspends by $417/year on car insurance.
If you’ve been with the same insurer for years, chances are you are one of them.
Pull up Coverage.com, a free site that will compare prices for you, answer the questions on the page, and it will show you how much you could be saving.
That’s it. You’ll likely be saving a bunch of money. Here’s a link to give it a try.
Consistently being in debt
If you’ve got $10K+ in debt (credit cards…medical bills…anything really) you could use a debt relief program and potentially reduce by over 20%.
Here’s how to see if you qualify:
Head over to this Debt Relief comparison website here, then simply answer the questions to see if you qualify.
It’s as simple as that. You’ll likely end up paying less than you owed before and you could be debt free in as little as 2 years.
Missing out on free money to invest
It’s no secret that millionaires love investing, but for the rest of us, it can seem out of reach.
Times have changed. There are a number of investing platforms that will give you a bonus to open an account and get started. All you have to do is open the account and invest at least $25, and you could get up to $1000 in bonus.
Pretty sweet deal right? Here is a link to some of the best options.
Having bad credit
A low credit score can come back to bite you in so many ways in the future.
From that next rental application to getting approved for any type of loan or credit card, if you have a bad history with credit, the good news is you can fix it.
Head over to BankRate.com and answer a few questions to see if you qualify. It only takes a few minutes and could save you from a major upset down the line.
How to get started
Hope this helps! Here are the links to get started:
Have a separate savings account
Stop overpaying for car insurance
Finally get out of debt
Start investing with a free bonus
Fix your credit
THIS.
- if (condition)
- {
- statement;
- statement;
- }
Why?
This brace placement bothers me to no end. Why would you waste one line for a single brace? Plus, I find this:
- if (condition) {
- statement;
- statement;
- }
to be so much neater and so much more readable. Also, to people who use the first option, how much time do you spend scrolling through your code every day?
I mean, I’m sure you have valid reasons for using the first style. Actually, fuck that. No matter what you tell me, I will never get why someone would use the first style.
You know, I can deal with everyone doing their own thing, but as soon as there
THIS.
- if (condition)
- {
- statement;
- statement;
- }
Why?
This brace placement bothers me to no end. Why would you waste one line for a single brace? Plus, I find this:
- if (condition) {
- statement;
- statement;
- }
to be so much neater and so much more readable. Also, to people who use the first option, how much time do you spend scrolling through your code every day?
I mean, I’m sure you have valid reasons for using the first style. Actually, fuck that. No matter what you tell me, I will never get why someone would use the first style.
You know, I can deal with everyone doing their own thing, but as soon as there’s a group project, shit’s gonna get out of hand. Two camps are going to form, and a war is going to be declared. Chances are you won’t get anything done.
I have a friend who uses the first style, and every time our conversation shifts to programming, we argue about brace placement.
But at least we can all agree on one thing.
This:
is a fucking disgrace.
Source: Code Styling. What do you prefer?
Update 04/08/2019: I now convinced the friend I mentioned to use the same style as me.
One of the most frustrating things about being a coder is spending hours upon hours trying to debug a single line of code. You might think you've finally found the problem, only to realize that it's actually something completely different. It's like a never-ending game of "whack-a-mole."
Another frustrating thing is when you spend weeks or even months working on a project, only to have it scrapped or completely changed by the client or management. It can feel like all that effort and hard work was for nothing.
And let's not forget about dealing with legacy code. It's like trying to decipher anci
One of the most frustrating things about being a coder is spending hours upon hours trying to debug a single line of code. You might think you've finally found the problem, only to realize that it's actually something completely different. It's like a never-ending game of "whack-a-mole."
Another frustrating thing is when you spend weeks or even months working on a project, only to have it scrapped or completely changed by the client or management. It can feel like all that effort and hard work was for nothing.
And let's not forget about dealing with legacy code. It's like trying to decipher ancient hieroglyphics. You might spend hours trying to figure out what the code does, only to realize that it's doing something completely irrelevant or unnecessary.
But hey, at least we have Stack Overflow, right? And nothing beats that feeling of finally getting your code to work after hours of frustration. It's like winning the lottery, except instead of cash, you get the satisfaction of a job well done.
Update:
I recommend reading the book "The Pragmatic Programmer: From Journeyman to Master" by Andrew Hunt and David Thomas. This book provides practical advice on how to become a better programmer and overcome common challenges in the field. It covers topics such as debugging, refactoring, and working with legacy code.
As an added bonus, the book is available for free on Audible with a trial membership. So, if you're an audiobook fan, you can give it a listen and see if it helps you with your coding frustrations.
https://amzn.to/3Nt6y9DDon't forget to leave an upvote if you found this answer helpful!
I once met a man who drove a modest Toyota Corolla, wore beat-up sneakers, and looked like he’d lived the same way for decades. But what really caught my attention was when he casually mentioned he was retired at 45 with more money than he could ever spend. I couldn’t help but ask, “How did you do it?”
He smiled and said, “The secret to saving money is knowing where to look for the waste—and car insurance is one of the easiest places to start.”
He then walked me through a few strategies that I’d never thought of before. Here’s what I learned:
1. Make insurance companies fight for your business
Mos
I once met a man who drove a modest Toyota Corolla, wore beat-up sneakers, and looked like he’d lived the same way for decades. But what really caught my attention was when he casually mentioned he was retired at 45 with more money than he could ever spend. I couldn’t help but ask, “How did you do it?”
He smiled and said, “The secret to saving money is knowing where to look for the waste—and car insurance is one of the easiest places to start.”
He then walked me through a few strategies that I’d never thought of before. Here’s what I learned:
1. Make insurance companies fight for your business
Most people just stick with the same insurer year after year, but that’s what the companies are counting on. This guy used tools like Coverage.com to compare rates every time his policy came up for renewal. It only took him a few minutes, and he said he’d saved hundreds each year by letting insurers compete for his business.
Click here to try Coverage.com and see how much you could save today.
2. Take advantage of safe driver programs
He mentioned that some companies reward good drivers with significant discounts. By signing up for a program that tracked his driving habits for just a month, he qualified for a lower rate. “It’s like a test where you already know the answers,” he joked.
You can find a list of insurance companies offering safe driver discounts here and start saving on your next policy.
3. Bundle your policies
He bundled his auto insurance with his home insurance and saved big. “Most companies will give you a discount if you combine your policies with them. It’s easy money,” he explained. If you haven’t bundled yet, ask your insurer what discounts they offer—or look for new ones that do.
4. Drop coverage you don’t need
He also emphasized reassessing coverage every year. If your car isn’t worth much anymore, it might be time to drop collision or comprehensive coverage. “You shouldn’t be paying more to insure the car than it’s worth,” he said.
5. Look for hidden fees or overpriced add-ons
One of his final tips was to avoid extras like roadside assistance, which can often be purchased elsewhere for less. “It’s those little fees you don’t think about that add up,” he warned.
The Secret? Stop Overpaying
The real “secret” isn’t about cutting corners—it’s about being proactive. Car insurance companies are counting on you to stay complacent, but with tools like Coverage.com and a little effort, you can make sure you’re only paying for what you need—and saving hundreds in the process.
If you’re ready to start saving, take a moment to:
- Compare rates now on Coverage.com
- Check if you qualify for safe driver discounts
- Reevaluate your coverage today
Saving money on auto insurance doesn’t have to be complicated—you just have to know where to look. If you'd like to support my work, feel free to use the links in this post—they help me continue creating valuable content.
“You are a software engineer right?” Yeah.
- Can you install Windows 7/8/10?
- Can you remove the virus from my system?
- The new FIFA game is not loading. Why?
- My internet isn’t working. What’s wrong with it?
- I need to *hack* my gf’s Facebook account. How can I do it?
…
We write code. We are not tech support!
For me it is understanding exactly what existing code does and why it is there.
Literally, I am reading code saying “what were they thinking here?”
Because I need to know.
I can’t begin writing my code until I understand how it fits into the existing systems.
Does my code need to co-operate with existing components? Does it require changes to existing code? If so what, and where?
Will existing tests need to change either what they test, or how they test?
Will my code break an assumption relied on by old code?
Will it change a schema or protocol depended on by existing code?
And all of this is made muc
For me it is understanding exactly what existing code does and why it is there.
Literally, I am reading code saying “what were they thinking here?”
Because I need to know.
I can’t begin writing my code until I understand how it fits into the existing systems.
Does my code need to co-operate with existing components? Does it require changes to existing code? If so what, and where?
Will existing tests need to change either what they test, or how they test?
Will my code break an assumption relied on by old code?
Will it change a schema or protocol depended on by existing code?
And all of this is made much, much harder by low quality source code. Unpicking that stuff is horrendously taxing.
Lots of effort to sometimes end up saying ‘I see. After all that, we fetch the latest list of adverts, only there is a bug where that will not happen if the last advert was placed on Thursday which is the cut-off print date and nobody actually has done that yet.”
But that might be thousands of lines of unstructured code, all with horrendous names, no conventions at all, no tests, and of course a custom implementation of some lame sort routine where the coder did not think to just call .sort()
That kind of work regularly makes me consider doing other work.
When I had my kitchen refitted, the old one was just ripped out. I was envious of being able to “just build a kitchen”. I thought how much simpler my life would be if I could do that.
Sadly it isn’t, as you need to replace all the existing functions of a five year old crufty codebase.
And it doesn’t take long for software to go past its sell-by date; about five years of active development in my experience.
Just long enough for the new team to not understand what the initial team were trying to do and the constraints they were under.
So - that. Crufty old code I must understand.
With today’s modern day tools there can be an overwhelming amount of tools to choose from to build your own website. It’s important to keep in mind these considerations when deciding on which is the right fit for you including ease of use, SEO controls, high performance hosting, flexible content management tools and scalability. Webflow allows you to build with the power of code — without writing any.
You can take control of HTML5, CSS3, and JavaScript in a completely visual canvas — and let Webflow translate your design into clean, semantic code that’s ready to publish to the web, or hand off
With today’s modern day tools there can be an overwhelming amount of tools to choose from to build your own website. It’s important to keep in mind these considerations when deciding on which is the right fit for you including ease of use, SEO controls, high performance hosting, flexible content management tools and scalability. Webflow allows you to build with the power of code — without writing any.
You can take control of HTML5, CSS3, and JavaScript in a completely visual canvas — and let Webflow translate your design into clean, semantic code that’s ready to publish to the web, or hand off to developers.
If you prefer more customization you can also expand the power of Webflow by adding custom code on the page, in the <head>, or before the </head> of any page.
Trusted by over 60,000+ freelancers and agencies, explore Webflow features including:
- Designer: The power of CSS, HTML, and Javascript in a visual canvas.
- CMS: Define your own content structure, and design with real data.
- Interactions: Build websites interactions and animations visually.
- SEO: Optimize your website with controls, hosting and flexible tools.
- Hosting: Set up lightning-fast managed hosting in just a few clicks.
- Grid: Build smart, responsive, CSS grid-powered layouts in Webflow visually.
Discover why our global customers love and use Webflow.com | Create a custom website.
Family: "Oh, you study computer science. Fix my computer!"
People around you:
"So you're a programmer? Which laptop should I buy?"
"Oh, you're a computer guy? My broadband isn't working. Can't you do something?"
"I thought programmers could do anything. I didn't know that you didn't know how to hack people's accounts."
"Isn't hacking serious programming stuff?"
These questions/comments -_-
Backwards compatibility, short-term thinking and the cult of "worse is better".
I want to do things well, but there's a lot of pressure to do things quickly and familiarly instead. Sometimes it's justified, but it feels like the current programming/business culture has swung way too far in that direction.
It makes sense, I suppose, psychologically. People seem far more concerned about big up-front costs than small persistent ones. A tiny drag on productivity can have a far larger absolute impact than a major cost up-front but doesn't feel as bad. If anything, it makes people feel busy and produ
Backwards compatibility, short-term thinking and the cult of "worse is better".
I want to do things well, but there's a lot of pressure to do things quickly and familiarly instead. Sometimes it's justified, but it feels like the current programming/business culture has swung way too far in that direction.
It makes sense, I suppose, psychologically. People seem far more concerned about big up-front costs than small persistent ones. A tiny drag on productivity can have a far larger absolute impact than a major cost up-front but doesn't feel as bad. If anything, it makes people feel busy and productive.
And so, instead of solving interesting or fundamental problems, I end up spending months hacking something ugly together on top of absolutely hideous eldritch protocols like IMAP which were designed—poorly—to deal with the specific concerns of the particular engineers who made up the relevant committee almost 30 years ago. Are those trade-offs relevant any more? Ha ha ha. Ha.
Then, instead of fixing this (because getting people to adopt new things is hard), companies just silently stopped supporting parts and added layers of their own. Now we have a protocol with the same poor, obsolete design at its core but lacking even the minor grace of being meaningfully standardized.
Not that it ever was meaningfully standardized: the actual RFCs are a far cry from the sort of clear, unambiguous formalism I would like! They're written in an ambiguous natural language akin to legalese, with all the clarity that implies. More importantly, formalizing the standard completely would have forced them to radically simplify it instead of baking in every arbitrary idea and feature they could invent.
The logic I was implementing? It could be described in a screenful of pseudocode. Which bloated to pages and pages and pages of real code, dealing with all this cruft. Held together mostly with hope.
It makes me glad I don't know a thing about civil engineering because I'd be afraid to walk through the streets otherwise.
Of course, I also totally sympathize with the people who do this. I make the same sorts of designs myself. There's just so much pressure for it, and it's easier to hack something together than put any real thought or design into it. But the fact that I do this myself, despite being deeply troubled by the trend, just makes it worse.
Pretty much the only thing I don't sympathize with is the idea that this is a good thing or good engineering.
Still, it is fun to rant about.
I think one of the most frustrating parts about being a computer programmer is the tiny errors that occur over and over again. At the time it didn't feel like such a big deal and it was just a tiny error that was easily fixed but then there was another and another and it just keeps going. At the end of the day you are really annoyed because all these tiny errors built up and made you mad.
Another problem I think can be very frustrating is third party API's. You rely on them a lot sometimes and then you notice an issue with it or need a new feature but that particular API doesn't give you any so
I think one of the most frustrating parts about being a computer programmer is the tiny errors that occur over and over again. At the time it didn't feel like such a big deal and it was just a tiny error that was easily fixed but then there was another and another and it just keeps going. At the end of the day you are really annoyed because all these tiny errors built up and made you mad.
Another problem I think can be very frustrating is third party API's. You rely on them a lot sometimes and then you notice an issue with it or need a new feature but that particular API doesn't give you any source to fix the issue yourself, so you need to ask the author of the API nicely and hope for the best.
Cross-platform development can be a very frustrating thing because it requires you to learn X(depending on how many platforms you support) different ways of doing the exact same most of the time. That can be very frustrating. On top of that cross-compiling can also give you annoying headaches.
Using the wrong program to manage your huge pile of code such as subversion and so forth. It can be very frustrating when you choose the wrong program for your solution and notice mid-development that this program causes more trouble than the missing documentation.
Developing your solution around a version of a third party API just to see that a very awesome update was released that is not backwards compatible, making you have to re-write half of the solution just because you like the clean API or maybe even the performance boost.
False design choices that meant good but are absolutely troublesome during development and because too much time was spent on realizing these designs they can no longer be reverted.
Not having a build server and forgetting to compile your project on all profiles - ending up with errors that are very hard to trace back because there has been a dozen changes before anything was compiled to see if it even works.
False documentation: This especially applies if the programmer who created the solution did not document it and another programmer had to make a documentation for the solution.
Programmers relying almost infinitely on goto, using it everywhere possible and thus making the code impossible to track.
Bloating a single file with insane amounts of code, especially classes, making it not humanly possible to keep track of what the class is actually supposed to do at all.
Programming languages that do not even care about syntax at all. This especially applies to PHP for me, it can be very frustrating to read people's code when the syntax is simply impossible on your eyes.
Your boss having very high expectations of you and your collegues but there not being enough time/resources to even come close to these expectations.
Your sponsor rushing your development and making it impossible for you to complete the initial software the way you desired.
That's a couple of the frustrating things that I come around while being a programmer. I guess it really depends on what people consider frustrating.
- Managers always want a time estimate now.
- Customers always want to know every last thing your doing.
- Non-programmer technical staff either don't want to talk to you or ask a million "dumb" questions.
- If your project goes over aforementioned time estimate, managers want a detailed report about where you are and why you went over estimate and when you'll be done
- Managers reduce your estimate before going to their boss to make it look like they're keeping things moving
- That API you've been using for the last 6 months just got updated with a huge security fix. It's not backwards compatible. Your boss
- Managers always want a time estimate now.
- Customers always want to know every last thing your doing.
- Non-programmer technical staff either don't want to talk to you or ask a million "dumb" questions.
- If your project goes over aforementioned time estimate, managers want a detailed report about where you are and why you went over estimate and when you'll be done
- Managers reduce your estimate before going to their boss to make it look like they're keeping things moving
- That API you've been using for the last 6 months just got updated with a huge security fix. It's not backwards compatible. Your boss says "we can't rewrite all of that, just keep using the old one and work around the security issues"
- Explaining that some things either can't or shouldn't be done or would require extensive low level development is poorly received.
- The new guy on the team wants to overhaul your entire process because "Over at company X we always did ___ and it worked really well for us."
- The entire team wants to go to CI but no one has the time and the management won't budget the time.
- Whatever you need to do, ask 3 programmers how to do it, you'll get 4 answers (2 of which will be "research")
- You know better than to write spaghetti code, but management is putting pressure on to get things done now, so you write spaghetti code because it sort of works now. Two years later when you need to fix it, you have no idea where to start, despite knowing better in the first place.
- Management doesn't understand the "cost" of task shift, so always thinks that their "emergency" item can be switched to, worked on for the 2 days you say it will take, and it won't add any time to the overall estimate because "it was in the plan already"
- To add to that point, they then forget about their emergency a day later and when you proudly inform them that you got their emergency item done, they ask why you worked on that
- One thing that seemed REALLY HARD was actually really easy to do in code, so now the managers can't comprehend why their REALLY EASY feature is actually really hard to do.
- Developers get put into qa roles when they are between products.
- When you join a team and start sifting through the legacy code only to discover that your predecessor, who is REALLY WELL LIKED wrote completely terrible code that is impossible to maintain.
Note: Not all of the above is based on my actual experience, in fact, most of it is based on problems I've helped others solve. I've been fortunate in that my manager is very technical and knows how to teach the people above how things work.
“Alright, just finished working on my 250 line script on a fully functional tic-tac-toe game. Now to just try to run it and- wait, what? It crashed? It isn’t working? What? Maybe if i rewrite this area.Nope. If i alter this so thee isn’t as many steps, making it more streamlined. Nope.”
-One eternity later-
“ forgot a semi-colon.”
(Of course, this depends on the program you’re using. )
“Alright, just finished working on my 250 line script on a fully functional tic-tac-toe game. Now to just try to run it and- wait, what? It crashed? It isn’t working? What? Maybe if i rewrite this area.Nope. If i alter this so thee isn’t as many steps, making it more streamlined. Nope.”
-One eternity later-
“ forgot a semi-colon.”
(Of course, this depends on the program you’re using. )
I think the general lack of understanding of the difference between a computer scientist and a software engineer. The former studies computers as the object of study. They do not develop applications. That's the job of the latter. Others use computers as part of their job, but their job is not developing applications, it is to use the computer as a tool to make their own job easier or to get specific results (though they may program it to do that). For example, control engineers build models on computers to understand how their control will work. They are programmers. But they are not 'softwar
I think the general lack of understanding of the difference between a computer scientist and a software engineer. The former studies computers as the object of study. They do not develop applications. That's the job of the latter. Others use computers as part of their job, but their job is not developing applications, it is to use the computer as a tool to make their own job easier or to get specific results (though they may program it to do that). For example, control engineers build models on computers to understand how their control will work. They are programmers. But they are not 'software engineers'. Similarly for mechanical engineers, astrophysicists and even cognitive scientists.
To be clear, these are all 'programmers' but what they are trying to achieve with their programming is very different. Trying to apply the wrong standards of performance and evaluation to those in each group can be very frustrating.
To lift one of my answers in the comments below to better explain what I'm getting at here, I'm really talking more about approach than degree granted:
Customer: I need a program that will tell me the stress on this wing design.
Software engineer: OK, let's work on the requirements for your software system. How do you want the information presented, what kind of accuracy do you need?
Typical Nonspecific Programmer: Hey I wrote one of those last week. It was for for the metal arch support in shoes, but I think I can make it work. Give me till Thursday!
Computer Scientist: This seems like an instance of simulated annealing. If we had a machine with a hypercube topology, and we assume that our communications between processors is instantaneous, we can converge on an O(2**n(logn**4)) solution, with a speedup approximating the 16th root of the number of processors divided by an inverse ackerman's factor.
Software engineer: We can't start developing the solution until we understand the problem!
Typical Nonspecific Programmer: That's so 1998. Agile, baby! Write the solution first, let the customer be the beta tester! We can even charge them for the privilege, like Microsoft!
Computer Scientist: Hypercube machines will be difficult to program in traditional imperative languages, so we really need to construct a language optimized for expression of problems over the convex hull of a processor topology in 5-space, with a way to capture interprocess messages as speech acts so we can model the local effect of any request, as well as to model the implications of uniform vs locally negotiated policies according to this semantic model. Now I wonder if there is a minimum amount of energy required to perform an inference, as that will set a upper limit on the effectiveness of adding processing power without changing our algorithmic approach. Of course, communication latency will have a deleterious effect, but that's an engineering problem.
You reduce the latency of your app by a considerable amount and increase the FPS to a relatively high value by doing all sort of crazy asynchronous shit for a week and when you show it to your manager he ...
No doubt that most of you people who aren’t programmers, or have never been programmers, look at those of us who are or were programmers, and think, “Boy, that’s gotta be a great job. Exciting, fast-paced, highly compensated, well respected, and, above all, extremely sexy. What’s not to love about being a programmer? I wish I was one.” Those are understandable assumptions. But, really, it’s not always all wine, roses, and hanging out with George Clooney at his Italian villa.
Oh no. This may be surprising, but it can often be headache-inducing. As a matter of fact, after 13 years of raising my k
No doubt that most of you people who aren’t programmers, or have never been programmers, look at those of us who are or were programmers, and think, “Boy, that’s gotta be a great job. Exciting, fast-paced, highly compensated, well respected, and, above all, extremely sexy. What’s not to love about being a programmer? I wish I was one.” Those are understandable assumptions. But, really, it’s not always all wine, roses, and hanging out with George Clooney at his Italian villa.
Oh no. This may be surprising, but it can often be headache-inducing. As a matter of fact, after 13 years of raising my kids, I’d blame the 15 or so years as a developer as the second biggest cause for my gray hairs and bald spot. Just like any other job, it’s filled with its frustrating, hair-pulling, banging-your-head-against-the-wall moments.
Based on my own experiences, here now, in no particular order, are seven of the most frustrating things I found about being a programmer:
People assuming you can fix any computer-related problem - Yes, I write code for a living; no, I can’t help you with your printing problem or that attachment you can’t open or that laptop that won’t boot up. Unless you want to buy me lunch or a beer, then maybe I can help.
End users not providing enough information about bugs - Thanks for the bug report, but writing simply “It doesn’t work” isn’t all that helpful. How about telling me things like what screen you were on, what action you took, what you expected to happen and what actually happened, and what (if any) error message you got. It never hurts to include browser and OS or platform, either. Basically, by providing more information upfront you will save us both the time of me having to come back to you with “Now what exactly were you doing?” and will help get your problem solved faster.
Storing code in the database - I got my start as a PL/SQL programmer, writing stored procedures and triggers and such, and I kind of liked it. I also understand the need for it sometimes but the further along I went, the less I wanted to put code in the database; it made code debugging and maintenance a royal pain. It’s hard to beat running the good old find command when you’re trying to track down the source of an error message, not to mention being able to review file revision histories and such.
Overly zealous Scrum Masters - Agile came into my life later in my coding career and, for the most part, I liked it. But one thing I didn’t like, Scrum Masters who made the Nazis look easy going. Does it really matter who moves the yellow sticky note to the “In Progress” column of the Scrum board? Will the project come crashing down if I sit (or lean on a table) during a stand-up? Take it easy, fella.
People ignoring documentation - Part of my job as a developer was to write documentation, sometimes technical docs for other developers, and sometimes end-user documentation. It was written and made available to you for a reason; please at least take a spin through it before coming to me and asking me to explain from scratch how something works.
Tabs/indents set to anything other than four characters - This was my own personal preference. Four characters just looked right when reading code; anything else looked wrong and made me want to fix it.
Project managers ignoring or understating time estimates to complete a task or project - If you don’t like the time estimate I’ve given you for how long it will take to build or code something, let’s talk about it. Don’t simply ignore it or cut in half and proceed with your timeline planning. I didn’t pull the estimate out of thin air; it’s based on my experience and some careful thought.
I’m sure I’m leaving something out. It’s been a few years since I was in the coding trenches and I’ve probably repressed a few particularly frustrating memories.
thank you
Well, unless you actually is nothing but a coder, I would say that the most frustrating part, is to be called a “coder”. I make software for a living, but I do so much more, than simply coding. Here is a (non-exhausting) list, of things you do in an average project:
- Collect user stories
- Talk to stake-holders
- Make a project time schedule
- Design a solution
- Find the appropriate technologies
- Establish the infrastructure
- Manage security and compliance requirements
- etc.
(Notice that I still haven’t gotten to the coding part)
So back to your question. It is frustrating, when people think, that all I do, is wri
Well, unless you actually is nothing but a coder, I would say that the most frustrating part, is to be called a “coder”. I make software for a living, but I do so much more, than simply coding. Here is a (non-exhausting) list, of things you do in an average project:
- Collect user stories
- Talk to stake-holders
- Make a project time schedule
- Design a solution
- Find the appropriate technologies
- Establish the infrastructure
- Manage security and compliance requirements
- etc.
(Notice that I still haven’t gotten to the coding part)
So back to your question. It is frustrating, when people think, that all I do, is writing code. I do so much more than that. And quite often, the most difficult task, isn’t the coding part.
As a programmer, you learn a lot of interesting things and clever approaches. You may meet talented seniors or architects and learn from them. You'll develop a feeling how good software would look like, exchange with your peers, grow wise.
Then you come into another team.
You can't pick up where you left. Something is always in the way. The team, or the architect, or a manager will have a diametral opinion on “correct” software development. If that doesn't help the new framework or language will contain a restriction that just not lets you do it. Or they are with you but there's a half-finished
As a programmer, you learn a lot of interesting things and clever approaches. You may meet talented seniors or architects and learn from them. You'll develop a feeling how good software would look like, exchange with your peers, grow wise.
Then you come into another team.
You can't pick up where you left. Something is always in the way. The team, or the architect, or a manager will have a diametral opinion on “correct” software development. If that doesn't help the new framework or language will contain a restriction that just not lets you do it. Or they are with you but there's a half-finished system already.
If you're a functional duct tape guy, everything will be bloated OO. If you're an OO girl, everything will be static. If you learned to paint the Mona Lisa, you'll be required to paint white walls, if you're a minimalist, meet Mr. Monolith, if you're a designer, the other team will do that for you, and they won't talk to you. If you're used to reusable components, now it's copy paste, if you're a top down worker, you'll now work inside out.
Then you go through the five phases and adapt. You learn, exchange, appreciate and grow.
At that point the company will be sold or go bankrupt or hit by lightning or eaten by The Great Old Ones.
And you can start over.
'Can you tell me what profession are you in?'
'Oh, I make games mostly, but sometimes I make mobile and web apps.'
'You make GAMES! That's so cool, can you make one for me?'
'Erm, what?'
'You know that Mario/Contra game. Can you make a contra game for me?'
'Isn't that already been done? You can buy a Contra game.'
'Yeah! But I still want you to ma...
Questions like this:
And... situations like this:
Questions like this:
And... situations like this:
I don’t hate it. It more falls along the lines of “often the greatest strength is the greatest weakness.”
Here it is: “Programmers can work anywhere at any time.”
I can (and have) worked on vacations, nights, weekends, you name it. That has strained relationships and perhaps my health. There is no refuge.
It takes effort and planning to erect boundaries, because there are no natural boundaries about when I can work. Both a blessing and a curse.
(BTW: I love programming. Best career ever! I also love chocolate. Both are healthier in moderation.)
Not necessarily in any order (except for the first item):
- Office Politics
- Time wasting meetings
- Meetings that interrupt my work flow or mind set
- Management who are clueless and egotistic
- Inadequate machinery (especially the provisioning of under-powered laptops, inadequate screen real estate and poor network services)
- Noise (especially chatter)
- Building a product I know is completely pointless and doomed to failure (aka anything at Intel but especially Digital Home and Media Stack Software)
- Travel time
- People who think programming is low stress or easy or is a 9-to-5 type of job
I really enjoyed contrac
Not necessarily in any order (except for the first item):
- Office Politics
- Time wasting meetings
- Meetings that interrupt my work flow or mind set
- Management who are clueless and egotistic
- Inadequate machinery (especially the provisioning of under-powered laptops, inadequate screen real estate and poor network services)
- Noise (especially chatter)
- Building a product I know is completely pointless and doomed to failure (aka anything at Intel but especially Digital Home and Media Stack Software)
- Travel time
- People who think programming is low stress or easy or is a 9-to-5 type of job
I really enjoyed contract work because I can let the stupidity wash over me without dragging me down. But when I work for an actual company I can’t help caring about the success of the company. Which routinely puts me at odds with ‘management’.
You spend the vast majority of your time fixing problems in code that you and other people wrote. And when you fix one bug, another one suddenly pops up. It’s like playing whack-a-mole but not in the fun way.
If you have a low frustration tolerance, pick a different career.
Language and framework bugs.
You spend days figuring out why your code doesn't work. Only to find out you're hitting a bug on the language or framework.
Case in point: Groovy and Grails.
Allow me to use a bathroom shower analogy. A shower in the past had just a single knob. You turn it on and water will flow out of it. Then in cold places, where there was a need to have hot water come in and mix with cold water, two knobs came in. One to let hot water out and the other one for the normal water.
Over time, they added an additional wire with a faucet to have a hand shower. And then the same shower had a fourth connection to a regular tap. There are luxury ones that have various knobs and levers to let water jets massage your body at various speeds.
Thankfully the shower did not ge
Allow me to use a bathroom shower analogy. A shower in the past had just a single knob. You turn it on and water will flow out of it. Then in cold places, where there was a need to have hot water come in and mix with cold water, two knobs came in. One to let hot water out and the other one for the normal water.
Over time, they added an additional wire with a faucet to have a hand shower. And then the same shower had a fourth connection to a regular tap. There are luxury ones that have various knobs and levers to let water jets massage your body at various speeds.
Thankfully the shower did not get more complicated than that.
Now imagine a CPU and memory which are like a million transistors or knobs to turn off and on. As a programmer you are exactly doing that, albeit not all the million transistors all at once, but a large number sometimes tens of thousands of them with your code.
The fact that you don’t realize it at the level of a high level language does not take away the complexity of what you are doing.
When you do complex things, they don’t get along so easily to produce the desired outcome. It takes a long time for you to tweak things until you see what you want. So real world programming is not for the faint hearted.
Software engineering looks easy on the outside when you begin to learn to program and get successful at simple ones. As you build complex code that does difficult things, you need enormous patience, perseverance to be at it and see it through.
Therefore for those who do not understand this and try to get into this field for quick money or success will soon find it very frustrating.
This is what I should face everyday! Whenever I sit in front of my laptop, my father will say, "Yogesh dont waste time, why are you playing on computer? Please go and study! " .
Perhaps discovering that “coding” is a pretty useless skill, unless you actually know something about the problem at hand.
(Kind of like learning to type, and realizing you know nothing about how to write.)
If you find any part of software engineering frustrating, pick a different career. (I couldn’t retire from it until I was 70, because I was having too much fun.) Sure there were bugs that were absolutely maddening, but the satisfaction of solving them was probably (I can’t say “definitely”, I’ve never tried it) better than a crack high. (I still remember one Friday in 1978. I arrived at work around 8 AM. I finally left work around 4 AM Saturday. We just couldn’t figure out how to get a “who talks first” situation resolved. [No Ethernet in those days - that would have made it simple.] When we f
If you find any part of software engineering frustrating, pick a different career. (I couldn’t retire from it until I was 70, because I was having too much fun.) Sure there were bugs that were absolutely maddening, but the satisfaction of solving them was probably (I can’t say “definitely”, I’ve never tried it) better than a crack high. (I still remember one Friday in 1978. I arrived at work around 8 AM. I finally left work around 4 AM Saturday. We just couldn’t figure out how to get a “who talks first” situation resolved. [No Ethernet in those days - that would have made it simple.] When we finally got it working solidly every try, there were 4 foot wide grins all around. Then we went home. [I don’t remember if we even turned everything off - we just wanted to get out of there.] I believe the system is still in operation.)
Being expert in a specific speciality doesn't mean understand everything
If you were a programmer probably they will need you to do something about that
So the hard thing is that you test this awkward moment when you have no idea about the problem or how resolve it so you will absolutely loss your value and something such as that
There is nothing difficult being a programmer, it is a continuous evolving and training process of a lifetime. The more you are experienced, the better you can solve a challenging problem. It is amazing, if you seek to love challenges and solve puzzles with beautiful lines of code.
These may be few list of challenges I have seen developers facing.
- Workload : Can be managed with proper time management and decipline, you dont have to stick around in office for long hours. The peaceful and creative part of the brain solves the task and not your physical labor. Decipline in life, proper excersise, m
There is nothing difficult being a programmer, it is a continuous evolving and training process of a lifetime. The more you are experienced, the better you can solve a challenging problem. It is amazing, if you seek to love challenges and solve puzzles with beautiful lines of code.
These may be few list of challenges I have seen developers facing.
- Workload : Can be managed with proper time management and decipline, you dont have to stick around in office for long hours. The peaceful and creative part of the brain solves the task and not your physical labor. Decipline in life, proper excersise, meditation and yoga can higly imporove your productivity, efficency and quality of work. Keep health as a top priority, maintain proper diet and excersise.
- Workpressure : Most developers work away from home, and that is a big problem because, there is no way to vent out the frustruation. Build a good social network of friends and family. Sharing your thoughts with your close knits can reduce a lot of your frustruations.
- Never Stop Learning : Technology is evolving day by day and the day you stop learning, you are out of market. Keep track of changes in the technology, be an active participant in the discussion forums and programming conferences. Keep learning new technologies. Teach others if possible.
- Never spent everything you earned: Layoffs happens quite often when ever a technology gets outdated or out of demand in the market. Be prepared always for storm, though it may never come, but when it comes, it could be just another day in life.
- Plan your Career for at least 10 - 15 years: Its very important to set your life goal and career goal, and plan ahead to reach those goals. If your current job is not helping you out to reach there, it is a wise decision to move to a better one.
- Maintain a professional network : Once you are out of college and start working, Industry is your university, connect with professionals and mentors in your industry. Interact and gain insights and knowledge.
Good Luck!
When your part of the code stops working because someone else changed their part of the code. Often their functions take more arguments than they did before. Sometimes they are eliminated entirely or placed in a different file.
I also dislike merges because it's like, you want to change the code this way, I want to change the code that way, so how should we change the code? I've always been able to find a way to incorporate both our changes, but if there was a real conflict it would be an awkward process.
Frustration.
Few people realise the ungodly amounts of frustration that go into programming, particularly in the early stages. Some people believe that’s why, until it became a mainstream job, new programmers were usually already to frustration.
Frustration.
Few people realise the ungodly amounts of frustration that go into programming, particularly in the early stages. Some people believe that’s why, until it became a mainstream job, new programmers were usually already to frustration.
What is the hardest part about being a computer programmer?
Being allowed to concentrate.
Getting the people around you to understand that every interruption, even “I just wanted you to know”, destroys the picture in your head of what the program is and does. Without that picture, you cannot alter or add to the program.
It takes me at least half an hour to create that understanding of the program. Your interruption destroys it and wipes everything I have built in my head. I have to go back to the beginning. You interrupt me twice in a morning, and I have lost half the day.
My frustration at being
What is the hardest part about being a computer programmer?
Being allowed to concentrate.
Getting the people around you to understand that every interruption, even “I just wanted you to know”, destroys the picture in your head of what the program is and does. Without that picture, you cannot alter or add to the program.
It takes me at least half an hour to create that understanding of the program. Your interruption destroys it and wipes everything I have built in my head. I have to go back to the beginning. You interrupt me twice in a morning, and I have lost half the day.
My frustration at being unable to make progress builds up till I am ready to throttle the next person that speaks to me.
Just FUCK OFF.
Pointy Haired Bosses who don't have any clue what you do or what your value is to the team or the company.
These idiots tend to assume all resources are interchangeable cogs and therefore create multiple problems and ultimately drive away all of their best performers.
When you have everything laid out (the old “plan your work so you can work your plan”) for everything and your boss says: “I need this done ASAP”.
That’s right. From my point of view, the most difficult part is dealing with a boss who is unwilling to recognize and prioritize your work. You can prioritize all you want, but the boss trumps all of that. If you have a boss that just looks at the end result and not the person they are managing, you’re in trouble.
Now, the reality is that all managers need people to do unexpected work and sometimes things happen where something needs to be expedited.
When you have everything laid out (the old “plan your work so you can work your plan”) for everything and your boss says: “I need this done ASAP”.
That’s right. From my point of view, the most difficult part is dealing with a boss who is unwilling to recognize and prioritize your work. You can prioritize all you want, but the boss trumps all of that. If you have a boss that just looks at the end result and not the person they are managing, you’re in trouble.
Now, the reality is that all managers need people to do unexpected work and sometimes things happen where something needs to be expedited. I realize that it happens. But a good manager manages and if the workload is too high, goes through the process to manage it.
Your job is to manage your manager as well as doing the actual work.
That’s the “deal.” You make them look good and they allow you to do your job. When they don’t protect the employees from outside influences, you won’t be able to do your job and will burn out.
I had one manager in 35+ years who didn’t do it… it was the last one who caused me to retire (probably about a year early).
Continually learning and applying new technologies.
Evaluating new technologies in light of the existing technology base.
Planning to migrate to new technologies when the old one is terminated.
Writing applications which are easy to debug once they are moved to a production environment (code instrumentation).
Aligning the needs of the client with the technology in the timeframe required.
Changing Requirements from Clients and the environment.
All of those (important) things are less important than the manager / employee relationship.
What is the hardest part about being a computer programmer?
I’ve enjoyed reading some of the other answers.
For my part, the hardest part is explaining to management just how much work its going to take to finish, and that it is IMPOSSIBLE to predict exactly how much time something will take, so that they can know how much it will cost.
Most budgets for software are set by an organisations accountant.
“We can spend this much to do that”
Then they get some poor contractor to agree to the price, for a vague statement of requirements, and start paying in installments.
What the programmer really needs t
What is the hardest part about being a computer programmer?
I’ve enjoyed reading some of the other answers.
For my part, the hardest part is explaining to management just how much work its going to take to finish, and that it is IMPOSSIBLE to predict exactly how much time something will take, so that they can know how much it will cost.
Most budgets for software are set by an organisations accountant.
“We can spend this much to do that”
Then they get some poor contractor to agree to the price, for a vague statement of requirements, and start paying in installments.
What the programmer really needs to start is a complete discovery and analysis of current business operations, but no, the first thing to “they” ask for is “An input screen we can show the Managing Director to prove that things are progressing”
Then the game of “variations” comes into play. The Customer says “Oh, we got that wrong in the contract”
The programmer says “Oooh, that's going to be expensive”, and ratchets up the price to cover the fact that they didnt do all the business design first.
So all contracts end up 5 times the budgeted cost, 4 times the planned time, and everyone walks away upset and frustrated.
THAT'S the hardest bit of being a programmer.
Q: What is the most difficult part about being a programmer? Why?
Thx for the A2A.
IMHO, the following tasks are example that belong to the most difficult part of being a programmer:
- Fully understand the needs and how they expressed as requirements/user stories so that you can define the problem and prioritize properly as well as have a meaningful dialogue with stakeholders. Why, well, a lot of shelfware is developed in the world, see, for example, The hidden cost of wasted software budgets,
- When critical details in complex frameworks work against you to implement trivial functionality. In particu
Q: What is the most difficult part about being a programmer? Why?
Thx for the A2A.
IMHO, the following tasks are example that belong to the most difficult part of being a programmer:
- Fully understand the needs and how they expressed as requirements/user stories so that you can define the problem and prioritize properly as well as have a meaningful dialogue with stakeholders. Why, well, a lot of shelfware is developed in the world, see, for example, The hidden cost of wasted software budgets,
- When critical details in complex frameworks work against you to implement trivial functionality. In particular, the JavaScript eco system is an endless source of meaningless conflicts where functionality can work well for all elements but for some weird reason not for another. See Thou Shalt Not Depend on Me
- Estimating resource requirements, risks etc. For example, Barriers to Refactoring is critical, one major issue that we lack tools to estimate consequences of refactoring. Refactoring is typically necessary to reuse solutions or prepare for future changes.
- Designing for quality which is always a trade-off between dependability attributes, security, productivity, reusability, flexibility etc. in such a way that you make full use of the eco systems and handle interaction with legacy systems.
Complexity,
Programming involves a huge number of bits and pieces, each of which are individually quite easy, or sometimes very easy. People who have just learned programming are sometimes surprised how easy the better programming languages are, and wonder what the fuss is all about.
The fuss is because all the easy stuff was done decades ago. What programmers do is solve complex problems involving, for example, the equipment that can fail, but must not be allowed to corrupt the results, working with networks (including the internet) which are unreliable, and take time for information to propaga
Complexity,
Programming involves a huge number of bits and pieces, each of which are individually quite easy, or sometimes very easy. People who have just learned programming are sometimes surprised how easy the better programming languages are, and wonder what the fuss is all about.
The fuss is because all the easy stuff was done decades ago. What programmers do is solve complex problems involving, for example, the equipment that can fail, but must not be allowed to corrupt the results, working with networks (including the internet) which are unreliable, and take time for information to propagate, working with laws designed for humans not computers, working in an environment where criminals are trying to read and corrupt your systems, working with forty years work of other software engineers , some of whom were not competent, many of whom had different goals and world models from you.
No particular bit of programing is hard. What is hard is keeping all the different bits in your brain at a time. Which is why we keep trying to produce new languages, frameworks, libraries and so on to simplify them. Unfortunately, most simplifications lose information, so there is a kickback by complexity to preserve this information. There is a constant struggle between simple, elegant, easy to use systems, and the real world.
I believe this has been answered before, better, and more eloquently- but I’ll take a stab at it.
My annoyances (as are many of those of my peers) are grounded in the expectations and demands of the business people.
They seem to think that because one problem was solved in a project-cycle, all of them can be. Later, one that would tax a commune of Einsteins working in concert is considered a black mark against you (alone) when it goes beyond the allotted window by several days.
If THEY (you know — THEM) sense that the timeline is slipping, they will foolishly ask if you need more people on it.
Thi
I believe this has been answered before, better, and more eloquently- but I’ll take a stab at it.
My annoyances (as are many of those of my peers) are grounded in the expectations and demands of the business people.
They seem to think that because one problem was solved in a project-cycle, all of them can be. Later, one that would tax a commune of Einsteins working in concert is considered a black mark against you (alone) when it goes beyond the allotted window by several days.
If THEY (you know — THEM) sense that the timeline is slipping, they will foolishly ask if you need more people on it.
This never helps, because you then have to split your time between the problem and bringing the other person(s) up to speed, making your effort even less effective — and at the same time making your helpful colleagues even less successful in their own endeavors.
The managers do expect you to push back if you anticipate difficulties during planning, but they typically expect you to see all the way to the deepest nuances of the problem within the few hours between the morning planning session and the afternoon retrospective. These problems have typically never been solved before, and frequently are the sort previously considered unsolvable.
The other annoyance-in-chief is a project lead on another team (a former CS major) who invented a framework we use.
It is quite clever, but tricky to maintain to the degree that doing so consumes the bulk of our time. This person naturally has a proprietary interest in it, and reserves the right to inspect our code before approving it for a build. Being a busy sort of person this can take weeks, which plays merry hob with our schedules.
Those are the only scenarios that I find annoying in my current situation, but I will vouch for the authenticity of those cited by others earlier.
From the top:
In my experience? Things like being interrupted while typing in preliminary documentation for systems design, clueless clients who wonder why they can’t keep key personnel who aren’t being allowed to do their job — and the managers who aren’t letting their subordinates do their job are taking credit for all of the work done whenever they see any productivity that they themselves are incompetent in technical affairs to understand AT ALL — and then berate those underneath them for not working according to scheduling constraints that are totally unrealistic. And this while being requ
From the top:
In my experience? Things like being interrupted while typing in preliminary documentation for systems design, clueless clients who wonder why they can’t keep key personnel who aren’t being allowed to do their job — and the managers who aren’t letting their subordinates do their job are taking credit for all of the work done whenever they see any productivity that they themselves are incompetent in technical affairs to understand AT ALL — and then berate those underneath them for not working according to scheduling constraints that are totally unrealistic. And this while being required to attend meetings meetings meetings.