For a small site I would just write the HTML. I realize this isn't a popular opinion nowadays, but sometimes it beats monkeying with frameworks in my opinion. Especially when you don't need to. And easier to set up hosting on shared hosting services. Check the purecss.io post from earlier this morning. They have some nice layouts.
This seems to be designed to reward people who make consistently good submissions and comments, although it also has the bad effect on making it quite penalizing to make a comment that goes against the groupthink.
I think that other factors that may have an impact are age of your HN account, and your total karma count. So long story short votes by older accounts that make quality submissions and comments are worth more.
If you are interested, have a look at chapter 4 of Probabilistic Programming and Bayesian Methods for Hackers .
For instance, I could 'upvote' this article but it would not be counted (I know, because if I refresh the page the count has not changed). Similar vote suppression mechanisms exist for articles, article submissions and for flagging content and users.
It's a crappy situation, but it works, don't sweat the points and enjoy the content.
How is a user's karma calculated?
Roughly, the number of upvotes on their submissions and comments, minus the number of downvotes. (The numbers won't exactly match up, because some votes aren't counted to prevent various types of abuse.)
When you create a post you automaticly upvote it, this upvote doesn't count for your profile score, if anyone else upvotes you, you get 1 profile point. If anyone downvotes you, you get -1 profile point.
Someone with > 500 profile score can downvote you.
Edit: The one downvoting me, could you elaborate what isn't good about my answer?
So it's a magic act. As a programmer, this frustrates me terribly. I just emailed dang yesterday because I had submitted something that shot up, got a lot of attention, then died just as suddenly. Hell, I didn't know, I thought the system was broken or something. Turns out I was flagged.
The upvote thing you mention is especially annoying. You click the little button, you're expecting something to happen. That's the nature of clicking little buttons on computer interfaces.
Hell-banning also drives me nuts, for similar reasons. Computers should serve us, not the other way around. [insert long discussion here about having to manage a site with a zillion users, and how it's easy for me to rant about this but I should walk a mile in dang's shoes, etc.]
No idea what's going on, whether it's voting changes or what, but something seems to have changed.
In this world, it's not uncommon for people to present sub-contractors in this light. I personally don't think this is the optimal setup, and if I were in your shoes I'd not want all my eggs in one basket, so to speak. But as long as things are what they are, I don't see much harm in going along with this.
If you need the money now, you can say YES but eventually you will have to either replace this guy or look for projects yourself.
It sounds like he's getting paid by the client first and then he'll pay you? If this has been the arrangement in the past and he paid as agreed, maybe. But if this is a bigger project, as the client wants to visit, you should hammer an agreement to get paid promptly in stages. You don't want this risk of him simply running off with a big payday.
If I were in your place (from what you have said), I would not agree to misrepresent your relationship with this person and furthermore I would seriously reconsider whether I would want to continue to deal with someone who is willing to do this. It would be hard to believe that I was not being mislead by him. A reputation is easy to lose and hard to recover.
Let's say you agree to his wish. What's in it for you? A promise for more projects in the future? Maybe, as long as you agree to present yourselves as his company. The only reason I see why you would agree to his wish is fear (of loss) and there's something I learned with great pain: when I act out of fear, I end up regretting it.
Then there's the fact that by agreeing with his wish you would essentially be lying. I read an essay on NH a couple of months back about an entrepreneur that had a golden rule: never lie! His reason for adopting this rule was that by lying you are telling your brain that things are different than they are in reality and so your brain starts operating with false assumptions and soon enough your thought patterns adapt to the lies and you disconnect from reality in various ways. After the disconnect occurs your brain cannot offer you solutions to the problems you face in reality because it has accepted the fake reality you've presented to it (the one created by the lies). That's it in a gist. Here's the link.
Best of luck!
Sadly, the intermediary's request shows his true colors. Suggest you make it a top priority to find a new Strategic Partner/Rain Maker/Business Development executive to represent your team. Frankly, this could be a great opportunity to up your game. Adios Intermediary!
You are his partner.
Oh, did i mention Im the son of one of the directors?Yeah. I told my dad about her personality and the issues arising at work, but i think he still sees me as childish or doubts my word as things seem to work just fine from an outside view.
Im not happy here, but i doubt i can find other job offers with the same comodities i find here(its walking distance from my university, and i work only 4 hours, which i can arrenge during the day to not collide with my classes.
I have these benefits because im the son of a board member and because im indispensable for the correct work of this place).
I dont know what to do. Im not confortable here, but i dont think i can change that, and changing jobs seem like a very difficult task, not mentioning i probably will be very far from my university and ill have to work up to 8 hours.I live in Uruguay, so I dont have many of the opportunities and commodities people in first-world countries may have. Not too much work, horrible wages, terrible education.
What would you do?
If you have a "healthy services revenue", I guess a bank loan isn't out of the question, but you have to get a plan in place on how you're going to pay it.
Try not to stress too much, I know it's not easy. Maybe looking for alternatives and having a fallback plan will make you sleep easier (get a commitment/offer to hire you from someone?). Paying back 20k doesn't sound like the end of the world, neither does going back to a job. Can the project be put on hold while you build up some money? (I guess you'll have to fire your employees and that must suck) Can you maintain the project while you work a job to sustain it?
I wish you good luck, and take care of yourself first. The money issues can be fixed, health problems aren't that easy.
I know thats a shitty thing to do but it seems like your best choice.
1. Get a MS in CS (part-time) degree. It will go a long way in solidifying your role in technology industry specially if you want to be in development and as individual contributor.
2. You have another 15 years of runway before you are considered as "over-the-hill" if you remain in development and as individual contributor. Focus on maximizing income, maximizing savings, building "expertise" that you can later leverage as consultant, building persona, and building "revenue generating" side projects.
3. Don't chase the next "fad" instead focus on an established and growing domain such as data science, security etc. which you expect to be around with demand for next couple of decades. Think of in terms of what is the outlook for next 20 years instead of whether entry requires 10 years experience. Pick one and stick with it for next 10 years at least.
4. Be visible in the domain you chose. For example, through conferences, books, articles, blogs, open source contributions, and discussion lists.
From Matasano's careers page, I understand that they feel the same way about crypto. Are you in one of NYC, SF, or Chicago -- if so, I would just apply there.
I've had lots of callbacks and a few interviews, but no big breaks so far. It's been pretty tough on my ego.
My only advice is to stick with it, as when you do find a place that's willing to look for someone with interests and drive rather than if they're used the latest toolkit, you'll probably find that they have other positive qualities as well. At least, that's what I've been telling myself.
I don't know much about Enyo, but one important thing is that we think that no framework should be needed to build apps for firefoxOS. But I'd like to know if enyo apps can run on fxos. The UI of the phone itself (called gaia, https://github.com/mozilla-b2g/gaia/) is pretty much framework-less.
webOS didn't make it as a platform for various reasons: lack of devices, no strong community for instance. Mozilla is in a way better position here.
Writing the book was a huge experience for me thanks to the inspiring stories that these entrepreneurs told me. You can find it on Amazon here: http://www.amazon.com/How-Did-entrepreneurs-struggles-experi...
1) Hatching Twitter2) The Everything Store (Amazon Story)3) Mindset: The New Psychology of Success --This one was particularly interesting when thinking about employees and recruiting and what to look for in people that you are working with. After the author introduces the concept it gets a little dry for a chapter or two, but then really interesting after that.4) The Hard Thing About Hard Things - this one was inspiring from a management/CEO perspective. When thinking about building a company that people enjoy working for (and all the tough stuff that comes with it) this is a great read.
Prgmr.com ($8/mo) AWS (~$0.60/mo) Hover.com (bunch of domains, ~$120/year) Fastmail.fm ($80/yr for 2 family users)
Netflix ($8/mo) Hulu ($8/mo) Amazon Prime ($100/year) Spotify ($10/mo)
Pinboard.in (~$9 one-time payment) Draftin.com ($36/year) Backblaze ($100/year for two pcs)
- Pandora - Amazon Cloud Player - Google Music All Access - Easynews (NNTP) - Ghost.org
Linode ($20/mo) Cloudflare ($20/mo) Freshbooks ($20/mo) DreamHost ($8.95/mo) GitHub ($7/mo) FastMail ($40/yr) Tarsnap (some bucks/mo) Pinboard ($25/yr) Amazon.it Prime (10/yr) Instapaper ($12/yr) AWS (???) Gandi (???) 1Password ($50 + $18) Sublime Text 2 ($70) Dash ($20) Tweetbot
Thanks for asking, it made for a good reflection on what I pay for, and what value I get.
Fastmail.fm (for personal email),Office365 (for more legitimate email),Evernote (had a paid account for a few years, although I never use it),500px (for non-professional photos),DigitalOcean for VPS,Netflix (not sure if you mean consumer services),Amazon Prime (I only use it for the shipping),Hulu+
Apps (a subsection at least):
Mathematica (I'm happy to pay for the Home version),1Password (although I've stopped using it since iCloud Keychain Sync),Pixelmator,Capture One,NI Maschine,NI Tracktor,Pretty much every audio app for iOS (iMaschine, Figure, iKaossilator, iMS-20, SampleWiz, Lemur, Vogel CMI Pro, Animoog, Scape)
* Linode - for hosting
* Namecheap - for domains
* CrashPlan - for one layer of our backups (other layers are timemachine, dropbox, and disk imaging)
* Pinboard for links.
* Office 365 - because the 8 per month is worth it for dealing with the MS files that other people send us and expect edits on. No - OpenOffice isn't good enough at conversions.
* Google Docs - for shared editing
* Dropbox - for sharing files + another layer of backups
* ScreenHero - for screen sharing
* Slack - for chat
* Trello - for organising everything
* CloudApp - for random sharing of screenshots
* Buffer - for social account organisation (suboptimal - but best of the bunch that I've played with.)
* Until recently Adobe CS subscription, but our usage dropped so much we've swapped for Pixelmator & Sketch as an experiment...
* Sublime Text 2 - editing on desktop
* Editorial & Writeroom - writing on iPad & iPhone
* OmniGraffle - wireframing, but very rarely used now
* aText - text abbreviation expansion on OS X
* Carbon Copy Cloner - backups
* Air Display - so I can use the iPad as a second screen when I'm on the road
* AntiRSI - reminds me to take screen breaks
* Skype - conference calls
* Transmit - [S]FTP client
* TunnelBear - UK/US tunneling, useful when I'm not in UK for some foolish things
* Have a subscription to the excellent PseudoPod, EscapePod & PodCastle podcasts
* SMBC comic patreon subscription
* Whatever the amazon streaming video thing is called
* Amazon Prime
* Downcast - Podcasting app for iOS / OS X.
* Steam - games (barely use)
Otherwise, for fun non-worky-type stuff: Netflix, Spotify, and Amazon Prime are the most prominent ones coming to mind.
Some of these will not survive the earthquake.
Funny enough, my home machine is Windows and I spend far more money on productivity tools for my work (OSX) machine. I'm not counting Steam.
One-off (paid or freemium):
Pleco (Chinese dictionary with paid flashcard functionality) Groundwire (SIP client for iOS, including Push notifications) GoodReader (PDF reader and organizer for iOS) Pushover (trigger iOS push notifications from email, IFTTT etc.) MindNode (iOS mind-mapping) BubbleUPnp (Android DLNA server) SnappyCam Pro (iOS camera) Cycloramic Pro (iOS camera)
Pandora (streaming radio) Several different virtual servers (for web apps and VPN) Newsblur (RSS reader) DIDLogic (monthly fee to get an inbound local phone number) The Economist (print subscription includes online/app access)
Rebtel (outbound phone calls) DIDLogic (outbound phone calls)
Spotify Premium (Thanks mom!)
Sirius XM (Thanks dad!)
The only service I pay for personally is Amazon Prime.
I have not bought any iOS Apps (ever).
I have not bought any Mac Apps recently (this year).
The occasional Blu-ray and Nintendo game.
It has its flaws, but it's made a big difference as a catch-all brain bin for me.
Spotify Amazon Prime Netflix Lastpass Wolfram Alpha DigitalOcean Amazon EC2 OVH (Dedicated server) Sublime Text (not really an app, but I still count it)
AWS (at work)
LastPass (at work)
Destroy All Software (not an "app", but a fantastic purchase)
The most valuable (in order) have been:
Alfred 2 (easily worth 10x the price)
Dash (would have paid double)
DigitalOcean (simplest VPS I've ever worked with)
DAS (still getting value out of this but loving it so far)
Namecheap (great domain service, been with them for years and had 0 problems)
I would cut Spotify but I have a visceral negative reaction to commercials. Can't stand em. I'd cut Netflix, but it's faster than torrenting and the time it saves me is worth it.
This has been a really interesting thought exercise, thanks for posting this!
* Transmit (FTP/S3)
* Sublime Text 3
* HipChat (Team Communication/notifications)
* Dreamhost (hosting)
* Cloudfrount (caching)
* Amazon AWS/S3
* Codeship (CI)
* Honeybadger (error monitoring)
* MS Office for Mac
* Crashplan (backup)
* Steam (games)
* Dropbox (pro for business)
* Asana (project management)
* Sprint.ly (project management)
Spotify, used to pay for it before they brought mobile to the free tier
115GB Google Drive and ~52GB Dropbox that I haven't started paying for yet
Github student account that will expire next summer
Probably more apps on iPad/iPhone.
That's why I pay for personal use.
You can't imagine how much value this services provide for me, they are worth every cent.
I'm still evaluating crash reporting/analytics services for iOS apps.
I also use AWS for some personal hosting.
Services -------- Spotify DigitalOcean AWS Glacier Dropbox Evernote Mykolab.com Apps ---- 1Password aText Airmail Alfred Bartender (awesome!) Boxcryptor classic Boom Fantastical ForkLift OmniFocus 2 Parallels Sublime Text
Paid for once: Threes, Clear, Convert (for all of my unit conversion needs)
I use but don't pay for: Dropbox, IntellijIDEA, Sublime Text 2
I've also spent a shameful amount of money on Candy Crush...
And somehow I forgot Netflix, Xbox music and Xbox Live. Guess they just fade into the background.
chat with phone notifications: irccloud.com
hosting personal projects / testing things: digitalocean
music: spotify (seriously, how I lived before spotify is a mystery)
Newsblur; RSS feed reader
If I was to pick a favorite, it'd be Deezer. I derive so much use and enjoyment from it. Huge value.
At work:HipChat, Propane (client for Campfire), Sublime Text, Github.
DigitalOcean ($5/mo) Gandi.net ($200/yr) Tarsnap ($3/mo) CrashPlan ($6/mo)
Non-work: Rdio, Amazon Prime, Dropbox Personal, Lastpass
Thinking if I should probably get Intellij since I've been doing a lot of Java these past few weeks.
 - http://sync.club/#electronicmusic
Well, in 1982 when the IBM PC was not very popular yet (under 50,000 sold) and non-businesses were still using their Commodores and Ataris, I decided to improve my programming abilities and build a small game for my Atari 400.
Earlier with arcade games I never thought Pac-Man was very interesting, but when Centipede appeared I liked it because of its trackball interface.I guess I'm just what they would nowadays call a natural UI/UX guy.
When the 400 came out it was attractive since it was not just a game console like the earlier 2600, but a full computer that also played some of the same games from its own series of cartridges which were more advanced than the 2600 anyway. BASIC programming was also available in cartridge form.
I wanted my own home computer mainly to continue the machine-learning I had pioneered a year earlier during the Houston oil boom where I had procured expensive Hewlett-Packard benchtop oil & gas analyzers at my employer, but was having more breakthroughs developing "software" than I was on the hardware.It was a petroleum engineering laboratory startup where I was operating the instruments in the lab during the day, then writing code at night by hand on paper, to be typed into the terminals at work once the module was complete.
After the crude oil & gas (exploration & production) boom went bust, I was luckily able to move to a traditional employer, who was in the refined products (fuel & petrochemicals) measurement & testing field.This was a 100-year-old service corporation, not a research place.
Anyway, even Apples and the new IBM PC's were not powerful enough for my former pursuit, but after they came out with a Centipede cartridge for the 400, I decided to get one, plus since I was employed I figured I could afford a trackball in addition to the joysticks that came with the Atari.
To code my first game I did not expect to be able to achieve very fast action, which was dependent on machine language, since I was just using Atari BASIC.So I settled on "MasterMind" which I selected for its pure logic base and its particular two-user operation where only one participant at a time is the actual player, and the "opponent" merely qualifies the player's progress among successive determinations against a hidden pattern.To emulate the "opponent", the computer would select the hidden pattern at random and provide feedback to the player, reducing it to a one-player puzzle.
All I had was the 400, the BASIC & Centipede carts, the trackball & joysticks, plus a fairly good Atari reference book. I had to leave the 400 powered on all the time since I had no data storage, but eventually got the Atari cassette after it became affordable.
Trying to make the most of the hardware I had, I ended up with an intuitive point & click, drag & drop, player scenario using the trackball in a way that years later would be very common once the computer mouse appeared for Apples & PC's, and especially after Windows came out and becamepopular because of pointing & clicking.
Meanwhile, like most employers, mine was more interested in status quo rather than maximum utilization of resources, but I became informed that they were going to embrace computers first in the tank calibration department. I was in chemical analysis but I knew the ASTM calibration manual fairly well and thought this was an excellent choice, there were geometric calculations based on physical properties & measurements, with a resulting report tabulated into an 11x17 inch chart having entries in fine print for each depth of fluid that was to be inventoried in that tank each time for the following decade. It was text output, looking like a spreadsheet, but these were traditionally reduced from ablueprint master which the cells had been typed in with a manual (non-electric) typewriter having a special wide-carriage.
I was naturally disappointed when I found out the project had already been underway since before I was hired, an established Northern consulting group was doing the work, they were being paid over $100,000 and already delayed well beyond the target date.
You can only imagine my feelings after the project was finally delivered and I found out from the calibration guys how they thought it was quite a time-saver.
They loved the way it printed the final charts in fine print using the new-fangled 17inch wide PC printers without having to go through the typewriting/blueprinting process.
But the raw data entry, calculations, output, and manual typing of final data into each cell was still done by hand.
The consultant had merely provided a replacement for half of what the typewriter was doing, the mechanical printing function of the typewriter, but not even the hand keying :-\
there's more but that's enough for now . . .
Using Unix for the first time on a PDP-11 and seeing how much nicer it was than the IBM mainframe operating systems of that era. Later being trusted with root on that machine.
Learning C and Pascal simultaneously to write a Pascal compiler in C using Lex and Yacc (another college class).
Writing code for a 6800 microprocessor with only 512 bytes of RAM (with the instructions entered on a hex keyboard).
Hacking an IBM operating system to be able to read files that I wasn't supposed to be able to read. This involved disassembling (by hand) one of the system programs and changing one of the machine instructions to make it an unconditional branch.
Writing code for one of the first IBM PCs.
Getting my first e-mail address with an "@" in it - on the Arpanet (precursor to the internet) in 1982.
(Yeah, I'm well over 30.)
Nielsen's actual business is getting data (staggeringly enormous amounts of data - not just TV watching but consumer purchase data, retail POS data, etc), and then leveraging it. If you want to disrupt something, it's the collection and use/sale of this information.
However, there is a strong network effect here. The value of the data you collect is proportional to how established you are and how much participation/penetration you have in an industry. Big companies (like TV/media companies, retail chains, and manufacturers) want big data from big providers. They want large amounts of reliable data that speaks for an entire industry, nationwide and worldwide, to inform their very-high-dollar decisions. If you can collect that, and convince e.g. Walmart that your data is worth buying, go for it!
As far as technology, you hit the nail on the head. A simple Android / iPhone app could literally replace all 5 boxes. I gasped when I heard they are still using modems, jeeze.
An idea I have for the late Idea Sunday: a mobile app where the user let it on next to him while watching TV and it recognize what is he seeing by the sound. No need for input or action by the user.
Here's an idea, what if you set aside separate time slots for working and learning?
This way whenever you come across something interesting during your "working" time, you can set it aside for later without being distracted.
In other words, just consider working and learning as too completely separate activities, like working and e.g. playing video games.
Initially don't even focus on a flashy UI/UX just code it to work. You can polish it up later.
Pick a framework like Rails or Laravel that will meet the needs of your MVP and stick with it. Then start coding that initial feature. There will be plenty of learning along the way.
Once the first feature is complete move on to the second one. The best way to learn is tackling a real world project.
When you get stuck google, stackoverflow and forums are your friend. A mentor you could email/skype with questions would be a plus as well as someone you can send your MVP to for testing/feedback.
Start completing features one by one and you'll be making progress.
While you're coding give StartUpsForTheRestofUs.com a listen.
Good luck with your MVP.
What helps me is to set a very clear goal for myself before I'm allowed to 'deviate' again. As long as that goal brings the main project one step closer and I allow myself enough time in between to satisfy the hunger for more knowledge I get stuff done and learn. Not as fast as I probably could but I'm not unhappy with the compromise.
We (technical single founders) have a bad habit of spending time developing code while we should be spending time understanding the market and the customer. Running an online business in my experience is 20% coding and 80% customer support and marketing.
My advice is to follow the below steps for 2 weeks.
1. Stop all development work on transcode.io. 2. Remove the message that this is not production ready. If there are some restrictions (e.g. output fixed to 360p), mention them.3. Setup a Google Adwords account. Run some ads for keywords that potential customers would use. 4. Setup an online chat widget on your site. (e.g. zopim.com). This should not take more than 5 minutes. Be logged into the online chat all day.5. As potential customers arrive, you can start an online chat with them. Speak to them about how they use transcoding in their business, find their pain points and find out what they are currently using. Try and get people to use your site by handholding them.6. Email your existing users (40+) or people who have shown interest. Find out the same info from them.7. If enough customers have the same pain point and you can fix it by adding a feature, add this to your list. Do not start development on this yet.
This will help validate whether transcode.io solves a pain problem for the customers. At the end of two weeks, you will have a better idea about 1. Is transcode.io solving a real pain point. If not, can it?2. What are my costs of customer acquisition?3. What is the market size?4. Is this a sustainable business?
This will help you decide whether to continue working on transcode.io or whether to sell it. Also try and go for some tech/startup events in Calcutta. Who knows - You could meet your business cofounder there.
All the best!
Launch the paid version and focus on getting customers. Then your work will have meaning and impact and your company will be able to move forward.
I think a lot of the billing stuff can be handled by Stripe or a similar service. For legal, finding a good lawyer is most of the work. After that, they will guide you through the rest.
1. How much do you want for it?
2. How much revenue do you have?
3. Have you found a way to acquire customers?
4. How much will it cost the new owner to get it developed further?
Initially, I faced dry eyes after the surgery for about six months and I still have high tendency to get dry eyes and red eyes in drier climates. During driving at night, I did experience halo around the lights but got used to it soon. Doctor most probably will advise you to lay-off swimming and sports for a few weeks/months after the surgery.
Make sure you get the detailed eye mapping done before the LASIK surgery. In the future, if you need cataract surgery and artificial lens in the eye, the eye mapping before the LASIK surgery will help accurately determine the power of artificial lens that need to be installed in your eye.
Also, just because you had LASIK surgery, it doesn't mean that you no longer at higher risk of eye related issues (example: retina detachment) that people with glasses/contact lens have.
I'm sure you are already making the rounds at the hardware related meetups in the Bay Area but beyond that I think you might get more responses if you posted what you and your existing team bring to the table beyond just "I've got this smart watch startup I need another Co-Founder for." Even if you are non-technical your role is obviously hugely important and so you need to sell yourself and your team. Also, I'd recommend you post your email address in your profiles about section so people can contact you privately. Cheers.
For example, Twitter. They've obviously executed it well and grown over time, but the initial concept is simple, and you'd want to be first to market. 140 character messages, and you can follow people. It's a good idea, you can create a working beta in a weekend, and grow quickly from there. You don't want to tell people about those ideas.
On the other hand, you have something like the Microsoft post on the homepage, about real-time voice translations for Skype. You can share things like that with the world. Everyone knows this technology is going to exist one day, and everyone knows it's going to be widely used. There's no big secret there. It just boils down to a lot of work, and who executes the most accurate translations. It's not a race, it's a marathon that's open to anyone.
And most computer professionals are totally oblivious to this, which is one of the key reasons that so much user-space software (and hardware) really sucks.
Instead of whinging about how stupid people are and heading down the path that leads uphill both ways (and we LIKED it!), put yourself in the user's shoes. Computers are magic to them. When you ask them to do something that seems simple to you, like unplug and replug a network cable, keep in mind that they don't know what a network cable is, or what it does, or what might happen, or why they're being told to do that. They're genuinely scared, and rightfully so, given the horrid experiences most people have had with technology today.
Try accompanying the request for action with an explanation of what you expect it to do (in small words), heavily loaded with reassurance that it will not catch fire and explode or sell their children on EBay or whatever horror stories might be rolling through their minds. Help them feel that the person at the other end of the line, the expert they called (overcoming other fears to even ask for help) is sympathetic, wants them to succeed, and believes in them.
And finally, remember, the wise words of one of the smartest people I know... "Intelligence is like four wheel drive. It doesn't keep you from getting stuck, it just lets you get stuck in worse places."
As little as ten years ago, the person troubleshooting it would either be a trained technician or the office computer guru...then again, I've worked in offices where the equivalent of plugging and unplugging a cable counted as being the in-house expert. And it didn't stop the company from making money.
Solution? Shut down all internet search engines for a year. When people aren't spoon-fed answers to every question maybe they'll start using critical thought as their default mode of operation.
Required: Carbohydrate restriction (specifically, low-carb/high-fat)
It's pretty hard to maintain energy throughout the day just with your "good" list and maintain some sort of digestive regularity.
If you get sick of beans, drown them in some Safeway brand salsa or a dap of lowfat sour cream plus some Sriracha sauce.
Anyway, great project, even if it only inspires one other person. That should be reward enough.
Source: I've been a little overweight, a weight lifter, mountaineer, and ultramarathon runner, so I have food science down for my body.
There's rising evidence that supplements are bunk and/or unnecessary. It's almost as bad as the anti-oxidant nonsense. Recently it was discovered that fish oil is likely to be bullshit too, based on poor research and a tiny, biased subject pool. Meta analysis has implied that vitamin supplements don't do anything for people.
The nutrient that folks are (usually) most deficient in is calcium, it's quite hard to find in food. The only place you can get it easily in significant quantities is milk and bones. People on poor diets are typically lacking in staples like Vit B, Vit C, etc but that's usually because they don't eat enough vegetables. Just increase your intake of 'super' greens like Brocolli, Spinach and Kale and you'll smash your RDA easily.
People fail at dieting because they cheat or they're not willing to give up sugar in lieu of sweeteners. Ever look at a pack of biscuits? Each one nullifies about 20 minutes of exercise.
On another note this is basically 1 page guide to the 4 hour body. Even some of your word choices are the same (force multiplier). Might want to cite that.
This line in particular paints women as weak and unintelligent:
"Existing self defense devices such as pepper spray and stun guns can be scary and intimidating."
Bringing up the 2012 Delhi gang rape is really playing off of women's fears and I seriously doubt your product would have made any difference whatsoever in the outcome of that attack.
Another problem I have with this is the positioning of it as only a product for women. Men are the victims of violent crime more often than women. Why wouldn't this be a good product for men too? By marketing only towards women to protect themselves from men you are implicitly placing women in the role of victim and men in the role of aggressor. This just serves to reinforce the roles prescribed by the so-called rape culture you're trying so hard to put and end to.
I have responded to two people from this thread and I thought I should make it publicly available to help others who might be out there.
At some point you owe money to the IRS. You've filed the tax returns, you've wrestled with the IRS about waiving penalties, and there is a number. You're looking at it, and it's big.
This is what tax lawyers call "collections work." You owe money, and the IRS is trying to collect. As I noted in my previous comment, the Internal Revenue Manual is the operating procedure manual for Revenue Agents in handling collection of taxes owed. Plus of course there are shards of wisdom here and there that are important to know. Some are published by the IRS (they have an assortment of published documents, like things called 'Revenue Procedures') but some of this wisdom is informal, learned through experience with the system.
The work is time and paper intensive. Going to a tax lawyer is probably not cost-effective, because the hourly rates are too high, and you don't have money. So you need help. Where do you go?
Well, call tax lawyers, accountants, and (most importantly) Enrolled Agents. Enrolled Agents are regular people who pass an exam administered by the IRS that enables them to represent taxpayers in tax controversies.
The particular type of human I would look for is an ex-IRS employee who has left government work and set up shop as an Enrolled Agent. You now have the best of both worlds: someone who knows the inside baseball game, and is out here in the real world, working for you. Also, the costs are likely to be more reasonable that an attorney or CPA.
Look particularly for an Enrolled Agent who specializes in collections work. Buzzwords include "offer in compromise", "Lien", etc.
In the case of the two people who contacted me directly, I pointed them to John Knight in Southern California. His website is www.knight-ea.com (don't judge him by his website) [EDIT: thanks 'dewey for pointing out that it is really www.johnknight-ea.com] and he fits the criteria I mentioned. He gets frequent referrals from the top tax lawyers here in Los Angeles. (I know, because I talk to my colleagues.) I send him 100% of my collections problems.
I am not competent to give advice on exactly what to do in this area -- if you owe a ton and need to figure out what to do. I would recommend that you stay away from any tax law firm that advertises heavily on the traditional media. There are no miracles, but the "One Day at a Time" mantra will carry you through. You will, eventually, be (tax) debt free.
Again, anyone else out there -- if you're in this boat shoot me an email. But now you know what you'll get when you email me. :-)
I will put you in touch with someone who is good at this.
Appeal to authority: I am a tax lawyer.
Knowing what I know about affiliates, it's at least possible on the outside that you might not have had the world's most businesslike records. Can you reconstruct better records, at least for the major expenses for the business? If so, you can have your CPA file amended returns. You'll still be looking at principal and interest for your taxes but it's in your interests to pay principal of $80k and interest versus principal of $100k and interest.
Where did the money go? Did you turn it into assets? If so then you may want to simply sell all or part of what you have.
If you did not turn your income into assets but it has all burned up see what you can do in terms of documenting your business related costs over that time. Conditional on the IRS agreeing with all this you could then make them a proposal on how much you'll pay month-to-month.
If you feel that that is not going to be a possibility you might end up having to declare bankruptcy. That's a real pain in the ass, but if you have no assets and no income that's probably where you're headed. If you have assets or income then likely you can make a deal. If you have assets that are somehow worth something to a bank you could possibly use these as collateral for a loan.
I had one really good year as a freelancer and wound up spending the money I'd put aside for taxes because a client who had been paying me a retainer suddenly cut me loose right in November (the absolute worst time to try to pick up work as a freelancer). I was burned out and depressed about losing the gig so I didn't work for almost 8 months and wound up burning through the $30k I had set aside for taxes. I missed filing my taxes or an extension and the penalties just mounted until eventually my bill came out to about $40k.
After "negotiating" with the IRS (complete bullshit, they tell you how its going to be and you just have to deal) They decided that I could pay $2k a month on a $80k salary (how insane is that?). I lucked out and got a job that paid me almost double about 3 months later, if not for that I'd be toast.
Its easily the most stressful thing that has ever happened to me. Tax Lawyers were rude and dismissive ("Maybe get a cheaper car?" said one) once they realized I wasn't Mr Moneybags. And nobody can or will loan you that kind of money.
The only thing I can offer up apart from the Offer in compromise is that once you get the bill under $25k. You can negotiate directly with the people you talk to on the phone, once your bill is over that, everything they say/offer you has to go to some faceless manager somewhere, and it can be rejected and ridiculous alternative unilaterally offered back to you.
Typically the IRS can set you up with a payment plan that's a portion of your income. Its time to find a tax lawyer, not a CPA about this. Settlement/compromise, installment plan over a long term, and even bankruptcy are options.
I think the last step for you is the Offer In Compromise - in simple form you'll show them how much your net worth is, and give it to them. In return they'll retire your tax debt. Obviously, it's going to depend on how much you are worth/vs owe, and if they think you operated in good faith or not.You need to not be in bankruptcy, and current on all filings to offer it. They also will come down HARD on you if you miss any filings/payments for 5 years after.
Charles Markham: http://www.markhamandcompany.com/
His website is terrible and he screens his phone calls ruthlessly. Don't let either of those things put you off; he's worth it. Feel free to use my name or not; it won't get you (nor me) anything. Maybe it will get him to pick up the phone the first time...
My email is in my profile, but most of what I'm going to tell you is above: call Charles. :)
PS: Yes, you probably are a little screwed for the coming few years until you get this cleared up. It is a very good feeling once you emerge from the other side, having caught up on filing, and having cleared up the IRS debts. This is money that you owe; you lived beyond your actual means for a while. It's going to suck a while, but assuming you have your health and earning power, you'll get out of it and it's bright on the other side.
Note: be sure you file your taxes. You legally have to file, whether you can pay or not.
Once you file, after two years the debt can be part of a bankruptcy, but you have to keep filing.
As you know, this is a really sucky spot to be in. I believe the IRS has a program for people who have no chance of repaying -- not sure what the title is. It's worth looking into.
You did a brave thing coming online with this. I imagine a lot of folks would just call you names and be done with it. Speaking for other guys in the same situation, thank you.
I promise you I am not the accountant himself :) and this is not a spam comment. He can help!
- Move to a country without an extradition treaty with the US.
- Change your identity. I don't imagine they'll put that much effort into hunting you down for just $100k.
- Create a Kickstarter campaign.
- Ebay the next 2 years of life. That way you are only in hock for 2 years, not 5.
- Marry someone and don't tell them about the debt until it's too late.
I am 42-year-old very successful programmer who has been through a lot of situations in my career so far, many of them highly demotivating. And the best advice I have for you is to get out of what you are doing. Really. Even though you state that you are not in a position to do that, you really are. It is okay. You are free. Okay, you are helping your boyfriend's startup but what is the appropriate cost for this? Would he have you do it if he knew it was crushing your soul?
I don't use the phrase "crushing your soul" lightly. When it happens slowly, as it does in these cases, it is hard to see the scale of what is happening. But this is a very serious situation and if left unchecked it may damage the potential for you to do good work for the rest of your life. Reasons:
* The commenters who are warning about burnout are right. Burnout is a very serious situation. If you burn yourself out hard, it will be difficult to be effective at any future job you go to, even if it is ostensibly a wonderful job. Treat burnout like a physical injury. I burned myself out once and it took at least 12 years to regain full productivity. Don't do it.
* More broadly, the best and most creative work comes from a root of joy and excitement. If you lose your ability to feel joy and excitement about programming-related things, you'll be unable to do the best work. That this issue is separate from and parallel to burnout! If you are burned out, you might still be able to feel the joy and excitement briefly at the start of a project/idea, but they will fade quickly as the reality of day-to-day work sets in. Alternatively, if you are not burned out but also do not have a sense of wonder, it is likely you will never get yourself started on the good work.
* The earlier in your career it is now, the more important this time is for your development. Programmers learn by doing. If you put yourself into an environment where you are constantly challenged and are working at the top threshold of your ability, then after a few years have gone by, your skills will have increased tremendously. It is like going to intensively learn kung fu for a few years, or going into Navy SEAL training or something. But this isn't just a one-time constant increase. The faster you get things done, and the more thorough and error-free they are, the more ideas you can execute on, which means you will learn faster in the future too. Over the long term, programming skill is like compound interest. More now means a LOT more later. Less now means a LOT less later.
So if you are putting yourself into a position that is not really challenging, that is a bummer day in and day out, and you get things done slowly, you aren't just having a slow time now. You are bringing down that compound interest curve for the rest of your career. It is a serious problem.
If I could go back to my early career I would mercilessly cut out all the shitty jobs I did (and there were many of them).
One more thing, about personal identity. Early on as a programmer, I was often in situations like you describe. I didn't like what I was doing, I thought the management was dumb, I just didn't think my work was very important. I would be very depressed on projects, make slow progress, at times get into a mode where I was much of the time pretending progress simply because I could not bring myself to do the work. I just didn't have the spirit to do it. (I know many people here know what I am talking about.) Over time I got depressed about this: Do I have a terrible work ethic? Am I really just a bad programmer? A bad person? But these questions were not so verbalized or intellectualized, they were just more like an ambient malaise and a disappointment in where life was going.
What I learned, later on, is that I do not at all have a bad work ethic and I am not a bad person. In fact I am quite fierce and get huge amounts of good work done, when I believe that what I am doing is important. It turns out that, for me, to capture this feeling of importance, I had to work on my own projects (and even then it took a long time to find the ideas that really moved me). But once I found this, it basically turned me into a different person. If this is how it works for you, the difference between these two modes of life is HUGE.
Okay, this has been long and rambling. I'll cut it off here. Good luck.
Until this one project where we were asked to 'fix' an already written Android app (written by an Indian outsource then sent to Canada). The contract was for a massive amount of money, everything looked clear cut and straight forward, how could we say no?
For almost 7 months (!!!) my team and I had endless meetings next to a wall map containing the 5000+ classes that each had to be dissected, understood and reimplemented properly. All the comments were in at least two different foreign languages, and even the best translation services (human included) could only give us at best translations like: 'not class, forwards' or 'use brick making way here', most likely due to the comments being poor in their original language in the first place (not due to the translation).
At first I had great momentum, I was an unstoppable force; then quickly things started slowing down - each task started taking hours longer, than days longer, than weeks longer. Ultra trivial fixes like the placement of one statement outside a try catch, could easily take a whole month to locate (by a team of 4!).
After pouring my heart and soul into this project day after day, grinding myself literally to the bone; I started getting depressed, physically sick to my stomach for days at a time, starting fights with co-workers over absolutely nothing, just so I wouldn't have to look at that fucking code one more time. Anything to just not look at that code one more time.
By the end of the project (which we did actually manage to complete), I was waiting for that moment of euphoria, that release of completion, that I would never ever again need to look at that code, or work on that project.
But it didn't come.
I was paid more than 100k for completion of the project, so I was well reimbursed for my time.
That's when I realized that it's really not about the money, it's not about the team, or the language; It's not about your repo, or your source control techniques. It's not about agile, and it's not about problem solving. It's not about working from an office or from home, and it's not about the mother fucking 'culture'.
When you're lying on your death bed, and you look back; will you be proud that you spent all that time and suffering to fix an app for some asshole who is trying to make a quick buck by exploiting people who aren't technologically wise enough to realize what they are doing?
The next day my boss asked to meet with me privately; thinking I would be fired (and happy with the idea) we met briefly at a local coffee shop. She said that all the anger, depression, and self loathing was 'worth it' because 'I made a lot of people rich' in the process (myself included) and they were happy to deal with that (and even to pay for therapy).
I was offered EVEN MORE money to continue working on projects exactly like these, to the company we had just discovered a cash cow of an app crop, and I was the golden goose. I could easily do this the rest of my life, and lead whatever life I wanted to outside of work.
I quit on the spot, and laughed and cried the whole way home. Knowing that I would be blackballed in the community that I had worked so hard to establish myself in.
Literally career suicide. The company didn't recover, and a lot of people were (and still are very pissed off with me - like angry emails, restraining orders, fucking pissed).
I promised myself that from now on I would only do work that I believed in enough to starve to death for (and it was looking for a long time like that was going to be the case). The truth is, if you want a job where you can make 6 figures (or even 7 if you're doing it right), you will find it. You will always find it, and they will always be there.
There is a vacuum of talent on the community of expert programmers caused by major corporations like ibm, amazon, facebook, twitter, and snapchat just filling up cubes in their 'programmer cluster'. A group of people they can throw whatever stupid, or trivial tasks at - and you won't say shit, because damn that pay is tasty. You're breaking peoples rights to privacy, doing WAY less than ethical things, and you probably don't even know it (because that's how it's supposed to work, or someone else above you clearly isn't doing their job).
My only advice is to get the fuck out. Run, run as fast as you possibly can and never look back.
Never respond to any recruiters for any reason, never respond to job offers, and don't even think about looking for another position at another company (I promise it's the same thing, no matter how they promise you otherwise, and tell you that their culture is the dopest - nothing like clubbing seals with some rad people right?).
Get off your ass, and do something worthwhile. If you can't do that, then learn how. If you can't do that, then you're a drone and you should keep that shitty job because it's the best you're ever going to do (in which case, fuck you, you make the world a worse place for everyone by whoring your skills out to unethical assholes for cash).
Make something that garners zero profit, make something that only helps people, make something that changes the world for the better. You will quickly see your entire world, and all the people in it change before you eyes. You will get more job offers in your inbox than spam, because the world will see that you don't give a fuck about anything but getting shit done and helping people.
Today I run a few companies, the largest of which is a NPO machine learning research firm offering free services to help cure cancer, track missing children, follow and assess viral outbreaks, and front line ML research pushing the needle of science forward (email: freeML@gatosomina.com for services); and some of the others include: organic vegetable gardening as a service (physical outdoor labour, everyday, which I enjoy more than anything) and free apps that assist paramedics and doctors (without ads or bullshit).
If you want to be happy, like, really, actually happy (and not just wealthy) you're going to have to risk it to get the biscuit; and it's going to be the hardest battle you've ever fought in your entire life, by at least a few magnitudes.
Good luck, it's a jungle out there.
If this sounds like it could be your style, grab a buddy and see if you can hammer out some of the small stuff together. If not, some of the other suggestions here are good as well.
First of all, isn't it a bit dramatic to say "your entire being opposes" your task? It's not like you're out committing genocide or something. You're programming, and you have to work on a crappy programming task. Every programmer who ever worked a professional job has had to do this at some point. If the very fiber of your soul is wrapped up in your employer's MegaAccounting Client V3.0 REST API, I'd recommend re-thinking your emotional attachment to your job.
That money you get every two weeks is called "compensation" because it is compensating you for your time, which you would probably otherwise spend doing something more pleasant. This is the realistic world of grown-up work life.
If your company's Marketing bone-head says the customers want a green oval button instead of a system-standard button, well, it's stupid, but I'd laugh at how much they're paying to get this ridiculous code written and just write the damn code. It's really not worth losing sleep or sanity over. Not being emotionally attached to your work allows you to shrug off the stupid stuff that Really Doesn't Matter.
I struggled with this for years and years. This is not one problem , but three: it is a problem with wisdom, speed, and discipline.
Luckily, we can learn tricks to improve each one.
If we want to attack this from the wisdom perspective, it is this: You are afraid of making the wrong decision because you are afraid to refactor. You are afraid to refactor because you don't have sufficient test coverage.
The good news is, for developers like us, test driven development is very helpful as a technique for getting us over these problems. If our team is not test-friendly, however, it will be difficult for us to make the jump because their code will not be written in ways to make it easy to test.
There are a few books I can suggest to help us jump the chasm:
1. Clean Code by Bob Martin. This book helped me think in more testable code, and also helped me understand how to make better decisions the first time around. It helped me by seeing patterns I didn't know first.
2. Refactoring by Martin Fowler. This one is old, but knowing the patterns of changing code gives us more confidence in knowing what is right, rather than hemming and hawing over what is readable and maintainable.
3. Refactoring From Legacy Code by Michael Feathers can help get from here to there. All of these help from three aspects: They help us develop a set of tests so we are less afraid of breaking existing things, they give us the freedom to experiment, and they help us break things down into smaller, more manageable problems by letting us think about "what is the next thing I can test?"
If we have the tests, we can be more aggressive in reducing complexity.
If we want to attack this from a Speed issue, then look for these things.
1. Look for patterns you use repeatedly, and try to settle down into a process. The fewer choices we make, the faster we can go.
2. Look to learn more about your chosen stack and language. It is possible that we are rewriting the wheel over and over. The more you understand the zen of your stack, the faster you can go and the more time you can devote to writing the same thing twice (without them knowing.)
3. Instead of hemming and hawing about the right solution, write all three. It is often faster to write all three and choose one than to get stuck in analysis paralysis. (That isn't to say you shouldn't think before you write code!)
Finally, you can attack this from a discipline angle.
1. Learn to meditate. By doing so, you can become more self-aware of analysis paralysis, calm your mind quickly, and mindfully choose a path.
2. Exercise. In the same way as meditation, exercise helps us learn to clear our mind and focus on command, and it helps sharpen our discipline chops.
With these, we can develop an awareness of how our body feels. Then we can develop an awareness of how analysis paralysis feels. If we can catch ourselves in the act, we can then institute something from our analytical skills: When caught in the trap, set 30 minutes on your timer, and bring out a pad of paper. If you feel you have the freedom, turn off the monitor.
Take deep breaths, and sketch out the solutions in the first ten minutes on the first page. Use UML or your own system.
In the next ten minutes, write a pro/con analysis on each path.
In the final ten minutes, make the decision. After this, your analysis time is up and you must code.
I suggest a combination of the above.
Good luck! It was one of the hardest things for me to defeat.
But I do encounter many chores in my work that are boring, that are bad ideas, that are for difficult customers, or often all three. I can have the same problems getting those tasks done, just like you describe. Actually, you seem to be way ahead of me because it took my far to long to figure it out. I thought I was losing my ability to program. I was wondering if I was going to have to find another career because I had lost my ability to concentrate. I was reading books on getting things done, and concentration and trying to figure out what the hell was wrong with me. I would sit down to do a task, check email, check reddit, check hacker news, check reddit, get coffee, go to the bathroom, check reddit, "Arg! I have shit to do!" Check reddit, check IRC, etc. I caught myself more than once closing a browser tab with some distraction, pausing for a half moment to organize what I should actually be doing and then open a browser tab to the same thing again.
The insite came when I finally got something engaging to do, and I just powered through it. I could still program! How did I get in the zone? How do I get there again when I need it? Well I worried about hat for a while, thinking there was some combo of sleep, nutrition, environment and task management software that I could line all up and get back to "the zone". It finally dawned on me that I subconsciously find distractions to avoid doing things I don't want to do. What a revelation.
How do I get over it? Well I still struggle with it, but simply identifying the problem was a huge step towards fixing it. Here are some techniques that I use:
Pomodoro technique. This is a productivity trick that actually works pretty well for me. The short version is that that you make a list of very small tasks, then work for twenty minutes (straight! no phone, no emails, no coffee, no bathroom), then take a five minute break. This helps with distraction problems because you can tell yourself, "I can goof off in 7 minutes". It sounds like a lot of interruptions, but I'm amazed at how much I get done with it.
Creating crisis. I work harder with the Sword of Damocles hanging over me, so I put those swords there myself. Call me back at 2:30 and I will have this done. Then I'm good for two hours of, "oh shit, oh shit, oh shit," type production.
Pair programming (and rubber ducking). This really helps to power through crummy tasks. Unfortunately, I work from home for a tiny company. I don't have anyone to program with. But if I am really stuck, I can ask my wife to sit next to me, while I explain what I am doing, and what I am trying to accomplish, and the details of what I am coding as I code it. I can use this occasionally to get over a hump.
Change of venue. I have struggled to find some shitty bug in some shitty spagetti code for a crappy website selling stupid things for WAY too long. The only way I broke through was to take my computer somewhere else, in front of other people. David Sedaris has a great story about a book suggesting he make a change in his house to help him quit smoking. Buy a new couch or something in order to change the venue. In our comfortable habitual surroundings we act in comfortable habitual ways. So he moved to Japan to stop smoking. I can't do this every day, it's just for breaking major blocks.
Anyway, I need to get back to work. Good luck!
Is waste really the right word here?
They don't see how many hours I have wasted, how unmotivated I am. Instead they treat me as one of their most valued employees (oh the irony!).
"When given a vague, annoying feature to implement, very carefully considered approaches and built it in a surprisingly readable and maintainable way"
What you're experiencing isn't atypical - sometimes programming something sucks! Your employer values your ability to power through it and still get good results.
I'm a manager, and sometimes I feel like you. Sometimes I need to ask developers to do things I don't believe in or things I'll throw away in a few months. This also demotivates me. You need both a lot of discipline and just a bit "aloofness" to keep going. Care less about those tasks, think about friday.
If your managers are any good, they know you have wasted hours, they know you are unmotivated, and they know those meaningless tasks are the reason, this is why you are a valued employee. I'd rather argue to death with an employee because he thinks his idea is best for the company than one that will just accept any task like a robot. But sometimes you have to implement ridiculous things into software, from clients being just crazy or because of some strange contract clause. This is when discipline kicks in. Such situations shouldn't happen often, but if they are, that's when you should move on.
You don't need to get "in the zone" to get the job done. Just start by doing smaller pieces, put your headphones on. You could just ask why feature is being built, but I doubt knowing the reason will motivate you at all.
1. If I'm working on something vague, try to extract more information about it. It's very hard dealing with frequent changes on a complex code base. I'd try to find out who the stakeholders are, customer is, and most importantly, what they are trying to achieve that this serves.
2. Break it down into smaller tasks and measure myself against these. I want to leave work having completed something and not return to work knowing I didn't complete something.
3. Try bringing a colleague in to help you, such as talking through the existing code and bouncing ideas off them. The energy a colleague puts in can help with motivation.
4. Make sure there is an end to it and that it's not an open scope. You'll never finish something if the stakeholder doesn't know what they actually want.
5. If this looks like it's the norm and you're not happy, while you say you can't change jobs now, put the plan in motion for when you can. Think about your CV, learning new things, etc that help. When the time is right you want to be ready to jump.
6. Get enough sleep. I find I procrastinate more when I'm tired. Of course, eat healthily and exercise.
7. Try to remove other distractions, such as any other commitments at work as a 10 minute interruption can cost you an hour if you're not in the flow of the work.
As far as I know the only way to get over burnout is to stop. If you do not you will suffer more. I wish I had better news.
2.) This is surely arguable, but I think agonizing over a lack of satisfaction/motivation in a job is likewise a waste of time. If you can get those things at work, great - if not, don't try to force it - redirect it to side projects, friends, family or hobbies.
3.) Life is really short and full of trade-offs. Be sure to regularly re-evaluate your position or you might find yourself stuck rather than simply compromising.
>'How do you get in the zone and get it done when your entire being is revolting against the task?'
Through each of the things I described above. Whenever necessary I remind myself that:
* I'm a provider and professional, my family depends on me and I'm paid to do good work - getting this done is not optional.
* My time is short, delay buys me nothing.
* I have no shortage of great things to look forward to when I'm done.
But, enough on that. A few years before then, I felt like you did, but I wasn't actually in that situation. There is a very real positive feedback loop in effect - you feel like you're doing a bad job, so work longer hours on it, end up taking longer, feeling like you have "wasted" hours, and feel worse about doing a bad job.
Believe your employers when they say you are doing great, otherwise you're likely to be heading down the burnout route which had me off sick for half a year. It's not every coder that has such high standards as you, and that is not something to be ashamed of. Be proud of the code that you have produced. Think to yourself "It's just as well I wrote this bit, because if X had, it would have been awful".
I know this sounds like extreme arrogance, however sometimes it is necessary for the purposes of regaining balance. It sounds like you are being a little too humble. If it gets too bad though, get some help from someone.
Dealing with a rough situation that you have no external control over is one thing, dealing with a lousy job you do have control over it. Let go, walk out the door, and look for something more fulfilling.
Those conversations have taken my team and I to interesting places. I've discussed brand positioning with developers, and shared spreadsheets of time-to-value models with designers, at times going far outside of people's skill sets and comfort zones. If someone insists a piece of work is a bad idea, I invite them to argue against it but insist that I need them to make their case rigorously. Sometime they'll convince me, sometimes they don't want to work through the reasoning, sometimes I'll try and develop their case and argue against myself. I want to reach a position where we either change the task, or we're both satisfied that the task should be done. If that's too hard, then I'm after a position where they at least have rational faith in my request and my reasoning, and are ok to do the work on trust.
I spend a lot of time on this, for a few reasons.
First, I don't want to ask anyone to do something meaningless. Burnout isn't caused by workload. Workload causes exhaustion. Burnout is caused by resentment. If my team resent their work, that's a deep and important problem. I'll tolerate a only very small amount of that, but I'll let everyone know I'm conscious of it, don't like it, and am working to get away from it. Burnout is toxic and damaging to people and the group as a whole.
And secondly, this kind of explanatory work strengthens everyone's investment in the team and the work. It strengthens the team's ability to think together. As people become better informed, all of our discussions become richer and more valuable. People enjoy the work more, and can relax and trust each other more, knowing that decisions are made in ways they can understand and agree with.
Finally this is also a litmus test for me. If a company won't let me in on it's decision making, dismisses my concerns as unimportant and tells me to just get on with something, they're indicating they don't value the team in the same way I do.
Pick things that incidentally accomplish the assigned goal. For example,
1. Pick an amount of time, like 3 hours, repeat this cycle
2. make a branch
3. implement the feature in the fastest way you can
4. think about why this isn't acceptable
5. throw away the branch
6. do it again avoiding one thing that made the last one crappy
Also, weighing merits of different solutions and picking one is your job -- no need to feel bad about that. Come up with an assessment tool that will help you decide. Time-box decision making, but don't stop thinking about your solution -- just give it the appropriate amount of time, not unbounded.
Making progress is motivating. You want to end up at the same place but have the feeling of progress making throughout the process. I believe that it's possible you are taking the appropriate amount of time to do the work at hand, but you are getting into an anxiety/depression cycle because you can't get into a flow state.
That being said, I've worked a couple jobs in the past where I felt similarly to you--one of which I objected to much of what I was working on not only from a utility standpoint, but from a moral/ethical one as well. The only thing that kept me going was the social network I built of similar-minded coworkers. The ability to vent, joke, and commiserate with people who felt the same way I did at the company was extremely cathartic and served as my therapy. I don't think that's a good substitute for getting out and finding something else that you actually enjoy, however, which I eventually did when I realized how it was affecting my mood even outside of work.
"Unnecessary complexity to the codebase"
It depends on what you mean by unnecessary. If you mean "won't bring in anymore customers", have that conversation with your managers. Not all of them are brilliant, and no one gets it right 100% of the time. If you can prove that the feature doesn't provide value, have that conversation with them.
On the other hand, if your boss ignores your input, and you're 1000% sure that there are other features that are more valuable to your business than the one in question, you can always push that one to the back and work on something that's more productive to the company. Depending on your political and professional circumstances, your boss may not notice or care, and their boss may forget about their red herring feature; you might be able to side-step the conversation altogether. This will only work if there's more than a few items on your plate that need to get done soon, and this feature can get pushed aside without delaying or blocking anyone else.
Bear in mind that if you go this route, you're putting yourself, your career, and your neck on the line. If it turns out that it wasn't a good idea and everyone agree with you, you'll look like a genius and gain some clout as a clairvoyant; if it turns out it was seriously necessary, you'll look like someone who pouts when they don't get their way. Either way your boss may also hold a grudge. I'm not saying it's the greatest way to go, just adding it as an option. It's helped me more than a few times in my career, but it's also frustrated my bosses a few times. Be gracious if you're shown wrong though, and quick to admit defeat if it's obvious you chose the wrong path, and you should be fine no matter what happens.
The other thing is that if they value you, it's probably for a reason. You're fulfilling their expectations and providing them with value. Take the compliment and go with it! http://en.wikipedia.org/wiki/Impostor_syndrome
My suggestion go on a vacation, if it doesn't get better... leave. You say you're not in a position to leave... but you have to, because its not going to get any better. You're not really doing anyone a favor by burning yourself out for them.
Your managers demanded a stupid feature, and you took long time implementing the stupid feature due to its complexity.
The only thing missing is you need to warn your managers before you start coding such as "This is going to take long time due to the complexity, many many weeks. Also I don't think it's right for the product either."
As long as expectations are clear beforehand, and you met those expectations, then no one is getting fired, and therefore you should relax and enjoy coding Easter Eggs into each shitty feature.
One of the things that I found helped me the most when dealing with features like this is to Let Go of Caring about that particular thing. We fight for what we believe is best, but when a customer, manager, or other higher-ranking stakeholder decides otherwise, it's out of our hands. You did your professional duty by arguing for the Better way (as you see it), but now it's time to make the new direction work.
UX team decides buttons should be the way that pisses you off the most? It's OK, you're not the main user.Manager decides that a "Calculate" button is better than auto-re-calculating? That's ok: the users are happier using that. (We can transition later.)They want an e-mail based workflow for approving things, rather than a web-based one? That's OK: these execs spend most of their time with their phones, and don't want to be logging into the website.
Often what we feel is "unnecessary complexity" is a workaround for a key use case that we didn't realize, or yields customer happiness because it's what they asked for. In that case, it's __necessary__ complexity, just like a bit of ugly code that patches a bug. Try looking at it from the perspective of the user or the manager, and really understand why they feel it is important -- quite often, it's addressing a weakness of your software product that you were not aware of, or which you felt was unimportant.
We have a right to be happy. We should make decisions that satisfy the majority of our lives and where do what we love. For things not under our control, we still need to love what we do.
The easiest solution to your problem is creating discipline and decisiveness. When you give yourself more hours to work than you are expected to, you create a vacuum of inefficiency. You work unsustainably on things of little value. Instead I would force you to a) figure out your success criteria, b) what are those steps, c) prioritize those steps, and most importantly d) set time limits for each of those steps. The constraint of time will force you to get to the 80% quickest. I have written some articles on these exact problems and in the process of creating an app with those insights. Feel free to read more here: https://medium.com/produce-productivity/ee13c1600b6b
This time is not entirely wasted. Even in the worst case -- where the code you are so carefully writing winds up not being used after all -- you are getting good practice in code craftsmanship. The next time you are faced with a decision similar to one you are making now, you will make it more easily: not only have you considered the issues before, but you know how one of the possibilities actually worked out. This is how one builds experience.
I usually find that writing code slowly and carefully is in fact the fastest way to get it done, because it minimizes debugging and rewriting. There are exceptions, such as exploratory programming, when you know you're going to throw the thing away anyway, and in small utilities built for personal use; and there are times when getting something working quickly is important (for a demo, for instance) even though you know you'll have to rewrite it. But these are exceptions. When you're implementing important functionality that's going to be in the product for the foreseeable future and that others will have to maintain and build on, the slow, careful way is best.
It seems to me the real problem here is that although your managers value your work, they don't listen to your architectural opinions. That's a serious problem. Maybe at some point you'll need to tell them, "if you want it done that way, you'll have to find somebody else to do it". Pick your battle carefully though -- it needs to be a case where their way is clearly and substantially suboptimal.
They don't know this code is generally unrelated or don't complain to me about it. Only problem with this is I can now be opening up new bugs because these revisions aren't always fully QA'd.
If I cant get the motivation then I need more abstraction. Abstract until you drop! You are naturally conditioned towards completing things and positivity. That's why people get badly addicted to games like farmville and such. You do something simple, you get something back, you do something else, you get something else. Really your just baking time. But the psychology of achieving is where the addiction comes from. It's not the game. It's the fulfilment from completing something. You need to see this progress visually so you feel like your moving.
It's not uncommon for me (when I'm really low and scraping the barrel) to have a task like for a job such as this;
[ ] Open Sublime[ ] Set-up folder structure[ ] Skim read spec[ ] note areas of concern for later [ ] Describe required method to self / colleague / rubber duck [ ] pseudo code initial method [ ] expand pseudo to code [ ] looks in spec for extra details [ ] list who needs to be contacted for further information[ ] email manager estimate[ ] take a break...
Now you can start to get "little wins" even on something you don't really agree with / want to do. The goal now becomes to tick those damn boxes, not to implement some feature you don't agree with. It might seem strange to tick a box for something as simple as opening a program, but if that's the level you need for your motivation then that's OK. The reality is these check box's are just mental milestones for progression. What's really important is your ticking them though. If you find yourself for hours on end not doing the list, the list is wrong somehow. Perhaps you don't have small enough tasks. Perhaps the tasks are too hi level and need to be split into sub tasks on those. Just tick, tick, tick.
Try it, it might work for you, it might not. This sure helped me though! Good luck.
Without going into details, in my case the task is implementing a terrible, hacky solution for a total edge case problem. It's something I will probably never do again in my entire career.
It's draining. It claws at my self esteem, as I sit in the office wasting literal hours during a day not doing anything. The output of the 4-5 hours of actual work I put in over the course of a week appear satisfactory to the stakeholders, which is mind blowing.
I know that the sooner I get this done, the sooner I can move onto something more interesting. However, just working on this particular task has sapped my will like nothing I've experienced before in my career as a developer.
I seem to have a finite pool for motivating (or more accurately forcing) myself to do work. And when that pool is empty, it's off to HN or Reddit I go. Frustrating, and I still don't have a solution yet.
Hope this helps.
If that story doesn't bring any comfort because you have to stay, one approach is to be open about how you feel at a team meeting and see if anybody else is willing to timeshare the task. However, if this is the sort of task you will always face day-to-day, you will eventually have to decide if that's how you want to feel everyday.
What helps me most is finding a technical challenge that makes the feature interesting and fun to implement. This shouldn't be too hard, if you are free to design the feature technically. Hope that little hack helps you getting things done.
"Also I waste considerable amount of time trying to do things in the most readable, maintainable and simple way possible"
Motivation is tied to your attitude here as you are looking to do more 'interesting' work, whereas the task at hand looks boring. However the task at hand could be important for the company, so it is important to take trouble understand the big picture here. Most engineers (and I am one of them) are too self-centered to do this, and this can be debilitating.
It involves coming out of your shell, being proactive to talk to the business, product and other areas and see why these set of features that needs to get done has important implications.
At the end of the day, everything is about service. If you enhance your attitude to think more in a service-oriented way (it is not all about you), this changes your 'attitude profile', and in turn can boost your motivation factor by several orders. Suddenly what looked boring becomes very important. It may mean to be more pragmatic ( no ideological fixations on 'purity of code'), roll up your sleeves and get it done.
The valuable service to the customer, can lead into repeat business, which adds to the bottom line, and that later could mean more bonus for you, which you can use it up for that special time with your BF that you have been planning for a while.
Sometimes I have the impression that the younger don't know how to take it like a man. There is a difference between complaining and whining, guess which one makes a man miserable...
Reality is hard to change, but perception is easy. You can really improve your happiness by reworking your perception.
Take some distance and look at the big picture: as an Employee, your main concern is if the pay check cashes. Everything else is ultimately a problem for the business owners (professionals are pragmatic, not cynic).
If your vision does not align with management and you happens to be right, it is a lot more sad for the company than for you personally. It is not your baby - wish them good luck, do your side of the deal as well as you can and don't suffer over it. You have your startup, your own baby to look after.
Ultimately, I chose the path of gritting my teeth and getting over it. During that phase, the code quality suffered a little, but I did not have to waste hours and hours of my life freezing on it. This phase lasted for a few months in some cases.
This is by no means a long term strategy - I accept it as part of any programmer's life and simply deal with it without being emotional about it as much as possible. I have been fortunate enough to get more exciting work than mundane stuff
I think many of us know your pain, and as a consultant I'm exposed to it on a pretty regular basis. It takes some of the fun out of my job for sure, but I don't let it stress me out. First, we should always want to be passionate about the projects we work on, and I think this is a result of being passionate in general. Being passionate makes it enjoyable, and it allows you to bring your best work forward (which is rewarding), but in our industry we must always create a balance of cost and quality in the midst of a very complex process. To me, this all boils down to priorities and expectations.
When you take your own priorities and combine them with those of someone else, you will never be able to get them to mesh completely. Your priorities may be to make quality code, or to make it elegant or smart -- easily maintainable, extensible, etc. etc. These are things that make it fun, and programmers all know the benefits of these things. Clients, or your bosses, may not understand the importance of these things, or they may, and they may be willing to pay it down later, whatever the case may be, there are conflicting priorities at play and this is the thing you must mitigate to avoid stress.
For me, I must either disregard the external priorities entirely and do it the way I believe it "should be done", or I must disregard my priorities entirely and adopt the external priorities as my own. This may result in technical debt, or a slow progression in the future, or can raise the potential of bugs to be introduced, but these are not my concerns if they are not part of the external priorities.
It's important that you communicate all of my concerns up front, and if it doesn't impact the priorities that are communicated, you must trust that it's ok. If you don't trust that it will be ok, or think you will be negatively impacted by doing it the way you're being asked to do it, you should leave. A management(or client)/ employee relationship is built on trust, and if you don't have that trust you will be less happy than you could be.
Set yourself small very clear goals which you write down and where you commit yourself to finishing them in a given amount of time.
However, what your mind is telling you with the feelings you experience in my opinion is something along the lines of "Don't do this, it's not great".
So when you experience this very often, you need to change something in your life, or else you'll fall into depression because you have overcome your inner hesistation one time too often.
Don't take this as a scientifically accurate account, just my personal experience.
I have same feelings and I notice that they stem more from being responsible (often self assumed internal responsibility) for the state of the system no one else cares about the state of.
You are just lonely with what you do. People love you for the effect of your work, but you see that they don't care about what you do. And it makes your work meaningless (or even detrimental) from your point of view.
You imagine you could take solace from the fact that you system would be architected beautifully without all this crap people who pay you make you put in there. But that's not true. Artists are generally unhappy. They get happy though appreciation, but not appreciation of common-folk that just don't get art. Only by appreciation of fellow artists.
Programming is a puzzle. It doesn't matter what puzzle you solve. Solving a puzzle of not increasing fragility of your system by adding crappy feature is also a (hard) puzzle that can be solved better or worse. Sometimes solving puzzle brings pleasure if your solution is especially good and programmers think that's the right and only way to get pleasure out of what they do. But that's rare. For each time solution itself brought you pleasure you should have at least 10 times where your solution brought you pleasure just because someone seen it, understood it and respected it.
tl;dr Make company hire more competent people that can share your burden.
Quit. Get out. Work out a plan with your BF. It's no good to you or himif you destroy yourself on work you hate. Be happy and poor togetherrather than rich and dysfunctional apart.
I've never had to work (for a long time) in a job I truly hated, butI've felt the pain of working in a company with a poor managementculture -- it's taken me a long time to get back the joy of developmentsince I left. I now work in a completely different, low paying job --but it's better being payed less and not having to compromise your workevery day. I'll probably end up with another job in the industry (well,I hope, anyway!) -- but I'll be very careful in choosing where I apply-- unless I manage to make a living independently.
For you it sounds pretty much anything, anywhere would be an improvementthough...
I had a gf that worked in a job that crushed her (shedid the right thing, moved away, got certified as a padi instructor andnow lives with her husband and their child, both working as divinginstructors -- I'd say she made the right choice :).
Quitting might not mean that everything works out for you and yourcurrent BF -- but it sounds like staying will ensure that things willnot work out for you.
Anyway, good luck, whatever you end up doing...
What does this mean?
Well, if they assign you a vague task, you get clearer about it, you ask them why they want to do it, what the objective is. A lot of the time, you could be wrong, and with their objective it makes sense. A lot of the time you'll be right. The best way to show it is to mock it up, and explain your thinking on why it's wrong.
The biggest killer is when you feel like a code monkey, it's usually not the work.
I've been there before, and had some periods of time at a previous position where it felt like every minute of the job was a struggle. Getting things started was the most difficult for me, but once they were started, I could get them done.
If this job is just to pay the bills, and is not critical for your career, then:* Work on autopilot. Do what is required of you, and use some of your time on the job to learn things that would advance your career. For example, for each 4 hours worked, allow yourself an hour of learning something new to advance your career.* Find outside activities that you look forward to each day. Don't let the job define who you are. If you do, it could crush you.* Since they value you, ask to work reduced hours if possible. The less time you need to commit to the job, the less likely you are to burn out.
However, I can't help but recommend that you stay on the look-out for a job that brings you satisfaction and challenges you to do your best everyday.
How do I handle it? I say my piece, I listen to the response from my boss. If he disagrees with my analysis, then I accept it, sit down and do the work to the best of my ability.
I've also found focusing on tests helps. Write as many tests as possible - focusing on getting those to pass. In theory, by the time you're done, the feature will be to.
That is, if I see a project as someone else's, and my job is to help them do their best, I am happier than if I see a project as "mine" and other people are just screwing it up.
Like many important life lessons, I learned this one a day too late.
I've had numerous jobs where I felt I couldn't leave for certain reasons. I would stay usually a few years too long and later come to regard the decision with a mixture of regret and weird, sanctimonious pride.
Take a few hours today and read Man's Search for Meaning by Viktor Frankl. It's a short book, written by a psychologist and concentration camp survivor. The book demonstrates that is possible to find meaning in the worst situations, especially those you "cannot" leave. It may also help you understand why you need to think about choosing a different path.
It's a good question though.
After analyzing requests I have issues with, I will setup a meeting to discuss what I think are the issues, and propose a better solution.
If they push it off as "This is what the customer (or some other decision maker) wanted", I ask if we know if they have considered the issues and if we can propose alternatives.
If they still want to move forward, I ask or work with them to discover more detail about how it will be developed, and make sure they fully understand and explicitly acknowledge each piece I think is insane, irresponsible, or otherwise.
It usually doesn't get to that with good managers or clients. If it does, and it happens regularly, it's time to fire them and move on.
"My managers don't fire me". Perhaps show managers the post written here? I dare you! But they pay your wage.
Put headphones on and listen to the right music or something to encourage focus. Yep!
I think everyone is in the same boat as you in some way or another. "wasting considerable amounts of time" could be a worry though.
"Seriously affects the quality of my life"... surely the quality of your life is not a consequence of "unnecessary complexity in the codebase"?Good luck anyway :)
Edited - I'd had some wines
I've made about 10 cups of tea, gone to the toilet about 6 times, read every tweet tweeted in the past 24 hours. Started three arguments, considered quitting and storming out... it's horrible and I'm glad you posted this because I've been going through exactly the same thing.
As developers, this problem isn't going away any time soon. Our options are basically to create our own thing and be our own boss so there is no management to frustrate us, or just give in, write the code, take the check, and enjoy our lives outside of work. It's that simple, but it's also quite liberating when you allow yourself to accept it.
The quitting part, moving on to a new job is not an option for me as I am convinced that it is the same exact situation in most businesses around my area.
I started working on some personal projects which helps a lot, but does not solve my problem.
I find myself pushing to the last minute before the task at hand is due. The extra rush of adrenaline from the looming deadline gives me the kick I need to overcome the meaningless work I am about to do...
however i feel inclined to reserve that for serious problems, like weak leadership, oppressive or immoral behaviour etc. rather than poor features or undesirable work...
doing things you don't want to do is part of work. letting your leaders make their mistakes and learn from it is part of it too. i'm strongly inclined to say you just need to grow up a bit and get on with it... and be grateful that this is a 'problem' for you because its nothing compared to what most people consider to a problem in the workplace.
That is not to say you shouldn't be proud of the workmanship of what you build (not quite the same thing as being proud of the product).
Unless you have a position where you have design authority, stop worrying about the why, and focus on the workmanship. Impress those that do have this authority with how well you do with what you're given.
If you believe that you have insights into making a better end product, then learn to communicate those insights at the appropriate time (before they've made up their mind). Try to get ahead of the curve and propose your ideas.
Similar - not coding though.
>>How do you get in the zone and get it done
I treat it as an optimization problem. Specifically because I have a problem with this too:
>>I waste considerable amount of time trying to do things in the most readable, maintainable and simple way possible
So I consciously aim to force that compromise between quality & time more towards the time side. That goes against my fundamental nature, but I've come to the conclusion that I must learn this...and as a result it feels more like a learning & personal development challenge rather than me doing something I don't want.
Your problem is not really knowing if you can change things. Or whether it's worthwhile to change things. Ultimately, you can't really know whether it's better to try to change things (communicating better, focusing more on design vs writing code faster, getting a new job), so you have to accept that.
So ... whatever you choose to do, you can't really beat yourself up over making a bad choice. It's a hard decision. Whether you stick with the job and try to change people's minds, do things the way you currently are (but without stressing so much), or find a new job is a difficult decision, but no choice really stands out as a clear winner (from the little you've said), so just pick one and go with it.
If you want a new job, go hit up linked-in.
If you want to do things the way you currently are, just accept that programmers "waste time" - there's a reason why competent programmers often only write 10 lines of code a day - it's not easy work.
You can try to communicate better, but really, some people just don't listen. Or maybe the managers don't have a choice - they either have managers or customers.
Finally, work harder on documenting / presenting your progress. It never hurts to write stuff up, and explain the decisions you're making or the technical reasons why progress is slow.
But I think all of us sometimes struggle with sitting down and getting things done. When we have a bad day, it's because we struggled making decisions and didn't end up accomplishing very much in our own eyes. We're our own harshest critics.
One thing that I've realized (actually just in the last few days) is that you simply feel 10 times better at the end of the day if you write a lot of code, knock of tasks on the to-do list, and generally "get things done".
Knowing that diving in and doing hard things will make you feel good makes a huge difference for me. It's like "Ok, this might suck a little getting started, but it's what will actually make me feel good and happy." It's really easy to sit and think, or read the internet, but it's not a good feeling at the end of the day.
As far as wasting time, whenever I'm struggling coming up with an approach or solution to a problem, I start writing it down. It usually doesn't get too far just in my head. But if I map it out, write it out, I get back to working on it much faster. An inefficient solution that works gets you much closer to the final product than struggling to find that "perfect" solution right off the bat. Make it work, then optimize.
I can completely identify with some of the points made, my particular frustration is working with appalling specifications that are 9 times out of 10 incorrect/incomplete quiet often leading to features being written multiple times. It's demoralizing. I have no particular solution, some will say just knuckle down but it's easier said than done, there are some tasks that just can't be made interesting. Unlike the OP I can change job and am, next week.
I am not mocking your situation. If it's really bad for you, follow jblow's advice. But if it's a once in a while demotivation, swallow the pain and go on. You will reach greater heights and from there these menial times won't matter.
Just my two cents.
It's good that you are getting your job done, but it seems that you are still having issues setting aside your personal feelings and emotions. This is pretty normal for inexperienced developers. It's something you should focus on working on.
Here's how I developed that skill:
1) Remind myself that this is not my company or my project. It's someone else's. There's no reason for me to feel so personally invested in the project as a whole. If I've voiced my concerns and thoughts and been overruled, then my job is to get what is asked of me done to the best of my ability.
2) Have side projects that ARE personal and that I CAN be emotionally invested in. When you have a side project where you do call the shots and it's done 100% the way you want, you will find it is easier to not be so emotional over your day job.
3) Lastly, I have found that as I get more experienced and better at explaining myself, situations where managers overrule me and tell me to do something that is against my own recommendation become more and more rare (they'll still happen sometimes as long as someone above you can make unilateral decisions, so never expect it to fully go away.)
It's good that you've recognized your situation needs to change. Best of luck.
Listen to music.
I never found the ability to rationalize a task I dislike. Instead, I find joy elsewhere and try to preserve that feeling as I tackle the task.
2) Challenge yourself to finish the project as quickly as possible. If a realistic estimate is that the work will take 1 week then try to finish it in 1-2 days. If it is awful work, try to get it over as quickly as possible. It helps if you can find an existing solution that you can use as a starting point.
3) If you're paid hourly, you might consider outsourcing the problem to someone off of elance. You should reframe the problem so that it doesn't require you to share any info (source code etc) from your employer with the person you outsource to. Ideally, ask the person to create an open source project on github.
- Eliminate ambiguous requests. Can you probe for your managers stated/unstated objections & needs?
- What's the expected outcome? Are your recommendations easily understood and compelling? Is your business case sound?
- If the managers are happy with schlock work, can you ever be OK with that?
Ultimately, the power is yours.
1) Change the way you feel about the situation. Is this a me issue?
2) Change the situation externally. Talk to management, etc.
It sounds like you've tried #1 and #2 to some extent. I was in a similar situation. I left the company, and found a much healthier environment where I can actually use #1 and #2.
"Do you wrestle with dreams?Do you contend with shadows?Do you move in a kind of sleep?Time has slipped away.Your life is stolen.You tarried with trifles,victim of your folly."
Life is short. It is time to see through the trap you have woven around yourself and move along. Just do it constructively so that in the end, EVERYONES interests will be better served.
I have been doing sole crushing work for years in school. When you don't have a choice, the most useful thing for me to get started is the pomodoro method. Spend just 25 minutes of agonizing work and plan what you want to do for the 5 minute break. Usually after 1 or 2 cycles I actually get focused and motivated enough to make some progress.
I believe that most of our jobs can be divided to two parts:
-the fun part (interesting/fun/profitable work)
-the shit part (boring tasks/emails)
So, just get the shit work done when it needs to.
...anything other than the task at hand, obviously. :-)
Always think of yourself as an explorer collecting and connecting clues on a mysterious adventure!
Keep in mind, business drives programming, not the opposite. The codebase is only worthy as long as the product is selling (with the help of your managers).
No, seriously. I go work somewhere where people can see my monitor. Helps me keep out of Facebook, etc.
When I am asked to do what is not rational, I refuse and give argument. But to play this card you have to be willing to pick up your coat and leave, not as a threat but as a last resort.
You say you're stuck there, but the reasons are not yours, they are someone else's. Get over that and your options open up.
Ultimately, I ended up at another definition of that word: "Spent".
I'm just saying...
Whatever the reason you are feeling depressed with your current situation (already lots of good suggestions in this thread), feeling guilty about wasting time or cheating your managers is basically a form of inflicting self-harm on top of everything else.
You're getting paid for whatever you do, and apparently the people that pay you are happy with the results even if you aren't, so just put that aside and focus on what makes you happy.
Every time I've reached that point that you have described, I've quit. It was the best thing for me every time, too. There is no point wasting your time doing something you don't want to do, especially if it's for someone you care about. You'll just do a shitty job and you don't want to dump shitty jobs on people you care about.
Is it just that the work is boring, or are you being asked to do unethical things? I mean, either way, I would quit, but if it's anything unethical I would urge you to run as fast as possible.
However, if it's just "boring" work, perhaps recasting it in a different light might help. Look at it as a game of seeing how many you can finish in a single week. Stop worrying about doing the "best" job on it. If the project is so boring to you, then you probably shouldn't care so much about the quality of it. Just dump out some garbage, get the checkboxes filled, see how much you can get away with. Make it a learning experience, a chance to test your boundaries.
And, if you can't change jobs, then consider coming up with a side project. It doesn't have to be commercial, or even of particularly general application; even if you're just scratching an itch of your own, it'll give you scope to exercise the agency whose absence in your day job is giving you fits.
But it's in your head. Using simple tricks you can change how your mind interprets the thing, and put yourself ina more receptive state to be able to accomplish the task without it seeming like a battle of wills.
First, put yourself in a good mood. Listen to your favorite music, eat or drink something pleasant, think about the fun things you'll be doing soon. But whatever you do, don't villify the work or think "I can't wait for this to be over!"; that's just more avoidance.
Once you're in a better mood, walk through the work in your head so you understand everything you need to do, and estimate the time it will take, but shorter. Try to find something positive about it to work towards, or something good or interesting you want to see come out of it. It could be something as simple as timing how long it takes for you to write five methods. To prevent further avoidance behavior, remove your watch and hide your clock. If you can, move to a quiet place where you can focus with the least distractions possible.
At the end of the day, if you really don't enjoy your job, you probably need a different one. But it's a mistake to confuse a bad job with an unwillingness to do work you don't agree with. Consider yourself their savior, and do it in the best way possible so that it minimizes their crappy decisions and emphasizes your skills. Imagine you are a woodworker; maybe you didn't want to build a cabinet today, but you're going to build the best god damn cabinet those jerks have ever seen.
(Also: consider if you will be with this BF in five years and whether wasting this part of your life will have been worth it. Kind of a crappy thing to imagine, but you can't spend your life doing things you don't like just because it makes someone else happy)
There is no solution within your reach for management that is ignorant with respect to your job. Stop putting forth extra effort that will ultimately be wasted. Clearly, you have discovered serendipitously that no one can tell the difference between you doing your job well and you doing your job poorly. So stop trying. Just relax and do the first thing that could possibly work. Really build up some technical debt. Management probably does not even know what that is.
That way, you can use the ever-increasing bogosity of the code base as an argument for being resource constrained. Lobby for junior employees that report directly to you. The end goal is to set yourself up for a job hop into a better position at a better company.
The one you are working for now can be definitively marked as a dead end. So milk them for cash and emotionally disengage. Get your spiritual fulfillment by investing your creative talent elsewhere. Meanwhile, coast until you can bail out safely.
That's about what I'm doing at my crappy, soul-crushing job.
He strongly believes that they laid him off due to his age. Sure, he was not doing any extra wonders but was getting things done. However, he was telling us for almost a year that his days are probably numbered because new management wants fresh face.
Right now, he is almost done with unemployment and trying to get back in the market. There certainly are jobs in RPG/AS400 areas but his resume clearly shows his age and he is not getting even a single call. I advised him to only show the last 10 years of work and then see what happens.
In my prime I earned $150K/year as a programmer analyst writing business software for mostly Microsoft Windows platforms. That was before the Dotcom bubble burst and the market got flooded with younger cheaper labor developers who only studied in hacker school for three months how to become a developer with no college degree and high school dropouts. They work for like $20K/year and write sloppy code with security flaws and poor quality.
I've been programming since I was 12 in 1980 learning BASIC on 8 bit microcomputers, and learning COBOL and FORTRAN on mainframes using punch cards. At first I made mistakes and failed like any other person learning how to be a programmer. I learned from my mistakes and kept getting better. Over my life I learned over 37 different programming languages on countless different platforms. But none of that matters anymore.
Many people I worked with at my age, most of them did suicide because of the stress of working or not being able to find a steady job. Those who stayed in the computer industry became software consultants and got ripped off by broker agencies and in most cases not paid for their work or even being given credit for it, some ended up homeless, others ended up disabled from the stress like me.
This industry can eat you up and spit you out.
I was able to earn money as a 'super debugger', a phrase made by Rear Admiral Grace Hopper when I heard once of her speeches on programming and debugging and how using less code is faster and better, etc. She used to carry some copper wire on her wrist as a bracelet, when they decommissioned some mainframe core memory it was wire wrapped. She would show it to young people like me to teach me that wasting code is wasting memory and resources, and that if you can do the same thing with less code, it runs faster, uses less resources, and less memory.
But nobody seems to want to take her seriously anymore, even if she is a pioneer into computer science, and had invented a lot of the tech we still use today. In her time they claimed it was not possible to have a programming language, they also claimed women could not do computer work, and she proved them wrong on both counts.
Anyway some of my friends who survived, ended up working in fast food and retail and clerk jobs, because nobody wants to hire a person over 30 these days for programming work, and even if they do it is software contracting and they get ripped off.
One of my friends Michael David Crawford who was a Senior Engineer at Apple and Drobo and other places wrote this in his email response:
I was until quite recently out of work for three solid years despitemy having for well over fifteen solid years received ~35 softwareengineering employment or consulting inquiries from recruiters - alsoknown as "headhunters" as well as "brokers" - ...
... While at the same time I found it Damn near impossible even to_find_ the kinds of software publishers I hoped to work for, let aloneany actual open job opportunites, due the quite common lack of streetor postal addresses on corporate websites.
I rsolved to take matters into my own hands by once and for allputting a permanent end not only to my own chronic unemployment butthat of a half-million of my colleagues in the engineeringprofessions.
I recently read at Soylentnews (http://soylentnews.org/) that there isexpected to be by 2020 a shortage of one million software engineers inthe United States alone.
I remain dumbfounded, given that there is presently a _surplus_ of500,000 software engineers as well as that chronic unemployment - thekind that creates large, unexplainable gaps in one's resume, thereforerendering one largely unemployable - is quite steadily growing worseover time.
It Does Not Have To Be This Way.
Local Jobs, Local Candidates: The Global Computer Employer Index http://www.warplife.com/jobs/computer/
My Global Computer Employer Index is built _entirely_ by hand, throughcareful, diligent and patient online research, as well as offlineliterature research in public and University libraries.
I learned all about how to do that when I majored at first in OpticalAstronomy then later Physics at Caltech - the California Institute ofTechnology in Pasadena, as well as at the University of CaliforniaSanta Cruz, where I obtained my B.A. in Physics in 1993.
You could really help a vast quantity of hungry, hurting people outwere you to lay this mail into the hands of _anyone_ you genuinelyfeel would benefit from or would be interested in it.
I Am Eternally In Your Debt,
Michael David Crawford P.E., Process ArchitectSolving the Software Problemhttp://www.warplife.com/jonathan-swift/books/software-proble...email@example.com
A majority of the aged 40+ developers that I know are still writing code. They're very productive, very certain, and have the experience that a lot of younger guys don't - especially with the social aspect of our industry. Its not enough to be 'the rightest guy in the room'. Its also not enough to be the 'most active developer with all the energy' in the room. What matters is that everyone in the room is right, because of the work being done together, and that the groups' motivation as a whole is more important than any single developer. Of course, if all you've ever done is work on a small (2 or 3) man group, its quite possible the idea of being the oldest guy in a room full of young people is an abhorrent idea to you - well, we old guys are dealing with it and getting the job done in spite of the upstarts.
Don't worry, we know - its penance for all the pain we put our elders through, 20 years ago...