This is another "I was like this" story. Two years ago I was at Microsoft India Development Center, horribly demotivated and decided to move away from programming. Actually I had realized one and half years in that I wasnt interested in my job and tried a lot of things to switch to a different role within Microsoft but none worked. I wanted to run away from programming.
A lot of the advice I received was similar as written in the article. But I honestly did not know what to run towards. I was utterly directionless. Ultimately,in a brief moment of madness induced bravery, I quit my job without any future prospects. While at home I re-discovered my love for programming as i was working on hobby projects. I responded to yummyfajitas' post on the Who's hiring thread, got the job and my life has been awesome since then. I absolutely heart programming , I keep on trying to learn new stuff and cant think of moving away.
All of this to say, if you feel like this, change your job, join a startup or learn a different language. Not everyone thinks in the same way. You may not be great in one paradigm of languages but that doesn't stop you from loving another programming paradigm.
I think many of those of us who get into programming in the first place do it because of some kind of intellectual curiosity and because we get a thrill out of building things with tangible results. Which is probably why you'll find lots of programmers also interested in playing musical instruments, learning foreign languages, writing fiction and so on. It's a certain kind of mindset.
I've been thinking about what jobs can potentially offer the same kind of intellectual stimulation as programming, and while I'm sure they're out there, programming offers this and is a skill that you can actually make quite a bit of money from while not being as ridiculously competitive as, say, being a movie director or a songwriter. If you know of other jobs that fit this bill, let me know.
Any engineering discipline would fit this bill. Its what attracted me to it to begin with. I wanted to build things. I started building things from kits (Lego, plastic models, etc) but soon graduated to doing my own thing. Engineering was a natural choice, and electrical engineering specifically because of my interest in electronics.
At least you're getting paid okay. Finance, Doctors, lawyers, management make more. I'd argue they have to put up with a lot more bull. Development is a piece of cake comparatively But software has a an extremely low barrier to entry. All you have to be is good.
It's called a premature midlife crisis (usually happens right before or at age 30). Some people get over it by dumping their life experience before that point completely while others, like myself, slowly wean off programming onto something else.
A friend I've known since high school gave up a very lucrative career as a managing consultant to become... a farmer. Yup, he plants stuff and sells them at a bi-weekly market and keeps going in the winter thanks to his greenhouse. Currently engaged to a lovely lady and, to my surprise and delight, he's completely happy.
It's a funny thing to feel like the industry you're good at (or been cornered into) is really not how you want to spend your life. And may in fact be zapping what life and vigor you have.
Which is why, I've been improving my carpentry while keeping up with automation tech (Arduino, Raspberry pi, Beaglebone etc...) so when I build my smart green house and cabin, I can get down to what I really want to do.
I think I may be starting to feel this as well. I'm 27 and have been feeling resistant to staying a programmer. My father in law has been showing me the ropes of being handy - woodworking, wiring electric, etc. I've been brewing my own beer occasionally baking bread and some days it just seems like doing anything with my hands instead of sitting at a desk all day would make me feel much more alive.
Then again, maybe not. I've gone through this with programming before and I usually swing back around to enjoying it.
It also helps that the pay is great for something that a lot of days I think I would do for free.
I think it's generally a good idea to do something you enjoy on the side that could potentially turn into your daily job - in other words an emergency plan for the future ;)
Most of the time my bouts of "screw this, I hate programming" has more to do with myself and losing sight of what value I'm providing than anything else. Sure, I'd love to have a job where I am constantly in a state of intellectually-stimulating ecstasy tackling new and daunting challenges... so would every other person on the planet, but such jobs don't exist.
Programming is a service business. You're solving people's problems so they can spend more time doing work that is more productive/fun/challenging/etc (hey wait a minute, that's what _I_ wanted!) When you lose site of who's receiving the benefit of your work, you start focusing instead only on your own needs and down the rabbit-hole you go.
I freely admit that I make this mistake regularly due to distance from those who are using the results of my efforts, but I also tend to burn myself out because I don't segregate work and life well enough. In Dream Job(tm) where I am always being challenged with problems that involve deep thinking, I can guarantee that I would burn out much faster due to this. Hard problem? I'll just work it until I've solved it to the detriment of all other activities. But that's how I work, and I know it so it's up to me to try and short-circuit that when it ceases to be healthy.
I would say that finding a hobby where you're working with your hands or engaged in the physical realm tends to help balance things out. All software is temporary and contemplating the months and years spent building something that will most likely be tossed in a decade or less is demotivating. So build some furniture, restore a motorcycle, paint a picture, anything that has a chance for permanence. It helps me, a lot.
I love programming. But certain aspect of the career do get to be a grind: Sitting in a chair all day makes my hamstrings tight, working on a large globally distributed team is frustrating because I spend so much time just trying to coordinate rather than writing code, and some days every tool we use seems like a half-broken POC.
I'm starting to think programming is a lucrative career not because of the skills or intelligence it takes, but because of the frustrations you have to be prepared to handle over the long term. Do many people wash out of programming? It seems like we need to invest more time figuring out how to handle the pain of the career in order to reap the benefits of have a great salary over several decades.
As a programmer, I don't understand the sentiment in some of these comments. When you're a builder, your job is to control costs (short and long term) while building as rapidly as possible. The returns on cost savings are bounded.
The returns on driving new products has a very high upper bound, if any.
Now some companies hire programmers to be included in that profit driven area of the business, I prefer to work at those places. If you work somewhere where programming is deemed a cost center, well I wouldn't want to work there but I've heard of many companies that have made a sustain able biz out of it.
I forgot to add, this is also the reason I've shifted towards "data science". Still get to code but I also add immensely more value to the business as I experiment to grow profits.
That's really what's happening here. There are all these programmers who desperately want to do something the business highly values. Maybe some of them haven't figured out the optimal intersection between their interests and their businesses.
Not everyone cares about this, but HN has a different class of programmer. ;)
Broden your perspective: don't program. Give yourself two years. Create social change. Programming might be a means to the end; eating simply on social security might be a means to an end; but showing the government and society where your allegiance lies is priceless. You will have greater respect for yourself, greater respect for your output, and greater associations for it. Break away from industry.
Look at samba, rsync, wikileaks, tor. We can do that. We can do more of that. We don't need the businesses.
Much of my work related programming is SSDD tasks. (Same Shit, Different Day/Data) Occasionally I get to do something creative at the office, but the real joy comes from the side work and the hobby programming. Instead of dealing with Yet Another Pile Of PCrappy Data, I get to deal with microcontrollers, radios and antennas.
Glib, but given the delta in the quality of thought displayed in an average CS professor's papers, and, say, POSIX, I would say it's safe to put this old saw to bed.
I like programming a lot. If I'm away from it for more than a couple weeks, I start to miss it.
The software industry deserves to choke on a dick and die, however. Fuck bad code, micromanagers, dopey "startups" that expect 14-hour days on the assumption that 0.0x equity slices represent real "ownership", closed allocation, and regimes in which programmers don't choose their tools. All of that can go to hell.
As software engineers, we're a defeated tribe. We work for businessmen, get little respect in comparison to the value we add, and often are pigeonholed into roles that are 3 levels below our creative and intellectual ability. We do most of our work for managers and investors who think we're losers because we don't have their jobs.
To me, quitting programming is just running away. Programming was never the problem. We need to take control of this game. We need to take it back and make it good-- and fast.
I'm not really sure this is anything to do with programming at all.
As far as I've seen all industries suffer from this. You have a lot of people who if given control over their own work would make things a lot better. But good management is very hard and often the business need just isn't there. There's things to be done and experimentation is seen as a waste.
I also think we can be a bit dewey eyed about 'great' programming. But most of programming isn't great. It's nasty, it's boring, it's edge cases and testing over and over, dealing with formatting, slightly incompatible outputs, etc.
Much of programming boils down to simple looping and modifying data. Getting data out of some thing and putting it somewhere else slightly modified.
Programming's fun when we experiment, but a lot of the time experimentation's not the thing you need to be doing. It's boring repetitive but slightly different code, really ironing out the edge cases and a lot of attention to detail.
You see it in all startups, the product is built, something new, exciting then the product seems to crawl forward, tiny changes here and there even though they've got more programmers than they did before. I sometimes wonder what on earth all those programmers are actually doing at Microsoft or Google or Facebook as their products don't seem to change much. Because they're all just touching the details on the edges, the main picture's been painted.
"most of programming isn't great. It's nasty, it's boring..."
I get what you are saying, but I don't agree.
When I am working on code that I know a bunch of people will use and enjoy, I don't really find the edge cases or testing nasty or boring at all.
Or to put it another way: at first I loved programming because it was full of interesting problems for me to learn how to solve. Later I loved programming because other people were using my software and finding it valuable. This shift away from yourself as the end product of programming is essential in my opinion to enjoying programming in the long term, and also much more highly correlated with commercial success. You also have to find a company (or create one) where you can directly do that. A hint - if you often think the code you are writing is pointless or a waste of time you are not there yet.
Defeated tribe? How about a tribe that surrendered without a fight?
Okay, so maybe, despite a still ongoing shortage, it's not a good time to stand up and fight in the middle of a crisis, but before that, when people who could barely operate a keyboard got hired as programmers, very few did or said anything either. Except maybe quietly leave, only to find out things weren't much better elsewhere.
Also, I find that very few programmers (and HN is not particularly representative of this profession) are willing to take responsibility for the result. Because that's the price if you want to get rid of micromanagement, pick your own tools, work decent hours etc.: be 100% accountable for getting a result that ships and makes clients/users/investors happy.
If you want to take control of "this game", you have to take control of the entire product/service, not just the code.
You probably are one of those who are willing to do that, but the vast majority of those who also call themselves "programmers" aren't.
>> We need to take control of this game. We need to take it back and make it good-- and fast.
I have been thinking along these lines as well but I am unsure on what can be done.
The real problem here is that our profession contains many shy, socially-awkward types, and guys and girls that were bullied when they were school and haven't fully recovered. Many don't understand how status is conveyed or are in complete denial that it exists. If you are the only developer in the room that wishes to be treated with respect, to be autonomous and to (learn to) operate on many levels then it seems like you are really on your own in trying to get these things. Many will continue to eat from the hand that beats them, and won't take the necessary risk to get themselves a better position and to help each other even when one of their team mates decides to make a stand. (I read a lot of your articles and I have to say I have gone DFA before and I will do it again.)
What is really needed is some kind of professional association that fights for our rights. A forward-thinking organisation that has good principles and can't easily be co-opted. Perhaps also a way of accrediting organisations that have great working conditions and a culture of respect. Maybe the only two which hit the list are Valve and Github. But once every cool startup is run like this then larger corporations will have to compete on a cultural level for talent.
I would like for all of us to be able to apply ourselves on a strategic and creative level no matter what our role in a company is.
I wonder who decided that because we implement we should not be allowed to create, design, and think for ourselves? They don't have the right to take this from me, nor do they have the right to take it from you.
The other night I was speaking to a friend who has found herself in a sales position where she is allowed to pitch ideas to clients and see where she can take things. She was happy and felt like she had finally found real freedom. How many of us have been able to grow the network of contacts and future clients required to solve business problems?
We're being held back but we're also holding each other back.
And I now realise you can't solve tribe problems on an individual level.
There has to be a way that we can all work together on this.
I'm pretty sure my largest contribution to software to date has nothing to do with code. I named something: open allocation. Now we've defined terms and we have a banner. My goal with that-- and it's too early to know if I've succeeded-- is to wake people up and realize that their current, micromanaged state of closed allocation is inferior to something that's possible.
We will see an increasing proliferation of open allocation, engineering-driven cultures. (We'll also see pretenders who claim to be OA but aren't. That's unfortunate, but it's just a sign that the good guys are starting to win.) It will take time, as good things always do, but time is on our side.
One thing though, is there evidence that it leads to a better working culture and perhaps stronger business? Or is the proof still to come out?
I love the idea of open-allocation but I worry that at companies in which people drag their heels, avoid learning and other bad things that it could be harmful. I also wonder whether there are people will not be business minded or innovative enough to do worthwhile work. Obviously scratching personal-itches sometimes leads to great products but we might all just play out our neurosis and then through commitment and cognitive dissonance chase ourselves down rabbit holes. Maybe my fear is completely unjustified...
Anyway, my idea for an action is the creation of some kind of check-list for a humanity-ready™ company sort of like the Joel Test. Perhaps I or another could create a GitHub repository and a website to get this rolling. What is important, I think, is to get people to talk about what they consider the qualities of a great company to be and what principles and practices would this company hold. Buy-in and conversation would help the memetic process.
The next-step after that, once people were on-board would be to create some kind of rating system and then perhaps to reach out to recruitment companies and see if they would add a feature for companies to mark themselves on their adherence to some of the best practices. Sort of like how the Joel Test is used on some recruitment sites...
Actually I'm still not really sure whether this would work because life is never that simple and I am sure things will more or less play out in this direction anyway. Certainly conversation on the ideas is worthwhile, however.
One thing though, is there evidence that it leads to a better working culture and perhaps stronger business? Or is the proof still to come out?
Valve is at 300 people and enormously successful. It has higher revenue per employee than Google, Apple, or Microsoft.
I love the idea of open-allocation but I worry that at companies in which people drag their heels, avoid learning and other bad things that it could be harmful.
My guess is that it's these corrupt, closed-allocation, intensely political companies that generate this kind of behavior.
Upvoted because even though I hate cynicism, it just hits me from time to time. I just am not motivated by mentoring or entering timesheets or working on projects I give no fucks about or being coerced into giving time estimates for problems I don't even understand yet.
And all of that baggage too often outweighs the real joy I get from building things in the unlimited universe of the binary machine. I miss feeling like an inventor, like I've got infinite Lego blocks and a vast, empty dining room table (that Mom doesn't need for a couple days).
Instead, I get just the microjoys of building a new web page from scratch with nice messages and useful validation, or a really well-normalized set of tables, or gosh, if I'm lucky, a really reusable, self-documenting library which I've been allowed to write The Right Way.
I'd love to work at a Valve or a Github, where programmers work on whatever they want, but how many of those are there? And I'd love to work for myself, except for the overhead of busywork that goes along with it.
This is exactly it. And the "dopey startups" are what we all need to be doing. And good news, we have majority of the resources needed to do that!
<insert garage success theory - starting with only coffee and a computer>
I understand it's not just coffee and a computer. You have to take into account the time that you give up from a 9-to-5 that you would make money from, but all things being equal, compared to lawyers, doctors, 'management suits' type of people, you are not directly dependent on others to start out.
I agree, but that's not easy to do. If you're going for VC, you get the same crap from investors. If you're going to bootstrap, that requires an orthogonal skill set in addition to a bit of luck.
I think that the 2010s will be dominated by self-started firms that evolve from consulting into product spaces, but most of that activity will not be in the startup hubs (e.g. Silicon Valley, New York, Boston) because the burn rates are too high. The geography of that growth spell will be very different from what we're used to.
I think the way out is to become an "X Who Programs". You become something else-- financial quant, startup founder, game designer-- who also happens to be a programmer. The reason this is so powerful is that no one (except a top programmer) can evaluate programmers, which creates nasty politics as people jockey for visibility, so you establish yourself in your more-visible X but use programming as a secret weapon. It keeps you from being treated like a commodity programmer and also gives you an edge on the best projects.
XWP is what the data science phenomenon, in truth, is. There, the X is statistical knowledge.
Thank you for this. I feel the same exact way. Every needs programmers but won't respect them. That has been by sentiment at many places I have worked at. At my job, the CTO got on the cover of a magazine that involved tech in government for a mobile app I was hired to design an implement for. The best part is that he had no real hand in the design or implementation of the app nor ever wrote a single line of code in his life. This isn't the first job that this happened. Basically, it all comes down to politics and the problem is mixing programming with it.
Lets think of a restaurant... Who do you give the credit to for a great meal? Who gets the tip?
The person who set up the restaurant?
The person who created the menu?
The person who sourced the raw ingredients?
The person who prepared the raw ingredients into components of a dish?
The person who plated up your food?
The person who oversaw the preparation in the kitchen?
The person who brought the food to your table?
The person who took your order?
In the USA, and many other countries, you tip the table staff. Sometimes the kitchen staff get a cut, but generally, they just get paid to execute on the owner's & head chef's vision. If the restaurant won an award, would it go to the line chef who prepared the dish that the reviewer/judge ate? Hell no.
It's not a programmer issue. Credit is about who had the vision and took the risk. The people other than the founders that get the credit are usually the sales staff. Very occasionally the customer is impressed and wants to credit the head of the delivery team, but not often... leaving a tiny bit of credit to be dished out between everyone else.
As a former CTO, I take some offense to the classification. Granted I am not your average CTO and at all the companies that I was a CTO for I had code that I wrote in production, I was the type of person that worked in the trenches with my guys. If an all nighter had to be pulled because of somebodies screw up, I made sure that the board knew that my guys where cleaning up the mess and the heros of the day. Not in a blame game or glory seeking way but I felt I owed it to my team to ensure the record was straight. I was also the first one to stay all night and the last one to leave in those circumstances. As such my guys where always treated with respect and held out as company assets. What I was good at was translating the business goals into actionable plans for the technical team. Helping technical people see other departments as bringing in the money helps to keep everybody's eye on the prize. The best way to align technical people is to bring them closer to the business and help them "feel" the growth. When they do, they begin to understand the importance of the business. Conversely, making business people understand that technical personnel must have pride of ownership and must be allowed to craft their product helps the business to see that stable and well crafted solutions are long term strategies that work. Just like programmers there are a lot of bad MBA'ed CTO's but for every 100 of them, their is a guy like me that truly understands both sides of the story and can bring them together and that is the true job of a CTO to align the vision of the business with a technical strategy.
I don't think trying to get on the cover of a magazine takes anything away from what you said. They're not incompatible. If you're a C-level officer, you are part of the face of the company. I'm just pointing out to the OP, that getting on the cover of a magazine likely was part of his CTO's job, so at least that person was doing part of their job.
I think we often easily attribute these problems to the "management" types but do start-ups with founders as programmers treat other programmers any better?
That is a good question. I've seen it go both ways.
Part of being a defeated tribe is that you have defectors: young programmers who are tapped for management and change colors. Those are the worst, because they tend to view their older colleagues who are "still programming" as losers and it shows. It may not be politically correct, but I've found the term "Uncle Tom Engineer" to be useful in some cases.
On the other hand, there are true-blue engineers who set up amazing companies, like HP before it was hijacked by MBA types (culminating in the Fiorina disaster) and Valve.
There are also non-engineers who Get It and start great companies. So there's probably a correlation between engineering experience and respect for the craft, but it's not a hard-line distinction.
The problem isn't "businessmen" so much as the attitude that comes with a lot of those folks. It's not what they do that pisses me off-- that's a necessary function-- but the paternalistic management nonsense.
Just a couple of days ago I barely managed not to answer to one of my superiors' emails with something along the lines of "hey, let's quit with this paternalistic BS, it doesn't really matter who's saying what around the office or at what hour people come in at the office, it only matters if we're doing our job properly which means bringing more money in compared to what goes out". I then remembered than I'm not a manager, but only a programmer, and that I shouldn't worry about this sort of stuff.
Doctors have to go to medical school and then have a residency and the AMA closely controls the total supply of physicians. Lawyers have to go to an accredited school and then pass the bar (in some states the school part is optional).
A computer science degree is the closest thing the tribe of programmers has to a professional certification. There are some organizations that have attempted to bring the tribe together but none have gained serious tracking. (asp-software.org, aitp.org, computer.org)
What's most interesting to me is that doctors and lawyers actually have legal protection. In most places it is illegal to perform medical services without a license or offer legal advice without a law degree. There is no equivalent protection for programmers. Imagine a world where an individual could be fined for writing a business app without being a certified developer. Suddenly the value of certified programmers would jump up quickly and those who couldn't meet the standards would be quickly drummed out of professional development.
Those licenses are not to protect the Doctors/Lawyers, they are to protect their clients.
Having such a system for programmers would make no since and would make the situation much worse. A college degree means a lot but you can be a very good/success programmer without one.
I would NEVER go to a doctor/lawyer who did not have the correct credentials to practice. As such you "practice" medicine and you "practice" law. Do you practice programming(in the same sense?), no you don't.
> Those licenses are not to protect the Doctors/Lawyers, they are to protect their clients.
It goes both ways, like an if-by-whiskey.
If by licenses you mean those draconic practices by which some exclusive guild is allowed to tell me which professions I am allowed to practice in order to keep their supply low and their prices high, then I am against them.
However, if by licenses you mean the protective mechanism by which government prevents uneducated hacks from performing open heart surgery on citizens, then I am for them.
Also worth noting that, at least in some places, lawyers share quite a lot of liability for their work - direct personal liability or as part of a partnership (and limited liability partnerships might not protect you as much as you would think).
If a lawyer screws up badly enough then they can have their credentials taken away and they can't do their job anymore - that's arguably the main difference between a professional and an academic qualification.
The #1 defining trait of a profession is that there are ethical obligations that supersede managerial authority. You don't have the "I was following orders" excuse if you do something wrong or unethical. You answer to the profession, not a manager. At least, that's the theory. In practice, there's a lot of variation. Law is technically a profession, but "white-shoe" law (aka biglaw) is pretty horrid, culturally speaking.
This is a benefit, in the sense that the profession goes out of its way to prevent you from being beholden to a single boss, but a drawback in the sense that if you do screw up in a bad way (or get unlucky) you can find yourself in a really bad situation when you lose your license.
I don't know how well that can be applied to technology where there are so many moving parts that 100% bug-free software is impossible.
Altough I agree with you, I still definitely think we are heading towards a future where in order for your code to ship, you will need to be a certified programmer, or have it validated by a certified programmer, at least in some industries.
Do you think it is safe, for say, a non certified (read: a guy with no CS degree) programmer to design and code software that runs on an MRI machine ? Or the one which controls airplaines ?
If airplaines start crashing because of a software fault, do you think we could and should blame the programmer for not having made the required tests ?
Software _development_ is a very young discipline, and as such has not yet been regulated. But I believe the day will come where it will.
The solution to this is testing and required design procedure. Comprehensive, detailed, expensive testing, and comprehensive, detailed, and expensive design documentation and documented procedure.
There are currently guidelines for software that goes on medical equipment and airplanes. Airplane software's testing and design procedure gets checked by the FAA. I also know there are comprehensive code coverage requirements. Replacing this with certified programmers means that the programmer WILL be personally liable if there is a fault in the design. I don't think this is a good idea.
What you just described is, put simply, to follow engineering principles. Some people would argue that Software Development is not an engineering discipline but a craftsmanship.
And anyways, it would still be a huge scandal if the FAA allowed someone, (or a team of someones) without a degree in CS, to check an airplaine's software. Does this need to be regulated as a law, and thus, recognition of the Software Development discipline as a profession ?
The way I understand it, the FAA checks to see if the software design was designed and tested according to documented procedure, which was approved beforehand. The procedure must follow some published guidelines, mainly [DO-178B](http://en.wikipedia.org/wiki/DO-178B). The FAA person probably doesn't need a CS degree to check this. They just need to be competent enough to review the documents generated during the DO-178B process, and see that they did what they said they did. The civil liability I think would come in if a company forged their documentation. And if the documentation is not good, then the software won't get approved by the FAA audit. At least that's how it's supposed to work.
Edit: There are third party or FAA technical experts involved, so I guess your point still stands. But I don't think certification can replace this kind of following engineering procedure. And yes, I consider software engineering for safety-critical applications an engineering discipline.
This is a bad idea. Those certifications are meant to be there to protect the consumers, not the practitioners. Some engineering disciplines need professional certifications because of liability reasons, and some don't. I'm an electrical engineer working in a hardware design position in a safety-critical field, and I don't have a professional certification. I'm just competent, and we do an insane amount of testing.
One of the best things about programming is its low barrier to entry. Requirements for being a successful programmer: be good at programming. Having certifications isn't necessarily bad, but I feel that requiring certifications on a legal level the same way law and medicine are required is a horrible idea.
What we need is a sort of postmodern professional structure. We can't keep people out of programming itself. Everyone should be exposed to the concepts. However, we need to inject the respect accorded a profession into software development.
I would agree with you to a certain extent. However I think with how popular startups are becoming and with the number of people wanting to become a "coder"...(which I will shamelessly include myself as trying to become.) were starting to see a shift towards respecting the ability of programmers more and more.
People are slowly starting to realize that "oh crap, these guys can turn the switch off on my "thing" if they wanted to." So people are starting to wake up a little bit.
Ugh. Have some perspective and be grateful for the situation you're in. Seriously. You're sitting at a desk and have enough spare time to post your feelings here. Plenty of people all over the world "add value," sometimes for 14 hrs/day, while making far less than $100,000/year and no benefits. Work is just work. You're in a privileged position and have plenty of leverage to make it better.
Well said! Lets face it. Nobody wants to work for others and live by (obey) others orders.
The real problem is if one quits programming a bunch of new fresh minds will 'toil' the way you and I did. And the world moves on. It's all about the mind-set.
Nobody took the power from you, you gave it away. There was no defeat because there was no battle.
I've never had to endure any of those things because when they arose, I quit the job. And when they arose again in the next job, I quit employment, and contracted. And when (different) problems appeared with clients, I quit consulting forever and built a hugely revenue-positive product business where I am the reigning monarch and believe me, life is now very, very good.
Nobody can tell me what to do now except the govt and, outside taxes, they really don't give a crap.
If you want power, you have to make it for yourself -- build a business that generates money independent of clients or bosses. One to five big customers (bosses, clients) hold huge power over you -- a thousand small customers hold little power over you. You need to keep em happy, sure, but that's not so hard, because you get to pick your own customers, and you get to choose to keep them happy exactly how you want to. But if one of them's a jerk? Or five of them? Or 100? Tell them to fuck off.
The bottom line is that a person who wants to remain ignorant of the money-making side of business will never hold power. Employment is the opposite of freedom.
(PS — taking investment is just another kind of employment. A kind of debt, really, repaid with control instead of interest.)
I have to agree. Two things have happened here to make me see it:
- Taking on a role with more responsibility, leadership requirements and business knowledge
- Starting my own business where I get to make decisions (with my co-founder)
I see how many times as as developer I've either not cared about decisions that directly affect me. Or maybe I've just rolled over and accepted the things I don't like. It's the nature of (most) developers. Don't stir the pot. Don't dissent. Just get in and get my work done.
Here's the reality. Knowing more about your business makes you a better developer. Knowing how to say no and stand up for yourself makes you a better developer. Knowing how to talk and communicate with your users, your bosses, your co-workers (or anyone really), makes you a better developer (and will improve your work life). Being a strong technical person with strong Business, Marketing or Personal Communication skills makes you unstoppable. This applies to more than technical folk. The more you do - The better you are. Take this advice you might find that the skill you thought you were bad at, or hated, or avoided is actually very rewarding - Difficult, but rewarding.
And finally, to Amy: Thank you for all the work you do on showing people the power that they have. I started a business 5 years ago and have had to sit through the whole "YOU NEED TO GET FUNDED" and "YOU NEED TO GET BOUGHT" that seems so prevalent in the startup ecosystem. Me and my partner did everything ourselves. And now we own a business that makes decent money that goes DIRECTLY TO US.
But when you're overexposed to the opposite line of thinking, it's really easy to get caught up in the "am I doing this wrong?" and questioning yourself. You are one of the few people who puts an emphasis on growing and trusting YOURSELF. I'm very on board with most the things I hear you say because they are the very values that I have held in high esteem, yet was still questioning. So thank you for that.
ps. I also think that 'ahoythere' would've been an awesome username.
"I see how many times as as developer I've either not cared about decisions that directly affect me. Or maybe I've just rolled over and accepted the things I don't like. It's the nature of (most) developers. Don't stir the pot. Don't dissent. Just get in and get my work done."
Exactly. If you live with the attitude of a cog, you'll be treated (and paid!) like a cog. You get what you ask for.
And, thanks for the "thanks." You're welcome. It's always nice to hear that I'm not just pissing into the wind.
Totally true. People will never reach the decision making circle until they learn about the money side. And often, they will not have this opportunity until they quit employment to go freelance, or launch their own company.
And here is the fun part: learning about marketing, business models, commercial relations is not that hard for programmers. It just requires a different mindset. For problem solvers like the average geek, that's just another system to hack.
I have only begun recently on this path, but I find it exhilarating! Making my own decisions, talking directly with the clients and -oh, surprise- getting paid for my work, not for sitting at a desk... This is what developers should do!
"The bottom line is that a person who wants to remain ignorant of the money-making side of business will never hold power. Employment is the opposite of freedom."
As a programmer who has gone the MBA route (will be done in the Fall), I have to say it's been positive for me. Not because I can point to it on my resume and say "look what I have!" or "look what I'm getting!", it's been positive for the following reasons:
a) It's increased my ability to communicate clearly in small and large groups.
b) It's given me great context regarding where IT and programming stand in the overall business model
c) I've met many professionals around the area in all industries
It's contributed very much to my personal and professional growth, and I haven't even finished yet.
But should you just go get it? Only if it's right for you. Know yourself first, and what you want to do with your life. If it fits in, then go for it and it'll be a great experience.
Exactly. If you love what you do, you have a much better chance of being great at it. So switch if you don't feel programming is for you.
Programming experience is still valuable, even if you switch. In my experience, it will make you much better at many related roles in a SW companies, such as project manager, product manager or business analyst, since you'll know what it takes to produce the SW (what's hard, what's easy etc).
I feel like that occasionally. I wish I did some different decisions when I was younger.
I always look with envy at lawyers, sociologist, political science major and other bullshitters. Especially the ones who work for the government No work effort, very little pressure to come with results.
Even product managers or "UX" people...
I know it's arrogant of me to say so, but the more I observe them, the little they seem to work, or if they do work, it comes off as snake oil.
UX guy and former management consultant here. I can tell you the grass is always greener...
As a management consultant I was expected to grind out pointless "decks" (powerpoints) all day long. And all night long? Grind out RFP's for new business (which are usually more decks).
UX designers generally have a higher job satisfaction if they are with the right team. However, these jobs are difficult to get and easy to lose. Many of the UX designers I graduated with from HCI school are now looking into front-end dev, visual design and business strategy. Why? Because UX designers can easily become marginalized, and if all you can do is sketch and put together a few basic wireframes, you can quickly find yourself on the periphery of the team. You should see some of the bored/desperate emails I get from colleagues who either have 1) nothing to do or 2) don't get the respect they 'deserve'.
A lot of the advice I received was similar as written in the article. But I honestly did not know what to run towards. I was utterly directionless. Ultimately,in a brief moment of madness induced bravery, I quit my job without any future prospects. While at home I re-discovered my love for programming as i was working on hobby projects. I responded to yummyfajitas' post on the Who's hiring thread, got the job and my life has been awesome since then. I absolutely heart programming , I keep on trying to learn new stuff and cant think of moving away.
All of this to say, if you feel like this, change your job, join a startup or learn a different language. Not everyone thinks in the same way. You may not be great in one paradigm of languages but that doesn't stop you from loving another programming paradigm.