Hacker News new | past | comments | ask | show | jobs | submit login
What is the best part about being a Software Engineer? (alexkras.com)
191 points by akras14 on April 28, 2016 | hide | past | favorite | 203 comments

I don't develop more than 30% of my time but I love it none-the-less. I'm 62 years old.

I find software architecting, developing, and operational troubleshooting to be fun, requires a holistic view of a problem set, requires creative problem solving and more.

I find development an outlet to create (make) stuff. I work at a university on the east coast of the USA and am on a high performing team that has not lost a member for at least 5 years. We love each others talents and respect each other's abilities.

I expect to work full time till I am at least 67 and hope to be able to work part time till I am ~70.

Edit: 62 years old not 63

That's super! I'm 43, but when I grow up, I want to be just like you.

What languages and technologies do you use?

I ran a few small development shops a long time ago and then went into ecommerce in a bank. Eventually I was a bank compliance advisor (business side) for the bank. No hands on IT and I was miserable. I was good at what I did, remediate systems and processes to make the bank examiners happy but 70+ hr work weeks were killing me. Hence I decided I wanted to get back to web development as the job I am doing now that I grew up. I've been at the University 9.5 years. Almost as long as my longest job.

I run the development shop for backend and the cms and I am the scrum coach for all development work. I am by far the oldest and we joke that I am the resident curmudgeon, but in reality I am a pretty positive person.

I do mostly backend development in the order of priority:

- java 1.8 (love hate) - python (love) - bash (necessary) - php (meh, only as demos for people that don't know how to do something)

We use cloudfront as a cdn and our web is php based. But we have UI developers for 99+% of the pho work.

I wrote a java middleware system 5 years ago that is old and very hard to extend. We are replacing it with spring based apache camel code and routes. Love, love, love apache camel)

Db is Oracle because we have a site license. I occasionally write sql for others that don't know or need to know SQL.

Our CMS is cascade by Hannon Hill. A publish only CMS and we love it. We are 100% in control of all the code that runs in our web. ~140 web sites, ~129 are branded for our university.

Web Servers are RHEL, load balanced by F5 load balancer. Backend XML database is Exist-db (love this as well). Exist-db uses xquery but I don't do any xquery. Apache httpd (love for sites out size of traffic) with Zend Server (love hate but necessary for Oracle connectivity from apache httpd). Yes I could compile our own apache httpd with oracle libraries but that is strongly discouraged by our data center staff.

Of course we use git. HipChat, BitBucket (free private repos for non-profits). I do development on Mac OSX mostly and port. We never have porting problems.

Others use javascript with jquery and angular. No node.js in our shop. SAAS CSS compiler.

I'm sure I'm missing something that that is most of it.

Like I said, full respect. Thanks for such a detailed response.

Been hearing much about eXist but haven't had the courage to get my feet wet. Maybe some time this year. I don't use Oracle, have had all my clients on MS SQL Server (BI Cubes and reports) and they're happy. So am I. Not religious about this anyway. Have been dying to convert some of our consulting wares to pgSQL - soon.

I don't intend to impose my views or perspectives on you or on anyone here (as I'm sure you have your own practical conclusions about what traits are important for developers to keep positive attitudes towards their careers). But after nearly leaving the field twice in the last 10 years I can, with humility, say this:

I am more and more convinced that for a developer to continue retaining "mojo" in the field, and consequently to enjoy his or her work, he/she has to possess at least two traits:

1) Have the courage to try out new languages/frameworks fearlessly. (I am a bit of a coward here.)

2) Be a finisher. If you can complete projects - even if they're small (actually, the smaller the better) - you can always look back and say "I did that. That system they're using there ... I had something to do with it." I know the spouse couldn't care two hoots but it is the stuff that keeps me alive with hope. There's something deeply Marxist about this - I know - but I don't want to philosophise.

I can see you possess both.

You said: "I run the development shop for backend and the cms and I am the scrum coach for all development work. I am by far the oldest and we joke that I am the resident curmudgeon, but in reality I am a pretty positive person."

I can see. :-)

Keep well. (Beer next time on me)

- Edited for clarity

I am humbled by your comments.

> 1) Have the courage to try out new languages/frameworks fearlessly. (I am a bit of a coward here.) > 2) Be a finisher. If you can complete projects - even if they're small (actually, the smaller the better) - you can always look back and say "I did that. That system they're using there ... I had something to do with it." I know the spouse couldn't care two hoots but it is the stuff that keeps me alive with hope. There's something deeply Marxist about this - I know - but I don't want to philosophise.

Agree 100%. Working in the bank (really a credit card bank at the time) taught me so many ways to overcome obstacles and to get the job done. Plus now 11 or 12 years of scrum (agile light) helps. I am a director so I am required to be the face of web development with campus units. Interpersonal skills, collaboration and an understanding of company, working units and individual's culture and how to use that to you advantage helps immensely.

Stay positive, keep a sense of humor.

The best part for me about being an open source web developer is that the capital required to bootstrap yourself into working is as low as $100 or even nothing at all.

A few months ago, I had an idea for a side project that could lead to a lucrative business. I ordered a used Thinkpad with no operating system from eBay, and off I went, developing the same sort of website I do on a $1,500 MacBook at work. If I already had a laptop lying around, I could have just reformatted it and used it without spending a dime.

When I lost my job in the city and had to move back home in 2011, I didn't have a computer except for an old Windows desktop. I pulled it out of storage, formatted the hard drive, installed Linux and Rails, put my resume on Craigslist, and within a week I had signed a contract with a company as a remote developer. I was lugging that desktop around everywhere -- on trips to visit family, to co-working sessions in hotels, to my new employer's office -- looking just as goofy as I wanted to, but didn't care, I was working again.

Edit: I see my post is gaining upvotes quickly. If any open-source project maintainers are reading this, thank you! My story would not have been possible without your time and effort.

When I was at school we had to interview our headmaster, and somebody asked him if he thought his job was difficult. His answer has always stayed with me:

  "Compared to lying on a beach drinking cocktails, it's difficult. But compared to a coal miner, it's ridiculously easy."
Would I rather be a software developer - even one who is building boring CRUD apps - or a coal miner?

I've never mined coal, but I did fly-in/fly-out work at coal mines surveying, and compared to coding it had the following benefits:

  - way better pay (not everywhere pays developers like the US)
  - kept me in shape
  - I slept a lot better during that job
  - satisfaction of jobs completed (no maintenance for topo data)
  - no micromanagment, open plan offices, daily stand-ups
  - predictable, stable working hours
  - etc. etc.
