Live data from Hacker News

Top Surprises When Starting Out as a Software Developer

henrikwarne.com

61–70 of 79 posts

Re: Top Surprises When Starting Out as a Software Developer

#61
post #49

Earlier quoted context omitted.

For christ's sake. I've met far too many people with Uni degrees who don't know what a B-Tree is, or even what a linked list is (truly scary).

yeah but they could rewrite std::stack... um, without templates.

If they did indeed do that without understanding how a linked list works, then they're not going to do very well at it.

Re: Top Surprises When Starting Out as a Software Developer

#62

There's a common theme in these posts, along the lines of "OMG I didn't realize paid programming gigs were effectively business roles". Let me address what's intrinsic and what's not. 5. People Interaction Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance proje…

>Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance projects that have no upside. (Programming probably has the most variance of any job category; the best projects are a lot of fun, and the worst grind your mind to sawdust and produce nothing.) If no one likes you, no one trusts you, and you'll never get projects where your technical intelligence really matters. I understand the hate that technical people have for "office politics" but the only approach that works is to adapt. To figure that shit out so you can laugh (silently) at the suckers who don't get it instead of being one of them.

This is why the best programmers are in startups -- I do not believe you can be good at people and computers at the same time. And it is much more profitable to be involved in people, sadly.

Re: Top Surprises When Starting Out as a Software Developer

#63
post #47
post #34

Maybe not a surprise, but definitely unexpected, was the number of systems where, over time, the incremental features had overtaken the original architecture, but the vendor would not fund a new implementation. I've seen 15 year-old systems that were so byzantine, every feature change broke two others, and attempts at improvement caused entropy. It was both a huge time sink and customer satisfaction debacle. Here is…

Maybe they read this: "Things You Should Never Do, Part I" http://www.joelonsoftware.com/articles/fog0000000069.html

Ah, but doing that was what allowed them to kill IE and restart the browser wars.

Seems like Joel should retract that article.

Re: Top Surprises When Starting Out as a Software Developer

#64
post #2

My biggest surprise - many developers, even in senior positions, are self-taught and cannot properly implement even basic stuff like binary search, don't understand basic performance considerations around algorithm complexity. Their mindset is "we are using high-level languages; specific algorithms and performance considerations are properly addressed for us by the language designers, we are doing real stuff and not…

I fall in to that camp. I don't look down on 'theoretical CS' stuff, but it's rarely ever even had to be a consideration in projects I've worked on, which has included ecommerce systems selling billions of dollars of stuff (large qtys, small price per item), real time reporting of financial data, and numerous other projects requiring a degree of scale or speed or both (php, vb, java and other stuff over the years). N…

Yep. I've been out of school since 1991 and the last time I wrote a binary search, or balanced a tree, or even implemented a linked list, was in school.

Re: Top Surprises When Starting Out as a Software Developer

#65
post #62

There's a common theme in these posts, along the lines of "OMG I didn't realize paid programming gigs were effectively business roles". Let me address what's intrinsic and what's not. 5. People Interaction Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance proje…

>Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance projects that have no upside. (Programming probably has the most variance of any job category; the best projects are a lot of fun, and the worst grind your mind to sawdust and produce nothing.) If no one likes…

I do not believe you can be good at people and computers at the same time.

You can become adequate, and you should. Yes, the monkey-bots running million-year-old legacy code are a pain in the ass (it's annoying being one, too) but you can learn how to deal with them, and you must.

People skills matter more when you're in startups. The business side is all pitch, pitch, pitch, and from a disadvantaged position. If you're technical, you need the people skills to size up a business co-founder, or else you'll end up with a dud, and you need to be good enough with people that he trusts you and takes you seriously.

Re: Top Surprises When Starting Out as a Software Developer

#66
post #48

Earlier quoted context omitted.

When exactly are four levels or more of nesting appropriate? This has nothing to do with functional programming, it's a matter of readability. I mean, Linux is a completely procedural codebase (with some manual OO), but even its style guide says If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.

Why four, or three. Why not one or five... what a silly question/statement. It's completely subjective and as far as "a matter of readability" it's far far from the worst offense.

It's not completely subjective. McConnell in Code Complete mentions studies by Chomsky and others that suggest that few people can understand more than three levels of nested ifs.

As for being far from the wort offense, well, I try to set my goals a little higher than "not the worst".

Re: Top Surprises When Starting Out as a Software Developer

#67

There's a common theme in these posts, along the lines of "OMG I didn't realize paid programming gigs were effectively business roles". Let me address what's intrinsic and what's not. 5. People Interaction Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance proje…

An excellent comment. Your point number 2, by the way, applies very well to most legal work done by large law firms. Been there, done that. It never hurts to remind people in early career as they leave formal higher education and go into the for-profit, private-enterprise labor force that domain-specific technical skill as such is just a small part of the skill set someone needs to build a successful career.

Re: Top Surprises When Starting Out as a Software Developer

#68
post #62

There's a common theme in these posts, along the lines of "OMG I didn't realize paid programming gigs were effectively business roles". Let me address what's intrinsic and what's not. 5. People Interaction Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance proje…

>Yup. People skills matter. Programming seems like a great job for asocial people. It's actually the shittiest job imaginable if you have weak people skills, because you get staffed with the crappy maintenance projects that have no upside. (Programming probably has the most variance of any job category; the best projects are a lot of fun, and the worst grind your mind to sawdust and produce nothing.) If no one likes…

Doesn't a startup, founding one at least, require even more people skills than your average job?

Re: Top Surprises When Starting Out as a Software Developer

#69
post #57

Earlier quoted context omitted.

You have to be careful, many people who laugh at design patterns turn out crap spaghetti code. At least with design patterns, you are at least attempting to separate traversal from operations on the elements as with visitors. People who don't like them often turn out huge monolithic algorithms which is an even worse crime.

Functional programming has "design patterns" but few of them, and those design patterns make so much sense that you stop thinking of them as such and just think of them as the way to solve problems. Referentially transparent functions and immutable records for data are design patterns in the non-pejorative sense, but they simplify code rather than complicating it. These are the two design patterns of functional progr…

I didn't even mention functional programming. Functional Programming is not always an option.

Re: Top Surprises When Starting Out as a Software Developer

#70
post #49

Earlier quoted context omitted.

yeah but they could rewrite std::stack... um, without templates.

If they did indeed do that without understanding how a linked list works, then they're not going to do very well at it.

Surprisingly most software devs I've met understand arrays and hashes, but few know what a linked list is.

I think this is an artifact on many of them using high level languages where linked lists are rarely used.

That's no excuse though

Post reply on HN