Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×

Comment Project/personal success only equate for leaders (Score 1) 223

As team lead with staffing control and sufficient resources, you're personally responsible for the project.

Without enough resources, quantifiable partial success (maybe internal use and a few external alpha customers before money runs out) is your duty.

Otherwise, project success is at best something you can influence.

When you're good you'll accomplish notable things (radical performance improvements, patents, the best test environment you've seen with the lowest cost to find and fix bugs, novel external data structures) on almost any project (the notable exception is being stuck with whatever comes up next on the SCRUM burn-down list) and influence co-workers up, down, and side-ways in the org chart so they'll provide positive references.

What happened to an individual project as a whole isn't relevant, although being exposed to both successes (cradle to grave full-life cycle experience) and failures (better to learn from other people's mistakes than to make them first hand when you're responsible) is something to look for in candidates.

Comment 400K doesn't buy a studio apartment (Score 1) 436

400K doesn't buy a studio apartment in a decent location. The least I've seen available for ownership is a one-bedroom apartment for $600K plus HOA fees pushing $400 a month.

In a location with just a few jobs in the Pacific Northwest $400K almost gets you five year old 1500 square foot town house with attached 2-car garage and $200 a month HOA fees.

Comment $80K isn't a living wage where the jobs are (Score 1) 436

If you don't want to do build interesting software products you shouldn't be in the business because there are other ways to earn as much money without the huge time sink and stress that comes from how 9 out of 10 projects are run inefficiently with insufficient staffing. Suicidal depression, federal prison, night terrors prior to leaving the business, broken marriages, and similar things are side effects that go with it.

When you do because it's a passion, you might get lucky and be able to kick-start your career in Austin, Boston, Boulder/Denver, Portland, or Seattle but the opportunities there are limited. If you really want to grow you need to work on interesting projects with competent people who've done similar things before and there's only a good selection in the San Francisco Bay Area.

When you aren't content with room mates, $80K isn't a living wage in the Bay Area. Especially in an unstable economy (other places $25-30K in savings will pay your mortgage and even restaurant bills for six months without a pay check). Especially if you plan on reproducing and intend to send your children to a decent school.

When I bought my first 3-bedroom town-house with 600 square feet of basement shop space an attached garage for $160K within walking or cycling distance of anything I wanted in allegedly expensive Boulder CO, $80K was comfortable salary with room for retirement savings, 3 year old used car, and week long annual vacation. Property taxes never went over $1500/year. Income tax maxed out at 4.63 percent.

Properties in comparable Silicon Valley locations with less square footage and no basement are now $800K+ with $8000+ in property taxes (I'd be happy with a 2-bedroom cottage or townhouse with a garage. 3 bedroom ranch homes are still listing for $1.2-$1.4M. The same city names have some low-priced properties, but they go with neighborhoods that have murder rates eclipsing Oakland's and none of the location amenities apart from great tacquerias). Income tax is 9.55% plus a 1.1% state disability surcharge on the first $90K of income.

Even having cashed out near the peak of the market, I could be spending at least $50K a year more on mortgage + taxes to have a comparable life style to someplace purportedly expensive. Mortgage rates are higher now, and it'd probably be a jumbo so that's understating it by a lot. One of my friends from high school bought a house outside St. Louis for half what I spent on my town home so that may not be the right comparison.

As a frame of reference, $150K/year is the cut-off for San Mateo County "moderate income" housing.

This disregards minor incidentals which stem from the high sales taxes and everyone else having to cover the same expenses, like mechanics who charge $25/hour more and beers for twice the price.

That's the immediate situation.

The cost of living and salaries in the first world are over 5X developing countries. The inevitable conclusion is that our salaries and costs of living are going to drop until meeting their rising costs and salaries.

Things aren't worse today only because even with an IQ three sigmas out learning to design and build non-trivial software products takes a ten year apprenticeship with people down the hall who've done comparable scope projects before and learned from their mistakes.

There aren't enough people in developing countries who've done that.

Having travelled and worked with people from all over I don't think those guys are too different from us apart from opportunity. I know people who've learned that you can't mentor people over IM and telephone connections and have headed over seas to get employees at low wages that they can effectively grow. It's an emerging trend. Some companies are paying senior people American wages to live over-seas and build local organizations. Eventually we're going to get enough of that experience over seas to have a collision between their (low) cost of living and required salaries and ours.

I'm working towards owning a home in a low cost, low-tax country before that happens.

Comment Add variety! (Score 1) 601

You need to have variety in your life both at work and outside work so you don't get burned out on the sameness of it.

Do something productive and quantifiable other than work. I like to build stereo speakers, with other projects being pinball repair, progress towards a private pilots license, etc. Fit an hour or two every day or two into your schedule to make progress - while working 80 hours a week at a startup I finished one pair of speakers and learned enough to fly airplanes without an instructor in the right seat. At 100 hours a week I've spent a small part of the last couple weeks tracking down a malfunction in one of my pinball machines, rebuilding the digital power supplies, and putting in new connectors.

Take a useful development detour and implement something interesting that needs to be done which is different, perhaps which serves as an excuse to learn a new language/tool or revisit one you've gotten crusty in. When one startup was lacking a self-contained product test environment for automation I wrote a Bourne shell script which terminates when any of several descendant processes exit or a timeout fires. In another company I built a model which let us determine how different OEMs hardware would work in our cluster with only a single example and to see how meta-data changes would affect performance; and we shipped the model to OEMs for them to fix hardware bugs without having to deal with our cluster setup.

Programming

How To Get Out of Developer's Block? 601

Midnight Thunder writes "I have spent the past six months working on a software project, and while I can come up with ideas, I just can't seem to sit down in front of the computer to code. I sit there and I just can't concentrate. I don't know whether this is akin to writer's block, but it feels like it. Have any other Slashdotters run into this and if so how did you get out of it? It is bothering me since the project has ground to a halt and I really want to get started again. I am the sole developer on the project, if that makes a difference."

Comment I use xrandr with a suitable Xconfig. (Score 1) 421

I take my 4.5 pound laptop into work, xrandr -s 1 and Poof! I have all my files on a large 1920x1080 monitor. I type xrandr -s 0, all my windows move back to the laptop where the files remain. I also have an option for dual displays on the laptop and an external monitor for presentations on a projector. Sneaker net gets my files where they need to go by the time I need them no matter how many gigabytes they consume and how bad local network connectivity is.

Keeping everything important on one backed up (clonezilla, need to rerun) laptop avoids software issues, has single copy update semantics, and exceptional performance (25X faster than NFS at my office, with the tree building in 2 minutes not 50).

Modern laptops are large and fast enough for nearly everything.

Comment The list is inaccurate (Score 1) 731

>Honorable mention: Implementing a linked list or hash table yourself

In a lot of languages, you're going to implement your own linked lists if you want to have efficient in-order (LIFO or FIFO) and out-of-order removal.

With the C++ STL list template you can stash an iterator in each object and it isn't a problem. WIth Java, Perl, and probably C# that's not an option.

There are fewer situations where an off-the-shelf hash table implementation won't do the trick although they exist.

>Manual multithreading and multitasking

Most programmers can't make systems with multiple interacting locks work right. Thorough testing with contemporary tools is not possible, so customers are often the ones to find problems. For instance, I regularly crashed a SPARC running Solaris to the ROM monitor when doing a simple user space pthreads.

Modeling tools like spin/promela exist to prove locking schemes are correct although locking is often a leaky abstraction and you can't guarantee the implementation tracks the model.

Pre-emptively scheduled kernel threads don't perform and scale well enough for many applications. The C10K paper would be the first popular reference here. Non-premptive user space threads are a partial solution but still have a large cache and TLB footprint.

Consequently, most smart people building reliable and performant systems software end up with message based concurrency control systems. With popular language support (Java, C++, perl, not Erlang or Haskell) lacking appropriate functionality and popular libraries (libevent) being incomplete and not working well in multi-core environments this is usually home brew (Google's kilim might be a good contemporary example). That's manual multi-threading and multi-tasking.

A contemporary definition of "performant" should be on the order of 1M operations per second per node.

>Honorable mention: Non-WYSIWYG editing platforms. Some of us remain comfortable with vi/emacs, command-line compile options or .nroff for documentation formatting, but initially we programmers didn't have a choice.

I'll take vi and a text markup language over WYSIWYG editor any day. Multiple cut buffers make re-arranging text much faster. All of the meta-data is visible with the markup language and can be manipulated with the standard QWERTY keyboard while the WYSIWYG editor doesn't make all of it visible and requires traversing a maze of menus to make sense of it.

With my roff and html resumes I've never had a problem getting bullets at the right indentation level on the first try. With Microsoft Word or Open Office I've had to do little dances with paragraph deletions because traversing the menu structure didn't always do the trick.

This disregards productivity loss due to the temptation to play around with the layout instead of trusting the macro package to do the right thing.

> Honorable mention: Writing your own utilities to search for where you'd used functions or procedures and where you'd called them.

A coding standard makes that painless. Search for ^function( for the definition. Search for white space function( for use. Within a file an editor like vi will jump to the next reference with one key.

Comment Once in 1991 when discovering unix, once in 2007 (Score 1) 432

I used twm from 1991 until I got a new linux laptop in 2007 and found that the most reasonable user space wireless and power management tools needed gnome.

Apart from the task-bar support for notifications from little applications, it's inferior because it uses more memory and can't be configured to use multiple modifier keys as its escape sequence for window movement, etc.

Comment Minimum skills (Score 1) 374

Computer languages are analagous to natural languages. In the same way that knowing English isn't enough to make you a novelist or technical writer, knowing C++ isn't enough to be successful at writing non-trivial software that's useful.

I won't even phone screen candidates that don't have practical experience, or don't have at least the level of practical experience I'd expect for some one with their time in industry because people need to be able to design things, keep their thoughts organized, and do it in a way that the software is maintainable. Even the smartest people don't get those things right on their first few attempts. Working open source software (I wrote the original Linux SCSI subsystem and it was bad) or on project classes (in compiler construction we built a compiler that handled some reasonabe subset of 'C') are ways to get that experience without paying jobs.

I won't even bring candidates in for interviews when they don't demonstrate a basic knowledge of algorithmic complexity and data structures since that much is needed to understand why things are thousands (or even millions) of times slower than they should be. An introductory computer science course and data structures are one place to get that. MIT even puts materials on line for their open courseware; that might be the material you want for self-guided study.

In theory you can do things like system administration and testing, although in practice you'll be real limited in those areas and who will hire you. Testing needs to be automated, and the code can be more complex than the software under test. While lots of organizations look down on testers, you really need good software engineers who may just differ from product engineers in the attention span they have (delivering test cases in weeks versus years for some complex products). All competent system administrators do a lot of automation with programming; especially in small organizations where they're likely to wear additional hats as the person automating the build or doing product installation work.

Comment You need a web presence and linkedin is one (Score 4, Interesting) 474

A web presence connected me with one founder who hired me as first technical employee in his startup (which was fun until we went out of business) and a big corporation with a six figure bonus + relocation package (but no interesting work to go with it).

I get a lot of traffic from recruiters from my linkedin account, some of which I'd entertain if I was looking for a job.

Once you reach the limits of your real-life social network, you really need another marketting strategy for career growth. While not ideal (there's a lot of noise) linkedin is worth the hassle.

Comment Look at getting a new major before you graduate. (Score 1) 352

Most computer science jobs right out of school involve either debugging some one elses code and adding small enhancements (so I suppose that technically speaking you wouldn't be writing code all day) or testing some one else's code which on a good day means writing automated tests (a task good developers with short attention spans are well suited for) or pushing buttons like a trained monkey.

With some good experience, you'll go through design-implement-debug cycles. If you're creative, write good automated tests which catch bugs early, write robust code, and use tools well you'll spend most of your time writing code. If not you'll spend most of your time debugging.

With more experience, you may spend a significant fraction of your time providing technical leadership so you can get a team to write more code than you could personally. The rewarding things are helping less experienced people grow and getting your work done faster, but it's a lot like actually writing code because you spend a lot of time figuring out how people should be doing what they're trying to do.

You could also detour into project management (once you know how it works) or technical sales support.

If that sort of thing doesn't interest you, you probably want to look at graduating with a different or dual major. It'll be a lot easier now when you have relatively few commitments (no mortgage, children, etc) than later even if you don't get used to the lifestyle that a decent job provides.

Slashdot Top Deals

A computer scientist is someone who fixes things that aren't broken.

Working...