I don't do it now - 10 days out of every 14 is too long for me to stay away from my family - so I guess in the end the bad outweighed the good. But I just want to make the point that it's easy to assume that building boring CRUD apps is the best road to go down if you too quickly dismiss the other paths that can be taken.

You bring up a really interesting point. My partner does both project management and sound tech work. "I love it when the gigs go well, but good or bad, at the end of the night I get paid for the gig, I come home, and I don't ever have to think about it again if I don't want to."

I've never been a coal miner, but I have worked a number of extremely physically demanding jobs, one especially where people died from poor safety conditions and most of everyone called in sick several days a month ( I was complimented sincerely on what a good worker I was because I only called in sick once per month).

any day of that job was much worse than programming when programming on a good day, but programming on a bad day is much worse than any day of that job ever was.

What kind of days were those bad days?

those long bad days trying to fix a bug that you can't figure out and everything just seems bleak and full of despair, back aching from sitting badly at the desk all day trying without hope to fix the problem (because can't pull away just keep going), eyestrain, imposter syndrome - basically being in a bad and unrewarding relationship with your computer.

A bad day at the physical work was just cold, windy, hard work, muscle aches. Luckily I never got injured and I didn't know anyone that died there otherwise I suppose my opinion of the two works might be different. But I've worked other hard physical labor; for example - ditch digging - cold, muddy, and a real workout, less strenuous - washing dishes in a restaurant, bussing tables.

Again - all preferable to programming on a bad day of programming, maybe it's because when programming goes bad I keep thinking about it afterwards, the other work I forget it right away - hell, I don't even really think about it when I'm doing it.

I've never been a coal miner, but there is some sort of satisfaction in working with your hands that you don't quite get being a corporate coder.

There's also the black lung that you don't quite get being a corporate coder.

I think it's very easy for people who aren't working with their hands every day to sit back and talk about the 'satisfaction' you get. You may get that if you go and do it for a day. When you're doing it every day you're destroying your back, knees, your hands end up cut and calloused, and you're exhausted. And the 'satisfaction' probably doesn't make up for the lower pay manual labour jobs typical come with.

> destroying your back, knees, your hands end up cut and calloused

+ your hearing, it can be very noisy in a mine.

I'm from a coal mining region and some of the miners hate the job with passion and curse it every day as they get on the comutter's bus. Others are more indifferent about it and even enjoy some aspects of it (mostly camraderie). I'm pretty sure the majority of them would switch for ANY office job that pays the same.

My general thoughts on the "I'm unhappy doing CRUD" sentiments is that people generally tend to get bored with what they're doing and the dream of one day doing something else, something more fulfilling, relieves the pain somewhat. Funnily, for pretty much all the alternative careers that devs talk about, there are internet threads where people working those jobs are discussing how to retrain as a software developer.

Plus if you've made $150-250k for the past 8-10 years, it's easy to have that retirement buffer and that money in the bank and think that working in a mine might be "satisfying" for six months even if you did it for $15k.

It's totally different when you can barely afford your mortgage, you're in debt, and you have no chance of getting a better job.

I worked a manual labor job (installing industrial epoxy flooring). I distinctly remember being too tired to go to a friend's barbecue on a Friday after working a job 9 days straight, and dust boogers can surely not be a healthy indicator. I'm not sure it's something I'd want to do for years on end (I worked it as a summer job during college), but there's something to be said about the satisfaction. There's less stress involved on a day to day basis. Nearly every day you go home tired, but satisfied you did something tangible. Only very rarely did things go wrong to the point where little or negative progress was made on a project- which I don't find to be the case in software. Seeing a 60,000sqft floor I'd help complete turn out perfect after sweating for a week is comparable to solving a particularly vexing bug, only more tangible. And I made about the same amount as a union laborer as I did in my first developer job.

Sure, I was thinking more along the lines of other, less life threatening "working with hands" type work. I knew an IT admin who used to be a lumberjack and the guy missed being in the wilderness for months at a time.

Don't forget about the threats of cave ins and poisonous gas...

Whilst nowhere near as bad as black lung, RSI and lower back pain caused by sitting all day are real things. Programming isn't without its own physical risks.

That's why I enjoy doing small-medium landscaping projects and yard work. You start with something in a substandard state (yard, grass, leaves, snow, etc) and you end with something looking much nicer, all within the span of a couple hours.

Compare that to releasing code 4 times a year. The stuff I'm working on now won't be in production until September.

That's too simplistic of a view. Physical work is hard on your body, but mind work is equally hard and you cannot brute force most of it. The mind needs to process complicated problems asynchronously, while you let it rest by taking a walk or doing house cleaning, but physical work needs no such thing, as long as your body condition is sufficient.

Have you ever tried a hard, manual labour job?

Yes, but not as a daily activity for long stretches (months), so my view may be incomplete.

EDIT: Not as a job, but working for weeks, daily on a personal project.

There is absolutely no comparison between the person who has to work a manual labor job breaking their body down because it's the only way they can earn a living and the guy doing 2-3 weeks of physical labor because they have a personal project they want to finish.

I mean I can't even put into words how ridiculous this comment is.

Have you worked an office job for years on end? They aren't exactly easy on your body, or soul, either. And trades have "executive" levels as well.

I'd rather be the Plumber for a skyscraper development than the accountant for it...

Yes I have. And easy is relative. Of course my back is a little sore some days, and I've worried about carpal tunnel/RSI in the past. But if you're looking at manual labor (it's called "back breaking" for a reason), there's really no comparison.

Life is hard no matter what. We don't need to look at people who have it objectively much harder than us and say "but these florescent lights give me a headache" to try and make our lives seem harder than they are, just like we don't need to look at people who have it objectively much easier than us and say "they have so much money and free time they couldn't possibly understand how hard I have it."

Maybe a coal miner is the wrong example, but I think you can think of plenty of jobs you would not want. I certainly would not want to go back to working in a call center like I did in my previous life, even if the pay were the same or slightly better.

If I could make the same money as a barista, I would do it, while continuing to program on my own as a hobby.

These days it's mind numbing Java CRUD services all day long, then I work on my own stuff (in any language but Java) at night.

Well, I can't argue with your opinion, but I certainly would not.

My job is definitely easier than a 1930s immigrant coal miner's. Is it easier than a 2016 coal miner's? Probably. Maybe. Is it easier than a furniture mover's? No, but it pays a lot more. Is it easier than a 1970s steelworker's? Certainly not, and it actually pays less.

Actually, you get payed far more. A steelworker in 1975 made on average $7.11.[1] This is about $31.47 in 2016 dollars. Not bad at all, but I'm still guessing you make more.

[1] http://articles.mcall.com/1985-07-19/news/2489404_1_steel-in...

I mean total compensation. My father made approximately $30,000 a year in wages in 1976. You have to remember that there was overtime pay. He also got high quality free health care, lots of vacation, 100% pension, and lots of other fringe benefits.

I estimate he made probably close to $200k, in 2016 dollars. And, he wasn't even a 'lead'. In total compensation, he made more than I do. And, IIRC, CPI inflation calculations don't account for home inflation, and we all know that housing costs as a portion of total household spending was much, much less than it is today.

TIL I make less than a steelwork in 1975.

Really? 31.47 * 52 (weeks) * 5 (days a week) * 24 (hours a day) = $196,372. In some place other than San Francisco (so pretty much guaranteed lower cost of living). Plus benefits, overtime, much lower likelihood of losing one's job, a pension...

24 hours a day 5 days a week is a pretty tough schedule.

What the fuck kind of job do you work for 24 hours a day? A third of that or $65457 is a much more realistic estimate, which is peanuts for a software developer.

Whoops, yeah, I shouldn't post while zoning out on a teleconf.

Who works 24 hours a day? Also most work 40 weeks per year iirc.

Here are the real numbers to show you why your comment was (rightfully) downvoted:

31.47 * 50 wks (2wks vaca) * 5 * 8 (a work day) = $62,940

Every time I've dealt with furniture movers I've noticed that they work incredibly hard and I'm glad I don't have to do that for a living (my back would disintegrate).

A few companies ago I interviewed an ex-coalminer for an Oracle DBA job. He was good too. My hiring recommendation was overridden by a senior manager who was a snob and an asshole, for the entirely irrelevant reason IIRC of no degree.

> Would I rather be a software developer - even one who is building boring CRUD apps - or a coal miner?

I've done manual labor. I feel when I did carpentry it was more rewarding than software development.

Perhaps this is true if you 'can relocate to SF' + is american/won the h1b lottery, end up working in a company with 6 hours/day policies, 20% time and plenty of money to burn.

All other mortals are in a way or another struggling. Pulling all nighters(because it's expected), having long periods of stress + burnout.

The advantages I see are that the money is good and that people(me included) love programming. Having a job doing something you love is definitely a blessing. The biggest of them.

I feel like people overstate just how massive the divide between SF unicorns and everywhere else is. While I admit I'm not on the 100k+ salaries of the big five, I'm definitely not struggling and pulling all nighters - I work 8 hours a day, 90% of the time from home, with the odd evening of working on something if I'm particularly into it.

For that I get paid a decent salary for my area, get to do a job I find interesting, and without having to live in London.

As a comp sci student up north, are the salaries in London worth the hassle of living in London? Don't get me wrong I like visiting London, but I wouldn't want to live there unless the incentive is too good to pass up.

I lived and worked in London for a number of years, and in the end, no amount of extra salary was worth the packed commute, sky-high rent, bad air quality, and (controversial...) the bad manners of people in general. Moved back to Scotland and my quality of life now is so much better. I don't know how much money I would have needed to make to make up for all the negatives, but personally it was way above what a developer could realistically achieve. Very subjective I guess.

If you see living in London as a hassle, then you should stay up North. I would hazard a guess and suggest that the salary would have to be at least double what you could earn up there to make it worthwhile. Have a look at Scotland, plenty of tech companies there and it's a lovely place to live.

100% this. Some people simply do not like London - they stand atop the tube station at Oxford Circus and look at the succession and repetition of massed humanity (to quote Waugh) and think, "How unpleasant." Even if you're making a six figure salary, if you find that many people - and everything else that goes hand-in-hand with that - unpleasant, it will grind you down; that salary won't cheer you up every time you're having a horrible, hot, sweaty commute, or you're staring in misery at your lack of garden, or wishing that the other tenants in your building would stop stealing your copy of The Economist.

I personally like London very much, but eight years of it (and now just a day every two or three weeks) was plenty for me.

I grew up in a small town in Scotland, and my mother was always going on about how terrible London was. So much so in fact that when I finished university I was looking for a job anywhere in the world except for London (even had a telephone interview with a company in Palo Alto before I knew where that was). But as things happened I eventually ended up in London. And I do think that moving here was one of the best things I've done.

My mother had of course never lived in London, just visited once as a tourist. And if you are a tourist you are likely to end up in the busiest, noisiest, smelliest and most expensive parts. But once you live here for a while, and realised how enormous it is, and how many completely different experiences you can have and how many different things you can make of it, there really is something for just about everyone. And now I've settled in a relatively quiet and green area, even my mother is willing to concede that maybe London might have some nice parts.

I love London, and I love my commute (15 minutes on a scooter). If the UK didn't have London, I'd move to another country. Living in London is the major draw of the UK in my eyes.

It's not easy to get a 6 figure GBP salary outside a bank or contracting (usually with a bank), but north of 50K is very doable, and there are a lot opportunities. Rent / mortgage is a low fraction of income especially when your significant other is also making a similar salary (it's about 20% for myself and GF).

They are barely worth the hassle of relocating from Poland to London. High rent eats up almost all of the gain.

How's that? You net maybe 2-2.5k pounds per month contracting in Warsaw, and 8k for an equivalent job in London. Rent and commute in London is maybe 1k more than in Warsaw.

I get 1500 pounds net per month in Warsaw with 2 years of experience. For London (according to numbeo.com) I would have to make at least 4500 pounds net to have comparable lifestyle. That's 80k pounds per year before taxes - AFAIK not feasible for someone with my experience.

Right, London starts making sense only once you can get into senior roles.

Its not just the salaries, its the opportunities.

There are just so many tech jobs available in London. And once you have a job, you have much more flexibility to change jobs without having to move home. This might not be a consideration when you are younger and more flexible in terms of location, but I do know some people who have settled in other parts of the UK who now have families and feel stuck with their current employer due to lack of other opportunities in their area.

And it isn't just the jobs, but also the developer communities. If you live in Shoreditch, for example, you could go to a tech meetup (many with free beer and pizza) within walking distance of home pretty much every night of the week if you really wanted to.

I looked at relocating from London back to Scotland many years ago, and was perfectly reconciled to halving my salary given cost of living and quality of life considerations, but it was simply the relative lack of opportunities that was the main issue in my case.

I respect the idea of a vibrant job market but free pizza seven nights a week sounds a bit like hell.

If you want to move, but don't fancy London, come to Bristol. There's a great (and growing) tech scene here, and a wonderful developer community (tech related meetup events virtually every evening, and people know and are friendly to each other).

Of course if you're happy where you are, then stay there. Tis just another option you may not have considered.

After I graduated I moved there (from the South West), and yes I would say it's worth it. Although I left London after three years (it's not really my thing either), the experience and networking I gained have paid off. I have a friend who stayed in his home town, he is doing similar work to me, and gets paid around 60% what I get - which is a good wage for that area. Even without the salary, I feel that I've had the opportunity to work in more interesting jobs as well.

You kind of have to love living in London just for the sake of it. I'd want to live and work here, no matter what job I was doing.

That said the average salary isn't worth it at all, but the top end is. You can't really get 6-figures outside of London, but there's plenty of banks that pay that in London.

Why does it seem everyone in the UK that doesn't live in London dreads it? Is it just the high rent? London is the only part of the UK I'd seriously consider moving to. Everywhere else reminds me of something out of a Radiohead song.

In finance, probably. Start ups and other industry, probably not so much.

If you want to stay up North, Manchester is a good place to live.

Silicon Valley may be a bit special or even a bit of an outlier in the way engineers are compensated and cared for (or pampered as it might seem at times) but as the saying goes: The grass is always greener on the other side.

Plenty of money to burn in one of the most expensive places in the world for many people probably means just that: A lot of money earned but nothing to show for after years of work.

Compared to that you can make a decent living as an engineer almost anywhere in the world and not blow away all your hard-earned money at the same time.

Then, there are almost certainly Silicon Valley companies where you face stress, burnout and dysfunctional management just as you would in your run-of-the-mill enterprise company that merely treats developers as fungible grunt workers.

The thing that many engineers - perhaps more so outside Silicon Valley - don't seem to get is that they don't have to put up with that kind of abrasive behaviour. That's the most important privilege that comes with this profession nowadays: You basically don't have to struggle to find a way to make a decent amount of money as much as other people do.

If your work environment is a Dilbertesque nightmare you don't have to just endure that until you retire (or drop dead due to stress, whichever happens first ...). Opportunities are a plenty, not just in Silicon Valley but almost everywhere today!

In my mind, there are three really standout things about being a software engineer:

1. The multitude of small wins that you get throughout the day as you solve problem after problem, all from the comfort of your chair while you drink coffee and listen to music.

2. Creating something from nothing, not unique to software engineering but it is super satisfying to see something that didn't exist before start to form in front of you.

3. Whenever I see some one do data entry or some other laborious task, that I can automate in under 15 minutes, it makes you appreciate the fact that I know how to solve this problem in a more efficient way. People dismiss this because they don't understand that it takes me 15 minutes to write a program that inserts 1 row or 1 million rows, the work stays the same, this is not true for manual labour.

Good post! I completely agree that programming is very creative. Fred Brooks said it really well in "The Mythical Man-Month" I think:

The delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of imagination. Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself.

Those are some rose-colored glasses. I could easily make a list of the best things about being in the hospital, too. I'd estimate that my 18 years in software development have been about 25% good, 25% tolerable, and 50% team/boss-induced inhumane mental torture.

The one thing I can't argue with is the money. Everything else has been highly volatile.

Every time I read things like that I wonder if I've just been lucky or if there is something 'special' about the US. I've spent 10+ years working at companies of all shapes and sizes in Norway and Sweden, and with the exception of one 12 month stretch (working for an American ironically enough) all my bosses have been fine-to-great, and I've never had a real clash with any co-workers. And even that terrible American boss I had wasn't "inhumane mental torture".

Me too. I have over 15 years of experience both as an independent contractor and employee (roughly half and half) and have only once worked an 60+ hr week. And have always had bosses/clients that valued my input and my efforts.

Dumb luck on my part? I don't know.

It's possible. It seems a lot of businesses I've worked for in the US really just don't have their shit together, or they have some weird "business fear" or paranoia that really impacts their employees in a bad way.

It says more about you than your bosses ;)

In my over 10 years as commercial programmer I never had bad boss or torturous team members (apart from one angry inept guy who asked way too many basic questions when he was expected to pull his own weight and didn't last long).

That might be atypical because I spent more than half of my time freelancing which gives you great freedom in steering clear of harmful people and confidence to leave any employment when it stops being benign.

I know it sucks, but as a software developer, at least in the Bay Area, you needn't suffer more than a few honest months before jumping ship if it'll make you happier to get out. Then again, I've also had the worst position of my life turn into the best by sticking it out until our team was properly laid off internally.

How is that different to the generic employee experience? Most people don't enjoy their jobs 100%, or even close to that.

rose colored glasses was precisely the point

I think not actually having a boss and being picky about who to hire or work with turns it to 75% good and 25% tolerable for me over a period of 25 years prof software dev.

Try doing some work in IT: I feel the management problems are usually the same (if not worse) and the pay is half if you're lucky ;)

I think "CRUD" applications are getting an undeserved bad rap.

There's always interesting challenges involved, which sadly gets dismissed as "business logic".

If CRUD apps were really so brainless, there would have been a race-to-the-bottom plethora of platforms/tools by now that allow domain experts to create their own applications.

Another way to look at is that CRUD apps put food on the table for you guys. Be grateful!

CRUD applications are developed brainlessly. They're more challenging than it seems.

It's interesting that people develop CRUD applications in garbage-collected languages because manual memory management is a pain, but they'll gladly expose manual data management to the end user without worrying about analogous data bugs.

If data bugs are important, you need your data management system to have some qualities of a garbage collection system (tracing, reference counting) or it needs to be self-repairing (fill in missing data on demand). This is actually a challenging problem, assuming your data is important. This is why cache invalidation is one of the Two Hard Things in programming according to Martin Fowler.

Interesting. Would love to learn more about these kinds of ideas. Is this something you've been kicking around in your own mind? Or has someone put a more formal framework around these concepts? Where can I read more about it?


These are mostly my ideas (not that there are any truly new ideas), but they are more-or-less the result of trying to write idempotent services. That is, making sure the same request always returns the same response (modulo incremented sequences). Analogizing data issues to memory management is very useful to software developers that haven't been beat up by data availability and consistency issues in the past.

It's also useful to study functional programming concepts, especially data immutability and data structures that work within that limitation, to identify possible design patterns for organizing things that themselves don't change.

For more inspiration, learn about the plumbing of git if you haven't already. The fact that commits never change buys git all sorts of things.

How do I model this in a database? I treat (table, sequence_id) pairs like I would memory addresses (or git objects). And I try to design append-only tables as much as possible. No UPDATE queries. Only INSERT (malloc) and DELETE (free). There are a lot of nice benefits here, including the ability to shard based on the age of data, being able to aggressively cache partial results and recalculate only when things change, etc.

To that end, most data is best modeled as a time series if data consistency is an issue (and it is if you need to scale). There are exceptions for axiomatically true things, like mathematical calculations, but for the most part things like "how many users like sandwiches" change depending on when you ask them. So the right question is "how many users like sandwiches as of 11:32:23 today?". Or maybe "how many users liked sandwiches when you ran calculation job 432342?" Then you can collate timestamps or sequence IDs to see if some data is stale, if unused data can be cleaned up, etc.

Thanks! that's a remarkably insightful way to look at it.

Putting food on the table is still insulting it.

I love CRUD apps. I especially love CRUD apps that are so simple that end users love using the app. And the best part about such projects/apps? The data that you collect over the months and years. With properly designed data models, the accumulated data for analytics and interactive feedback is worth gold. Then let's see who calls it CRUD anymore.

CRUD apps are 90% brainless. The only challenge not solved by phpMyAdmin or others alike is UI and nice connections between the data. There were already attempts at generating this 90% just to decorate with UI and additional logic, but I feel it will take some time to do it well. People got burned by GWT and other backend + frontend solutions.

Also "CRUD apps put food on the table for you guys. Be grateful!" is a really broken way of thinking. Salary after a certain point doesn't increase happiness that much [1] so there is no good reason to work on CRUD apps if one doesn't like that and can cover their needs otherwise.

[1] http://content.time.com/time/magazine/article/0,9171,2019628...

Yet here we are, many of us do in fact work on what could be called "CRUD" apps but no one is actually forced to do it.

When you say "90% brainless" you're neglecting that fact that there are arbitrarily complex rules/requirements behind each of the letters in the acronym "CRUD". Moreover UI and "nice connections between the data" are incredibly rich problems especially when you consider scale, market-- and let's not forget the fact that the fruit of this labor has to make money at some point.

> so there is no good reason to work on CRUD apps if one doesn't like that and can cover their needs otherwise.

Early retirement.

> People got burned by GWT [...]

What do you mean?

Back in the day, there were few javascript libraries and none of them could handle differences between browsers consistently. This was when people had to "roll their own" javascript, explicitly use xmlhttprequest (ajax) and web development was a pain in the ass.

People will laugh when I say this now, but for a time GWT was seen as an AWESOME alternative. The proposition that you could just write java and just have GWT shit out html and javascript for you was incredibly compelling.

... until you started using it!

> .. until you started using it!

I've been building stuff using GWT for the past 5 years, so I'm either doing it wrong or I'm completely missing something.

So, what's wrong with GWT?

We have a large GWT code base, although others here work on it more than I do.

Problems that seem to get mentioned a lot:

1. Difficult to develop or debug without custom IDE plug ins. With Google cutting back on their investment, not clear how well those plug ins will be maintained in the future.

2. Awkward to work with Javascript libraries, at least compared to all Javascript development.

3. Sometimes hard to predict exactly what Javascript will be emitted for specific Java code.

4. Remembering the rules for what Java code can or cannot be compiled by the GWT compiler.

5. A lot of indirection. The event model has definite benefits, but it also seems to make it very hard to figure out what the program will do by just navigating the code.

6. Difficult to find developers willing and able to work on a GWT code base.

> 1. Difficult to develop or debug without custom IDE plug ins. With Google cutting back on their investment, not clear how well those plug ins will be maintained in the future.

Interesting, I'm just using IntelliJ IDEA‎ and their GWT plugin.

What are they using?

> 2. Awkward to work with Javascript libraries, at least compared to all Javascript development.

Fair enough, it does take some getting used to it.

> 3. Sometimes hard to predict exactly what Javascript will be emitted for specific Java code.

I'm not sure why this matters?

I thought that's the idea when you add another abstraction layer.

> 4. Remembering the rules for what Java code can or cannot be compiled by the GWT compiler.

Oh I think I get it now, they haven't migrated to Super Dev Mode yet.

That way it no longer requires a browser plugin (the old devmode), and the code is just JS + sourcemaps.

And if you use code that can't be compiled, you know straight away, not just when doing a production compile.

> 5. A lot of indirection. The event model has definite benefits, but it also seems to make it very hard to figure out what the program will do by just navigating the code.

I don't agree with this, but I'm probably biased as a Java guy.

> 6. Difficult to find developers willing and able to work on a GWT code base.

I'm available :-P

But being serious, thank you for the write-up, you do have some good points.

There's nothing "wrong" with GWT itself and it served a purpose, but now that javascript/web tooling is sooo much better than 2006, GWT is less compelling.

Last update was when, 2014?

> GWT is less compelling.

Last try :-)


> Last update was when, 2014?


Well said. Furthermore aren't most apps at the core actual CRUD apps? Surely, if we remove all those layers of abstraction that make an app feel pleasant to use, there won't be much remaining that distinguishes it from those CRUD apps. Isn't that the actual challenge?

- The feeling that everything "new" is something that essentially already exists but that you now need to relearn, because it's different in the most subtle and annoying ways

- The knowledge that there is often no physical, tangible output to your work (as XKCD put it, you press buttons to make a pattern of lights change until it's "correct")

- The damage done to your body from sitting at a desk for most hours of the day

- The knowledge that, in some areas of some countries, billions of dollars are invested in what are essentially clones of existing "social" tools that while promising to connect us actually manage to isolate us, and that the whole concept of "value" seems a bit screwed when you focus on these examples

Oops! Sorry, I thought the article was "worst part about being a Software Engineer". Best bits?

- I get to browse HN from my desk while my code is compiling

That article is here:


Referenced from this article.

Thanks for the link. A lot of the software engineer points in that article seem to be focused at the level of writing and maintaining code, but zooming out gives you the chance to look at the nature of a software development job.

I really enjoy the level of writing and maintaining code. I really enjoy solving problems that very few people could solve. I don't really like the stuff that is produced and used that people get paid for...

I write software in-house for a company that does other things. The company has a strategy of bespoke software rather than using the industry standard software in order to get a competitive advantage (i.e. we can do things our competitors can't).

That means I get to not only work with bright developers but other bright people doing other jobs, learn about their jobs, help make their jobs easier and then move on to another area. Very few jobs offer you the ability to regularly switch the area you work in. It used to be claimed that a good manager could manage anything, I'd suggest that a good developer can design software for (almost) any industry.

The best part about being SE are:

1) Iteration: We get to practice our stuff on real entities (language, OS, databases, etc). Do architects get to "practice" actual work at their home? Do new doctors get to try experimental surgeries? Do amateur civil engineers get to build those iconic bridges? They can do computer simulation ... but it is actually a software.

2) Hackathon: Can't imagine this happening in say medical field, mechanical engineering, law etc. Software Industry is one of few industries where this can be done.

3) Changing the world quietly: Many in my relatives are not programmers. It is hard to explain to them in what ways software is changing the world.

4) Open source: Imagine Coca Cola sharing its secret recipe. It won't but we as SE get to learn from open source projects. Now there is a cultural aspect to this but the point is that we as SE can experience it more than other professions.

1) Civil engineers and architects can design any bridge they want (though not build it). True, SEs can actually "build" any software they want, but without users it can be hard to tell how good it is.

2) What's the medical / engineering / legal equivalent of a hackathon that those professions aren't doing? Doctors and lawyers can always choose an interesting or deserving client (possibly pro bono), or do a research project.

3) If it's hard to explain, is it possible software isn't changing the world all that much?

4) Imagine Google sharing its Search code. It won't, but as lawyers get to learn from the best lawyers in any area of the law by reading their briefs and watching their trials (all public).

adding to 1) - no real responsibility for bugs :)

apart from few very specialized areas, you can do harm with bug but not harm/kill anybody. and we all do bugs, don't we

> apart from few very specialized areas, you can do harm with bug but not harm/kill anybody

I'd still say that more bugs can kill people than you would expect. Many seemingly harmless bugs can be used (maybe chained together) to extract personal information out of systems, which is then used to prosecute people, or to justify putting them on a death list.

> and we all do bugs, don't we

Yes, sadly.

The author has less than 5 years in the industry. He is still in his engineering honeymoon. In 5 more years ask him how it is going.

5 years seems like enough time

Working at MacDonalds for 1 month must be awfull

I worked in a McDonalds for six months. The money was rubbish, but that aside, I quite enjoyed it. There's a sense of camraderie in that kind of job that you don't get in more well paying jobs, it's easy to be social with your co-workers, and actually, I kind of enjoyed making burgers.

None of those things make up for the giant differential in income, and predictability of hours though. And McDonalds does lack the occasional super interesting problem you get in IT - but day to day the actual job wasn't a lot worse.

What's wrong with working at McDonald's? I worked there for a few years and I mostly enjoyed it, the only problem was the low pay. The restaurant I worked at was very well managed so we operated like a well oiled machine and our customers were happy.

But I don't believe myself to be above any job.

There are many positions at McDonalds.

And there isn't one that I'd want.

What about being hired at CTO and tasked to improve the tech experience for all their stores? From connected services and employee efficiency due to better tech for making some of the meals, etc.

I really wouldn't want that job. I don't believe in the company and wouldn't want to be associated with them or the way they do business. In my view they have a negative effect on communities where I live.

They've done a very good job at that I have to say. I do not like touchscreens though, too many germs.

I really appreciate this article. It feels like envy has become a major driver over the last few years in the US--it's obviously always been around, but now it feels like both an obsession and something that is broadly socially acceptable to indulge in.

Thinking about the good and what to be grateful for sounds like a much better recipe for happiness than things like the share-my-salary movement. (I'm not opposed to the latter. It may result in modest comp bumps but I doubt it leads to lasting happiness bumps).

I love being tech lead or team lead or project manager or whatever you want to call the mid level just above software dev. I feel I can have more impact in that area, meetings aren't bothering me too much yet (after a little over 3 years), and most of the problems can be circumvented by being smart, just as in software dev.

Think about the scope problem. You never have enough resources to achieve all the goals the customer/boss/group of people who only go from meeting to meeting wants. Yet by asking smart questions you can actually figure out what is most important to them (even if they don't know) and then decide based on what you want, what they want and what your team wants the best path to go on.

And then some of your devs try to be smart and also reprioritize based on what they think. But for some reason that's making it more fun not less. A reasonably smart dev is a much better stubborn goat than a compiler who doesn't want to understand your code, because he gets stubborn on much more reasonable ground and sometimes surprises you by being a lot smarter than you are.

I dunno, you get to call your compiler all sorts of names without violating HR policy.

But he also won't understand if you tell him directly.

Please change your title to "What is the best part about being a Software Engineer in the USA?"

It depress me ;-)

Or in most large cities in Poland....

> yet my income is in top 20% in the US and even better % in the world

"even better" is a gross understatement.

If you're in the top 20% of the US by annual family income, you're literally making more than 99.9% of the world.


You have to compare purchasing power. You dont get $200/month rents, $1 good quality restaurant meals and $3 taxi rides in those places either.

What are your experiences with creative jobs? I'm currently making 1.5 times median income (compared to the rest of the country) as a Java back-end programmer. But it's not the most exciting job because all I'm doing is keeping legacy code alive and implementing new business specifications.

I have thought of going back to my old job as web-developer, doing cool stuff with Node, Angular and all the cool cutting-edge technology. But I'll only earn a median income if I do that.

Or go straight into management and earn 2 to 2.5 times median. But that seems even more boring.

> I have thought of going back to my old job as web-developer, doing cool stuff with Node, Angular and all the cool cutting-edge technology.

I'd take Java over JavaScript any day. These technologies are trendy, but they're definitely not cutting-edge or cool.

I think its more about building new stuff or maintaining legacy code. The first is more interesting than the second.

Become a UI/UX designer.

You could earn twice a programmer's salary.

I couldn't agree more. Choose a job you love, and you'll never work a day in your life!

The best part for me is the money, benefits, the flexible hours, the free food, the mental stimulation, and the occasional expression of creativity.

I don't believe that we change the world, or that we contribute to society any more than the person working behind the counter at a fast food join, the janitor, or other jobs that are so frequently devalued compared to ours. I believe that my job is far less valuable than someone doing social work or a nurse, for instance.

Wrt to the title, I would like to add here that: We can fix bugs, even after something is finished!

Same cannot be said for other professions like Civil Engineering, Doctors etc.

Not if your Mars lander has already crashed.

> No matter how much I have or achieve in life, there is always going to be somebody smarter than me, who has more.

I wish more people understood this concept. I'd even go as far to say it has nothing to do with "somebody smarter than me." Certainly there are people out there not as smart as I who make more and have nicer things. But don't dwell on such comparisons. If you are happy with what you have, that is what matters.

It sounds like you've hit the jackpot. Especially the part about the fun job, I don't think that's that easy to find in the software industry.

I was actually fairly unhappy at my last job, but still was able to enjoy a lot of things from that list.

Also fun can be a relative term, my worst programming gig was more fun than working at Walmart for example.

I think that software engineering, like accounting and lawyering, is useful in a wide variety of domains.

The most interesting/best part of software engineering for me is that you can work across problem spaces fairly easily. (Of course specialization helps in remuneration.)

I recently bought a car from a man who had a stroke. When I explained what I did for a living, he pointed at himself, drummed his fingers in the air like he was typing, and when he hit that Enter key, said, "Yeah!", while doing a pose. He had been both a developer and manager. To forget everything in life except that moment when you really nail some code is inspiring.

Best part? You have to ask me is that, software is built on a beautiful and powerful abstraction, namely turing machine, if you understand the basics, a lot of knowledge are actually transferable, from seemingly very different positions. After all every operation you do is captured by the underlying mechanism, so nothing intimidating if you are willing to dig it up.

For me: new hardware.

There's nothing I like more about this business, than to get code working on a new piece of gear.

It just keeps coming and coming. So fun!

Give it a few years doing the same thing, and it'll probably get boring as hell..

30+ years, still going strong! :)

My biggest satisfaction is the ftuits of automation my software brings, manual labor that used to take hours and prompt to errors due human interaction now is done in seconds with no error marging, saving many work hours to employees so they can go home early and stress free, I almost never get recognition for it, but is worth it.

To me it's like the world's best puzzle game where you never run out of levels, and get paid well for playing. :)

Software engineering is not a flat domain.

I work in a web-based e-commerce outfit with 30+ other SEs who are all really into their work, smart, and committed to doing the Right Thing. This is a good gig.

If I was working on a COBOL app on a mainframe where all the documentation was in German - and I was offered the chance to interview for that gig just a year ago - I doubt I would have as much fun.

As a Ruby/Go/Rust/Python type of developer, I suspect - but can't be certain - my days are more fun than a Java developers. They all seem miserable, anyway.

I don't wear a tie. I don't wear a suit. Nobody cares if I'm a few minutes late in as long as I make stand-up. Nobody cares if I work from home if I feel like it as long as I make core meetings in person.

Would I get that writing J2EE code for a large corporate? Probably not.

Would the people who enjoy those environments enjoy working in a startup? Or a games dev house? Or where I work? Probably not.

I think the best thing about a Software Engineer is we kind find places that fit us culturally more easily than many other industries: medicine, law, most heavy industry, etc. all have a very strong culture that absorbs almost all players in that field.

> Nobody cares if I'm a few minutes late in as long as I make stand-up.

I see this sentiment a lot. What is HN's aversion to showing up to work on time?

I'm pretty sure that a significant portion of programmers are night owls and don't like showing up before 10 AM.

I'm pretty sure that people are different and there are plenty of programmers that are the exact opposite.

Well, it's great that they are not forced to show up late then.

"on time" is a relative term. Assuming you show up, work your time, make your meetings and commitments and be a reasonably accountable person - no one will care what time you start the day whether it is 5am or 10am.

This is just not true.

There are offices that have legitimate reasons for requiring employees to be there at certain times. I've worked in secured locations that were all but inaccessible at 6:01 pm and you needed a good reason to be there after 5. In an environment like that, you can't stroll in at 10:30 because you prefer to sleep in.

A lot of folks on HN seem to have this idea that as long as you show up it shouldn't matter what time you get there, how long your lunch is, when you leave, or how many hours you are working vs. sitting on Facebook, and there should be this pure meritocratic judgment based solely on the quality of your work. Maybe that's ideal, but it's 100% unrealistic. In an office environment, showing up on time, not leaving early, and not taking a two hour lunch should pretty much be the minimum.

There are certainly exceptions as you mention, but if there isn't a good reason then why bother with it? This seems largely within the cultural spirit of programming; if there is tedium/bureaucracy, automate it away or solve it with technology.

For me, it's a necessity. I have fairly severe circadian rhythm problems and getting to work earlier is asking me to be unproductive, depressed and tired.

Certainly there are exceptions to what I said - there's always an exception. But I think the picture painted in your comment is the exception, not the rule.

Once I got to play with long strips of colorful blinking LEDs that I had to drive from our warehousing management system. It was the best few weeks in that job.

Also I don't have to worry about money.

We are all entitled to our own opinions. I would say this is your personal perspective of being a Software Engineer in tech. city(SF).

Creating things, seeing stuff grow while you work on it and seeing other people using it.

Also, making mad bucks while sitting at home.

For me the best part is working from home, without actually working and not being at home.

Getting a well thought out pull request merged with minimal pushback!

Having a magical superpower.

Being creative.

For me, the best part is interviewing for new jobs. You have not lived till you are asked to reverse sort a binary tree, whilst skipping on one leg, having to show you are passionate about the job!

The disappointment was that the actual job did not entail data structures, Algorithms or even skipping! Just CRUD web apps.

This is the worst thing about this sort of "IQ dick-waving contest" culture, to me. I'd be fine with doing ridiculous CS Theory stuff in interviews, if the job was about doing that. I love that stuff, when my mind is geared into the right mode, and a job that required a lot of it would give me the ability to leave my mind geared into that mode. Instead, my mind has downshifted into the CRUD-dev gear from years of disuse, and you're asking me to shift it into high gear for the interview... only to shift back down for the work itself.

I get that every small company wants "the best and the brightest" in order to have more value on the table under acquihiring conditions, but there's really no reason that the person programming Facebook's Android frontend view-controllers needs to know how to answer doctorate-level category-theory questions.

I think it's also counter to good work harmony. Whenever I have worked with or hired the genius/best and brightest, a high proportion of them have difficulty playing nice with others or staying focused on routine work.

You need a couple really crazy smart knowledgable people. And then fill out rest of the team according to their roles and fit.

EDIT: It looks like I replied to the wrong comment and quoted the wrong comment on top of that. No idea what happened.

At some companies, you're right...

I am seeing some stuff right now that blows my mind, complete incompetence getting promoted to executive levels. Unbelievable.

Ahh, William H Whyte. I have lived it but not thought about him for years.

OMG I remember interviewing for a company asking all the right questions and talking about nice tech stacks and whatnot. People were nice too. Then I got an offer and I accepted it. First day in the job I figure that their main tech/language was TCL (of course they never mentioned it in the interviews). Stayed 2 weeks and went off running. The possibility of being stuck with some backwater tech killing off your future prospects is yet another of the freaking traps in this job.

"First day in the job I figure that their main tech/language was TCL (of course they never mentioned it in the interviews)."

And you've never asked?

Of course I did. They lied with "java".

Don't you think it's much more likely that their stack is largely Java but you were working on a largely TCL piece of it, than it is that they decided to lie and trick you into taking a job you wouldn't otherwise want?

No - I don't think that because I stayed there long enough to make sure that the lion's share was TCL. What they said they meant with "java" was that they were going to rewrite the thing in java (this -4 years later- is yet to happen afaik). Even if it were that I was to dive in their TCL hell still I was tricked big time to agree to that. I'm afraid though that this was not that uncommon as there are numerous backwater positions (aka "legacy") that are in desperate need for maintainers.

Note: that's not to be racist against TCL but things being what they are in the trade - spending 3 miserable years with TCL expertise to show in my CV would be suicidal.

Your username is well chosen - Tcl is a very underrated language. I'll wager they engineer rings around their competition. Good luck with the Java. You know it's the new COBOL right?

Tcl may be the best language in the known universe (highly doubt it) but try running a job search for it in linkedin. Then do the same for java. I'm not the damned CEO you know. I need to think of my own employability/career.

That is the saddest part of our industry. There are so many cool and interesting technologies we'd like to work with, but we can't if we actually want to feed our families.

I've interviewed interns; Obviously I didn't design an IQ test but a CRUD app, very similar to the real work, so they could have a taste about the contents of the internship. Most of the test was just navigating around template files, Java and JS files. It's surprising that navigating around wasn't even necessary as some applicants couldn't properly change an if/elseif/else instruction, and the best applicant just seemed to luck past all possible bugs he could have created. Turns out it wasn't luck, he was just good.

Yeah, but If I had to reverse a linked list without recursion to be hired, I'll be damned if I'm going to allow someone else to be hired without doing that.

If there isn't tail recursion should I implement it with trampolining in the compiler first?

put it in a stack then take it back out, first in last out.

Follow up is usually: now do that with O(1) memory.

This doesn't seem like a very valuable interview question anymore because it's well known and you can probably google the simple answer, but if not this is the basic idea (walk the list once pointing each next at the previous node and return the new head when you reach the end):

  List *Reverse( List *pList )
	List *pPrevious = nullptr;
	List *pCurrent = pList;
	while ( pCurrent )
		List *pNext = pCurrent->GetNext();
		pCurrent->SetNext( pPrevious );
		pPrevious = pCurrent;
		pCurrent = pNext;
	return pPrevious;

I've never seen an interview question that I couldn't Google an answer for, after the fact. That doesn't seem like a necessary criterion to decide if it's a valuable question or not. However, it's a problem if the question's so common that even unqualified candidates would be able to answer it.

We ask these questions for a few reasons. You hope that the candidate hasn't seen it before, because you want to see their problem-solving process. You also want to see which questions they ask, which assumptions they make, etc. How well do they explain their thought process? Do they understand the algorithm, or did they rote-learn it?

Will they need to jump through algorithmic hoops writing a CRUD app? Probably not...but they'll need to solve problems creatively. It might be better to walk through an actual investigation+bugfix in a piece of software, but that takes more time to do (interviewer+candidate) and more effort (interviewer) to set up, so it's not surprising that most interviewers would take the easier way out.

I used these examples for interviews back in the 90s. I liked the follow ups. I don't use it any more because linked lists with pointers doesn't seem relevant now that computer languages have some sort of native dynamic list implementation.

GAAAAAAHHHH!! I mean, Of course I knew that already :)

It's hard to know you can simulate a function stack with a for loop I guess...

CRUD web apps actually need decent knowledge of database theory but nobody asks about normalization in interviews.

The algorithms thing is pure cargo cult behavior (Google asks about them in interviews).

Agreed. Data before algos. Isn't that what Linus said too?

Over my looong career doing CRUD applications (& proudly loving it), I've seen too many over-engineered programs and "business logic" introduce just to compensate for poor data models.

Ha, ha. I would hire you in an instant.

Wit/sense of humor is an indicator of intelligence. Which means even if you are not entirely familiar with the whole stack of tech we use, you will pick up things fast.

Sense of humor also helps immensely in crunch times...

Get a different job? There are plenty of interesting ones that don't involve writing CRUD apps, and even ones that will quickly exhaust (or at least, put to the test) your knowledge of data structures and algorithms.

But the fact is that most of those are off limits unless you know the AWS APIs, Chef or Puppet, and jQuery like the back of your hand. And by "know" I mean "have demonstrable paid work experience in".

In many companies the algo part is like 1/4th of the entire interview. The rest like code design, working with product simulations and coding challenges are pretty relevant, even in CRUD land

Its just the algo stuff you usually have to review before hand vs all the others

This is almost exactly like Microsoft's response to the ribbon criticism when it first came out. They were so proud of themselves that a handful of those buttons were used 30% of the time or whatever, but ignored the fact that another handful was used <1% of the time yet were still visible by default on the default tab.

Which is to say your justification is very much "75% of our interview process makes sense, it's only this 25% that you almost never needed any any previous job, you don't need at this one, and if you're self-taught you probably never learned in the first place, but we're going to ask you anyway because it makes the interviewer feel smart."

'Its just the algo stuff you usually have to review before hand vs all the others'

There's the problem. If it's something you have to review, it's not something you use that often. Unless the job is going to have you using it often, why is everyone's time being squandered on it?

I guess the problem is you need it infrequently but when you do need it it is really helpful to know.

And easy enough to look up.

But what are you looking up? You have to know what class of problem you have to be able to look it up.

And if the interviewer will be satisfied with "Oh, this looks like an X kind of problem. I'd just google that and go from there", fair enough.

A decent interviewer is probably willing to be cooperative and fill in some details for you. I guess some places are all about trying to play "gotcha" but the hell with them.

Reverse sort a binary tree? Is that like doing a reverse level order traversal then sorting it with like let's say a merge sort?

You just switch to big endian and it'll blow instead of suck

haha are you being sarcastic?

Wait, what? You're experience doesn't matter? Your degree doesn't matter? You have to demonstrate you have the superior fizzbuzz implementation!? Tell me it's not TRUE!

The same as being a poet or an artist.

But being able to count on a six figure salary after a couple of years on the job (as long as you're from, or willing to relocate, to one of about a dozen cities) doesn't hurt either...

Only if you are middle class American with ivy league degree, or migrant from wealthy family (so your family would pay your bills or already have paid for your education in US).

Is it the ageism? The constant threat of outsourcing? The neverending stream of media pundits blaming you for every social ill?

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact