It is an interesting screed. I was thinking when I wrote up the comment about how VP's might feel about leaving a position that there is an interesting dividing line which doesn't get talked about a lot, Matt touches on it but didn't really call it out, its this, "What are you trying to get done?"
Early in my career Steve Bourne gave me useful advice, he said the difference between junior engineers and senior engineers was that senior engineers had an agenda. More specifically they had an execution goal (like write a new file system, or create a product that solves problem 'X') and they worked toward it.
This is a both a hugely motivating and hugely scary thing, its motivating because you don't have to ask "what do I do now?" the direction just falls out of where you are vs where you are trying to go. It is scary because you can find you're goal isn't compatible with any of the company's goals. When you discover that what you want to do can't be done at the company you are working at, you either have to change goals or leave. But its not a 'feel bad about it' leaving it is 'hmm, this isn't going to work out here so lets go somewhere that it could'.
The alternative to having an agenda is "Goofing off and waiting for someone to give you a task." There are a lot of engineers who operate in that mode, do their assigned tasks at an acceptable quality level and without too much schedule slip. They are great to have around because people with agendas and use them to move the agenda forward, but they don't make for very good 'senior' people because they really don't care what they work on, its not their main focus.
It is important to note that you can't "fail" if you're just goofing off, as one of my kids put it, "It isn't procrastination if you don't have anything you need to do." You can however rationalize your low work output by the fact that your management really hasn't given you all that much to do, so whose fault is that? Whereas if you have an agenda, a goal, a destination, you can fail to make it to that destination. "You said you were going to build a game that could crush Farmville, you failed." Reading the blog post from Speck about Glitch shutting down, "we failed to develop an audience." They had a goal, they didn't get there.
Matt's advice that if you don't know what you want, you can't choose reasonably is solid. Start by deciding what you want to do, and pick something that will take a while as early goal achievement has its own problems.
Very well articulated. I recently had a series of frown filled meetings with my manager where the best I could come up with was essentially "you're giving solutions to implement rather than problems to solve"
I was recently pointed towards Principles[1] by Ray Dalio by someone here on HN, and I highly recommend it. He talks about getting what you want out of life, and how that starts by figuring out what you want. He then lays out a process to get you there. If you're thinking about your career path, give it a read. It's long, and somewhat tedious prose, but it provided me a lot of insight as I'm figuring out what I want to do post-graduation.
The bimodal distribution of effort is really true, although people flip from one side to the other based on circumstances. Companies want people who (a) give a shit, but (b) are willing to subordinate their own career goals (including the long-term goal of becoming really good at engineering) to corporate objectives for a long (more than 3 months) period of time. The reality is that such people don't exist. People who give a shit won't let their skills atrophy just because a manager needs grunt work.
You have the goof-offs that you described who have (b) but not (a), and the self-executive types who have (a) but not (b). The people who seem to have (a) and (b) just have different career agendas. They want to entrench themselves and gain social power. Often, they're psychopaths. They're a lot more ruinous to companies than the outspoken and self-executive types that dinosaurs call "prima donnas".
You don't think there are people who seem to have both (a) and (b) simply because they hunted around for a company whose goals were aligned with theirs and refused to accept jobs that weren't?
The issue of seniority always bugs me. If a 26 year old guy who writes "good enough" code can be a Senior, which I see very often, what's left?
Personally I wouldn't feel right with a title including "senior" until I've got at least 10y experience, generated millions in revenue and lead a team of >10. And I'd still prefer not having a title. Unless the only way to increase a salary is by taking the title, which seems to be the problem.
- Drilling down multiple levels for greater understanding. Being the "anti-poser" by knowing what's really going on under the hood. Sharing this insight with others. Amazing what a difference maker this often is.
- Subject matter expertise. Can you stay two steps ahead of your customers by getting behind their eyes and seeing what they need before they do?
- Continuous improvement. (I know, a B.S. term if there ever was one, but it's true...): "Good enough" is never good enough any more. Get better or someone will eventually eat your lunch.
- Communication skills. We all suck at them so much that this is often a bigger speedbump than technical shortcomings. We have much to learn from ants.
- Vision. Another nebulous term, but one that often makes a difference between arithmetric and geometric growth.
- Determining priorities. (Are we really working on the best thing?)
I think he was referring to the "title-itis". Titles make absolutely no sense and they seem to be used as a currency by employers and as resume trophies by programmers themselves.
To many times have I seen mediocre programmers negotiating themselves into a BIG title simple because the employer didn't want to give that person a pay rise (titles are free you see). Once they get the title, they sit on sit for a few months and then they fuck off to work for another company. This way they keep their title AND get a pay rise and all while being mediocre.
I'm sorry, as pan69 pointed out, I meant what's left for career progression (without going into management). When a truly senior developer comes along he will be stuck at the same level as the "good enough" (in a bad sense) guy, maybe even at the same pay.
I know several hundred Vice Presidents at JP Morgan Chase.
And really, if your business card tells me that you're a Programmer/Analyst 3, then you're either doing something wrong, or you're a robot, and you probably work between Programmer/Analysts 2 and 4.
I was given a title once, and I think it was a 3 (this was... a heck of a long time ago). But... I wasn't told what the 3 meant - is 3 the bottom? The middle? The top? Is "level 1" where people start? Or is it like golf, where a lower number is better? I asked, and ... got the weirdest look, as if I was an idiot for not having some insider knowledge about "corporate titles". I wasn't there very long. And I never actually got an answer...
I always thought that those number titles were based on a scale from 1 to 5? Usually when I see 3 I think the implication is that you're a "mid-level" engineer. I understand the point that these numbers can be arbitrary and not well defined, but I think the idea that this is a "mid-level" engineer would be well understood (I believe this sort of numeric distinction isn't unique to just software engineers). Did you truly not get that or were you just asking the question to illicit a quizzical response?
I get that it's a scale. But... is "1" the "highest" or "lowest"? 17 years in to this indsutry, I still don't know. I've not worked at enough places that had a numbering system like that (IIRC just that one place for a short time).
On the other hand how I can differentiate myself without using "senior" from others developers of my age, who took this job as a result of additional course during their college time and who as result produce quite ad-hoc code without any interest in technology and what lies below job they do?
That's the only reason I am using senior in title. Because I do not agree that all 20-something devs bring same value to the team.
In many large corporations including the one where I work, the wages, salaries, and benefits brackets are all determined by your title. The only way to get out of those brackets is to get promoted to a 'better' title. I'm don't care for titles.
When I was first starting out, I was the first hire under the "Director of Software Engineering". He was the only one in his department for over 3 years. The company had only a handful of people. Shortly thereafter I found just how bad the situation was. After 3 years for what was essentially an enterprise data entry application there was not one production line of code written, but he had a great title! I had a painful experience working there, but I'm better because of it.
I was given the senior title in what was essentially my first programming job. I found out later, the boss actually thought I had more than a decade of experience.
I've never cared much for titles though. They seem pretty meaningless to me.
I posted that link at the same time as someone else, with a post date like 5 minutes after them. I also didn't clear off the referral parameters (I got the original article in an email blast about tech news, with two utm_ parameters). So maybe it looked like a referral link or a possible duplicate of someone else's. shrug
Either way, that article really made me re-consider the 'Senior' in front of my title. Very well written.
What companies tend to call "Senior" is usually around 1.4-1.6 in terms of responsibility. That said, most companies don't give you 1.4-level work until you're 1.7-1.8 in ability.
"Senior" is a title inflation at this point. I wouldn't join a startup (or any company for less than 0.9 times what I can make in finance) for less than a VP-level title, even though I'd be perfectly happy to code full-time and have no reports.
The Google rankings are misleading because many managers stay on the engineering ladder. (For example, Amit Singhal, who runs all of Search, invented the Google ranking algorithm, and is an ACM Fellow, was a "Distinguished Engineer" when I joined.) Staff through Principal are really management ranks - it's very hard to get to Staff without managing people or being a tech lead on a large project. Distinguished/Fellow is weird - it's split between people who have several hundred people reporting up to them, and engineers who have nobody reporting to them but are allowed to do whatever they want.
I heard one of my PMs say that "Senior SWE" at Google is roughly equivalent to "Director" at Oracle (which also suffers from massive title inflation). He was, I think, the youngest Director at Oracle before he came to Google (he got that title when he was 27).
I was under the impression that to be staff+ you had to be a leader (technical direction) but not a manager (performance reviews, people stuff). How accurate is that?
That's true, but usually being a technical leader of a large project implies managing the people on it, if only because it's good for people to have managers that actually know what their day-to-day accomplishments are. I do know of exceptions. There are a few people who get to staff and even beyond without managing people, but I've heard it's very hard and usually involves TLing a project of the scope of Google Instant (and then you frequently get made a manager afterwards, unless you really strenuously object).
TLing is a completely different skillset from engineering anyway - it's much more interrupt-driven, people-focused, and basically involves being a mentor, teacher, and shit umbrella. When I've TLed projects, I usually find myself spending about 30% of my time coding and 70% communicating with other departments, debugging obscure bugs, managing up, and making sure all the critical parts are covered. Coworkers that are staff+ and TL larger projects usually find it's 0% coding and 100% dealing with politics & coordination.
Yeah, I never got the 'VP' title, it seems counter-intuitive.
It looks, as in the government, the VP is merely there if something happens to the President, instead of being an important position with a well defined set of tasks.
In traditional companies, VP is higher than Director.
In banks, it's different. VP is a middling level and not necessarily managerial, while Managing Director is usually the highest.
I think the idea is that VP is equivalent to VP in a regular company, while MD is comparable to a C-level title, but because banks can't have as many C*O's as they have Managing Directors, they use a different title. Whether the rest of the world agrees with the banks on this title-equivalence is open for debate.
Is "partner" an example of title inflation? Law firms do have a lot of "partners" (anywhere from 20% to 50% of lawyers at a large firm), but I think it's more a matter of law firms just having naturally flat structures. Each partner operates pretty autonomously in terms of bringing in business, managing associates, running cases, etc. Levels of organization above "partners" are more facilitative and strategic (where to open new offices, etc) than operational.
Not really but some firms have tried. There are equity and non equity partners at some firms, for example. If you eant more detail than you will ever use use google Adam Smith, Esq.
Eh you don't get made partner after just sticking around for a few years, partners are participants in the firm's capital who usually need to buy themselves in. Partners in law firms can not be compared to roles in other companies where employees are just that, employees.
I always figure that if I found another startup, I'll print up 2 sets of business cards. One will have the title "Founder & CEO" for people who are impressed by that stuff. The other will have the title "Disruptive Influence" for everyone who's cool.
My business cards, even back to my first industry job in Palo Alto, have always had nothing listed for a position. On the "smaller title is import important" measure, I win!
In the US things are probably much better, but around here it's common to see senior positions filled by people at 0.8-1.3 on that scale, partly due to a shortage of developers and good education/experience. It's specially true at larger corporations.
around here it's common to see senior positions filled by 0.8-1.3 "engineers" on that scale
That's scary.
One thing I'm finding is that it's really hard to get into a position where you can function at a 1.5+ level. Most companies want reliable mediocrity, not excellence. The reason there are so few 1.5+ engineers is that there's so little 1.5+ work out there. I think that if a few companies had the balls to man up and go to open allocation, we'd see a dramatically higher level of software talent in a few years.
So, it is a noble thing Matt is doing here, but my skepticism always kicks in when a post like that does not include a self evaluation.
I am sure you could fish up some great job opportunities for anyone who writes you a nice e-mail. But is your own job the job you want from your career?
I mean, being tech lead on a big company is nice and all. But the company is just a coupon distributor, I'm not saying that I work for the sexiest startup in the world, but I'm just saying that 'up' is not always the most satisfactory trajectory for a career.
I don't think I'd be happy for long at a company like LivingSocial, unless you guys are hiding something behind there that makes it a very nice place to work at?
Good point, however it's a bit sensitive to talk about one's current position and provide insightful feedback without hurting feelings or divulging internal secrets. I left Sony PlayStation to join LivingSocial when LivingSocial just had acquired InfoEther and Chad Fowler became the VP of engineering. My motivation to join them was because I was interested in learning what it meant to design a product, what is needed to make something successful and finally to discover the gap between startup and entreprise since LivingSocial was becoming more than a startup. Working with people I trusted and I consider much better than me was also important. Is LivingSocial's product that exciting? No, not really, we sell advertising for local commerce. But my goal isn't to just work on a cool product (you don't do much cooler than video games), my goal is to learn and bring value to place I work. I'm still learning a lot, and a lot I didn't expect such as growth pains, challenges of growing an engineering team from 20 to 120, what it means to have strong engineers trying to work together, communication etc...
To answer your question more directly, I feel I'm still currently on the right path and while the product might not be glamorous, I get to learn a lot and feel like I can still contribute to the company success.
Recruiter of software engineers here, and liked the article. I can't begin to estimate what percentage of job changes are attributed to the work of recruiters (recruiting firms, not internal company recruiters), but I think that one reason engineers sometimes make poor career decisions is that they are being coached by recruiters to make them.
The technology industry has created a vibrant technical recruiting industry that feeds off of it, and it is often an unhealthy relationship. The recruiter (especially contingency recruiter) has a huge financial reward if he/she can convince the engineer to take the job, regardless of whether it is a good career move - the recruiter generally is paid as long as you stay 90 days. The size of the reward in addition to the competitive nature of the business creates some incentives that lead to trust and ethic issues. It is this problem that inspired my article http://jobtipsforgeeks.com/2012/09/17/disrupt/
If you are dealing with a recruiter that talks about the job he/she is trying to fill before asking you about what YOU are looking for in a job, you are probably not talking to someone that is trying to help you make a good career move.
> Now is an awesome time to be a software engineer (probably best time ever).
I don't agree with this statement at all, as it's getting harder and harder to find low-level work (e.g., C and *asm) and that's the __only__ kind of programming that I enjoy doing.
I'll start looking for another career when I have to consider putting words like ``full-stack'' or ``cloud'' on my resume in order to find work.
Then start looking at companies that primarily produce hardware. Trust me, it's getting harder and harder to find people who even know what a pointer is. To the point where we simply assume the people we hire won't and we'll just have to abstract it away for them.
I hear what you are saying. In my last job I worked on real-time signal processing code, and there was a definite lack of software engineers who understood the low-level code and the various target platforms. In fact, many of the software developers, myself included, were EEs.
Where I see a problem though, and this goes for my former employer, is that the requirements for the jobs often extend beyond just being proficient with low-level development. You say you would like to "find people who even know what a pointer is". However, I read job reqs like the ones from the company rayiner posted require "extensive" experience in some particular niche of low-level coding, in addition to low-level/real-time development in general. That makes me think its easy enough to find people that companies can afford to be picky, even if they have to wait a little while.
So, if it really is that hard to find people, why write reqs and recruit in such a way as to discourage or reject people who have some experience, but not the "right" experience?
> Then start looking at companies that primarily produce hardware.
I have in the past. The problem is that I have a BS in Computer Science and most hardware companies hire only Computer Engineers for low-level programming work (among other things).
Well, it certainly sounds like you're more than capable of working really hard and achieving good grades. Having to struggle isn't a bad thing - the key is learning to enjoy the feeling (not easy, I'll admit).
At least where I went to school they had family student housing for grad students who were married. Going to grad school would likely involve you taking a student loan, but then you'd be able to make more money afterwards.
Keep in mind that while you're under 30 (and assuming you don't yet have kids and a mortgage) you have a lot more room and leeway to take risks than later in life. Don't lock yourself into misery too early in life. :)
> ... most hardware companies hire only Computer Engineers for low-level programming work (among other things).
I have a computer engineering degree—I will cheerfully work with anybody who can get the job done. EE, CS, physics, you name it. My experience has been that low-level skills are only weakly correlated with degree. You want the person who was writing device drivers in high school.
I studied software engineering in New Zealand, but the course is under the Electrical Engineering department so we also took a few courses on processor design, logic gates, assembly etc.
Is it actually common for CS grads in the states to not have covered that stuff?
My university required CS majors to take logic design and microprocessor architecture. Beyond that, it was up to the student to choose concentrations, of which computer architecture and systems programming were choices.
I work in assembly and C, and like HeyLaughingBoy, I strongly disagree that there's any shortage of such work. If anything there's a significant shortage of good applicants.
Where have you been looking? Are you constrained geographically?
If you're in Maryland, have you considered looking in the Dulles Corridor? There are more than a few places there that need someone who knows what a pointer is. A lot of military contracting stuff with embedded systems and whatnot. I used to work at a company that does military wireless technology that has several job openings for embedded guys (http://www.sharedspectrum.com/careers). I also know Motorola has an office that has a lot of people doing embedded software work. Maybe think along those lines...
I already replied higher up with a suggestion to check in to the sciences. Seeing as you're in Maryland you're pretty much right in America's Biotechnology hotbed.
You don't have to go to hardware companies to find these positions. Look at companies that support the internet, not the ones that use it. Such as DNS or OS level positions. The majority of resolvers still just run on plain old C and do it very well.
> it's getting harder and harder to find low-level work
That doesn't match with my (current job seeking) experience at all, the embedded market is really healthy at the moment. What sort of keywords are you searching on?
Go to space companies and apply for positions with "avionics" in the title. It'll be a mix of people from software and hardware backgrounds, but everyone deals with hardware on a low level.
You might also want to look for jobs in the sciences there is a demand for highly optimized code in many fields that is often written at least partially in C. Offloading stuff to GPUs provides even more additional low-level programming challenges as well as parallel algorithm work.
Oh look another X sucks at blah. I always reverse these sentences to get interesting ideas. What if blah sucks at X - namely, what if jobs suck at finding the right engineers.
Now we're talking :D
This is a problem in HR not engineering - whose sole purpose is to find good engineers, pay them well enough so that they stay, make an environment good enough to keep them happy, and put them on the right projects to maximise value.
Guess how you fix this problem? You go Valve style. The problem isn't engineers, it's HR who can't get their act together.
For a sales guy, you can say he brought in $X in revenue that led to $Y in profits, so the value he creates is visible. It's a lot more complex than that, but at least there is a theoretical basis to value his work.
I spent five years working on a non-profit web site that was used by more than 80k people a day. We estimated the site produced $250M a year in value for end users. We also had no real plan for capturing that value or funding it so there wasn't a pie I could claim a piece of at all, just what they said they could pay me.
I've worked at a number of places where the model was spend $X to develop something with Y developers over Z months and maybe we can sell it. These often are fun jobs. This includes a lot of Y Combinator kind of companies but also stodgy companies you'll find in midwestern towns.
I think the median project of this type either (i) doesn't ship a product in the end or (ii) gets revenue that is a small fraction of $X. Again, there's no pie to split.
This of course begs the question. Does working on a project like Colors make you a negative net productivity programmer whatever you do?
I guess in theory a place like this could pay you heavily in equity or bonuses, but with the odds of getting no payout that's really not fair if you have to develop your skills, be highly responsible in so many ways and maybe even support a family.
The companies where the revenue is more obvious are job shops, but these tend to be horrible places to work. Of 5 that I had some involvement with, 4 of them were outright failing businesses because the business plan made no sense or they spent 12 years building web sites with an obscure language that is now eol. The last one is profitable and growing but they had no benefits, low base pay, but they might pay a bonus into your 401k at the end of the year based on "the value of your contributions to the company." Well, the principles of the company never got tried of yakking about the high value of the sales work they do so you know who is #1 and #2 when bonus time comes around at the end of the year.
So in all my years as a pro programmer, I can say I only worked for three months at a place where my work had a clear connection to revenue it was creating and compensation wise it was the worst job I've ever had.
Looking at this problem through the lens of engineering is obvious for most HN readers, but it's an issue everyone faces.
It's very hard to understand what opportunities exist for YOU specifically in the employment market. Seeking out potential jobs is laborious and you can't take the time to talk to every recruiter that calls.
What would be better is if you had a good way to safely broadcast what is interesting to you professionally and indicate the types of opportunities you'd like to hear more about. Safely is the key word here. The system breaks down if it puts your current gig at risk.
We're working on solving this exact problem. Our goal is to help people stay on top of the employment market and be made aware when a really special opportunity presents itself.
If engineers suck at finding the right job, and companies can't find the right people, then this problem is screaming for better solutions. The challenge here I see is that every employer is looking for 'rockstars', even if the actual job responsibilities may not require one.
So, if I'm a 'rockstar', its a big hurdle to separate the reality from the marketing pitch of the magic job. What can be used as a signal for filtering good quality jobs from the less desired ones? It's surely not money, because plenty of big companies will pay you ample to make good power points.
I think a startup that can figure out the right mix of signals to indicate the job quality, which may be a combination of challenging problems, team, work-environment will really hit it big.
>The challenge here I see is that every employer is looking for 'rockstars'
I think there should be a developer tier at 250kish (valley prices)
If you can justify that, we'll call you a rockstar.
Then we'll give you status to go with it in the company (as you're making more than your boss), sort of how external consultants often get that and get to recommend TONS more stuff than line engineers do.
If a position says rockstar, and doesn't pay a quarter mil, we pan you on the web as lying about needing a really highly paid, super highly skilled position.
There is a developer tier at $250k+ and higher. It's on Wall Street, and really does need rock stars because they make their money by their rock stars being smarter than the other guys' rock stars.
From the perspective of maximizing compensation, you don't necessarily want to find the jobs that create the most value. You want to find the jobs that create enough value to sustain big salaries, but also where there is a real or perceived incremental advantage to having smarter developers than other people, and where that advantage is perceived and appreciated at the management level.
I'm thinking about a way to call bullshit on such job descriptions. Not sure money is the answer though. What about interesting jobs / startups that can't pay that much?
It would be nice to get a crowd sourced mechanism that involves employees / ex-employees / vendors who could provide a well rounded view on what is the job really like, and not just some marketing spiel from hiring manager
It really is an exciting time for software engineers. I'm a soon-to-graduate student and have gotten so many job offers that I had to pretty much stop talking about it with friends/family. Does anyone else feel awkward admitting how easy we have it in tech right now when there are so many people struggling to find jobs?
As a soon-to-graduate student as well, I am having the same issue. It is a blessing but also a curse, having to figure out what direction to take from so many options.
Hehe, I'm not a recruiter (I'm the OP) but probably like yourself, I get a lot of them contacting me on a regular basis. Knowing what to do next and or if our current job is worth it is a hard challenge. I just shared my own experience.
You may not specifically be the recruiter but it's no mystery that you guys have been aggressively hiring, and being over capacity is no doubt something somebody in your position would be acutely aware of.
So pardon me for agreeing with parent that the post sounds like it was written by somebody having a hard time finding good candidates.
That's a fair assessment, however LivingSocial has its own recruiters and they are doing a great job. So far I got a few companies reaching out to me to let me know that they have some open positions and I know of many others in my network. I'll do my best to try to match people.
>I remember a family friend telling me when I was a kid that computers are going to be the future and that there will be a lot of jobs in this field.
That's great. I had the opposite. For some reason my dad was convinced computer programming was on the decline and was 100% against me going into computer science. I did engineering instead of CS and later regretted it. Going back to get my MCS now.
Also when you get to early 40s doing web dev or web apps, especially if you dont have a GooG or stanford degree, your competition for work is essentially early 30 somethings, and age discrimination really becomes apparent. I have no idea what to do next for challenge and m0ney.
I thought the author sounded familiar. He's the person who gave this blatantly sexist and offensive presentation, CouchDB: Perform Like A Pr0n Star, at the Golden Gate Ruby Conference in 2009: http://ompldr.org/vZ2I1cA/gogaruco-couchdb-090418194027-phpa...
Matt's a fairly prominent member of the Ruby community. I've seen him at conferences with his little boy, and chatted with him myself. This doesn't mean that presentation wasn't sexist (I was there, I was horrified), but he's not a sexist monster without regard for ethical behavior.
He's a pretty decent guy for the most part, and I believe him when he says he wants to help.
yes it was me and as you just discovered I'm not perfect and made many mistakes in my life ;)
Note however, that I try really hard not to make the same mistake twice and this lessons I learned 3 years ago stuck with me.
The question is how relevant is your point? Are you trying to help the discussion or attack me personally?
Glad you grew out of it. Moving from "hurtful" to "aware of how that bothered people, and willing to avoid that" is the halmark of personal growth and a sign struggle to be better.
I don't think he's trying to attack you personally, and I do think his comment helps the discussion.
Whether it's a good or bad thing, a writer's reputation (which is often based directly on past actions) does impact how people understand his or her work.
My opinion is that it's important to know such information when reading an article, regardless of whether it can be taken in a positive, neutral, or negative light. It does help the reader get a deeper comprehension of the article's message, and where the writer is coming from.
It really bothers me that this is a highly upvoted comment since it has absolutely nothing to do with the content of the post in question. I wouldn't be surprised if that presentation was posted on HN a while back. Search for it and go comment there.
A person's reputation is simply a signal in determining whether of not whether it is worth your time to read or listen to something they have said/written. Being upvoted to the front page of HN is also a signal. The latter signal is far more valuable and relevant than the signal you have brought up since it is directly related to the content in question and not merely the author.
Wow. So, I'm one of the least PC people you'll meet, and hoped that upon clicking through I'd be proved correct that the link was benign, in good jest, and conference safe. AYFKM? Big surprise OP is working for a daily deals company and not for real tech.
I would also suggest that he have his english teacher review his posts with a red pen before posting. The grammer made it for a very hard read. I hate writing, and am not great at it, but I also hate reading writing that is as bad as mine.
I appreciated this post, and it's good timing considering I've felt lost in my career for at least a year. I switched jobs 6 months ago, and am already considering changing again. I've had several interviews, and in spite of the fact that everyone I work with tell me what an asset I am and how talented I am, I can't seem to find a good fit.
I'm a .NET developer, and am considering changing to Rails, just to see if that opens up better/different opportunities. But that's a big time investment for me -- having a family leaves me with little time as it is -- and I'm not even sure that will leave me much better off than I am now.
I really could use some direction, but have not been able to nail down a way to find direction. Matt, I may take you up on your offer.
I would also welcome and general thoughts from the HN community.
Jader - don't want to spam this discussion, but many of our students at railstutors.com have the exact background as you. If you have 10-15hrs/week for a month, we can get you to a proficient level with Rails.
That's what I did in my last job search. It's paid off wonderfully. The first three months weren't especially exciting, but now I'm working on very interesting problems, and growing a ton.
> We are good at solving technical problems in an objective way but when it comes to us, to our jobs and future, we seem to have a bit of a hard time. Why?
Obvious answer: A good technical problem can be fun, while such real life things are just tedious and stressful, so you avoid thinking about them.
Good post, as it happens I'm also pondering the things you're talking about.
I like that you to offer to talk things over with anyone who asks! I'd be curious to know what you learn from it.
I'll try to do a follow up post, so far I've been really impressed with the emails I got. They raised a lot of great questions such as what it means to built a career when you aren't willing to relocate etc...
Like the author in his conversation, I found myself reading this article looking for the answer to the question of what I should career-wise myself. doh!
Personally, I think it's the only long-term solution to this bilateral matching problem: engineers can't find good work, employers can't find good engineers. The problem is that most software engineers are indeed unskilled (and therefore few companies are willing to start interesting projects that might make use of skill) because high-quality work is so rare. It's a vicious cycle and open-allocation is the only way I can see of breaking it.
If they're intrinsically motivated, engineers are worth millions per year. If companies left them alone and were able to capture even 10% of their true potential, they'd do better than any closed-allocation shop.
There's an indirection that occurs whereby engineers apply to companies-- not specific projects or work sets-- and (until they've been at the company for a while and can change jobs without embarrassment) relinquish their right to choose what they work on. (A certain once-great search giant is notorious for abusing opacity.) They have no control over how they start in the company, and if they're not especially socially skilled, this will determine what kinds of projects and opportunities they get in the future. This indirection gives a lot of power to middle managers, who don't have the vision or inclination to design and allocate work in a way that would enable engineers to have real careers and improvement, and the result is an industry where stagnation, burnout, and middle-age obsolescence are the norm.
I have mixed feelings about open allocation. I think it's very dependent on the context and the company's vision. @ChuckMcM wrote something very interesting explaining two types of engineers, some who are self driven and have an agenda and the ones who don't. I don't think that as engineers we are particularly good at understanding the business value we can bring to a company and how to improve a product. I think that some engineers work better with a lot of freedom, but most don't. I think that actually a good solid layer of "proper" management is way more useful. A good manager is someone who doesn't get in your way but help you realize your full potential while following the company's vision.
Granted, that's not what most managers do, but I do think that most of us need some leadership, some directions to help us focus. To summarize, I think that we need strong leaders and some flexibility at the engineering level dependent on each individual temperament, the company culture and the team's objectives.
This is a good response, and I generally agree with your synopsis of what a good manager is.
One of the misconceptions about open allocation is that it's a "free-for-all". It's not. It's more like an applied research environment where people are free agents to some degree, but still are expected to follow-- to contribute to something sanctioned-- if they aren't ready to lead yet. Open allocation companies still fire people, but it's very rare, because "intrinsic low performers" (as opposed to people who lose motivation due to dysfunctional environments) also turn out to be very rare.
Open allocation doesn't mean, "You show up and do whatever you want." It means, "We expect you to contribute to the business but it's your right to choose how you do so."
My problem with traditional management is that old-style managers aren't really the leaders that the workers themselves would select, but puppet leaders, chosen from above. Also, when companies give managers the right to unilaterally fire people, or to damage their transfer packets through a globally-visible performance review system, they allow managers to turn into extortionists who force people into subordinating to the manager's career goals rather than doing what's best for the employee or the company. Since middle managers also get a lot of pressure from above in these sorts of companies, that's usually exactly what they become, not because they want to be extortionists but because their feet are to the fire as well.
I think that "management" as a cultural institution is archaic. Leadership, communication, and mentorship skills will always be in high demand, but that's not what a manager is. A manager, from the term's roots, is someone hired by an owner of recourses (capital) to maximally exploit them. People often get angry with their bosses when the manager ignores their career goals, but they shouldn't, because that manager is just doing his job. He works for the company, not the employee.
Managed environments lead to localism, by which I mean the extreme trust (e.g. the right to unilaterally fire people) placed in managers allow an environment where the manager's stated goals (which are often neither aligned with the corporate objective or the employee's needs, but the manager's career objectives) take priority. You have lots of indirection and wasted effort and, usually, morale problems as a result.
Open allocation, on the other hand, trusts people to work directly for the company. There are still leaders and followers, but the employees are implicitly trusted in deciding whom to follow.
Early in my career Steve Bourne gave me useful advice, he said the difference between junior engineers and senior engineers was that senior engineers had an agenda. More specifically they had an execution goal (like write a new file system, or create a product that solves problem 'X') and they worked toward it.
This is a both a hugely motivating and hugely scary thing, its motivating because you don't have to ask "what do I do now?" the direction just falls out of where you are vs where you are trying to go. It is scary because you can find you're goal isn't compatible with any of the company's goals. When you discover that what you want to do can't be done at the company you are working at, you either have to change goals or leave. But its not a 'feel bad about it' leaving it is 'hmm, this isn't going to work out here so lets go somewhere that it could'.
The alternative to having an agenda is "Goofing off and waiting for someone to give you a task." There are a lot of engineers who operate in that mode, do their assigned tasks at an acceptable quality level and without too much schedule slip. They are great to have around because people with agendas and use them to move the agenda forward, but they don't make for very good 'senior' people because they really don't care what they work on, its not their main focus.
It is important to note that you can't "fail" if you're just goofing off, as one of my kids put it, "It isn't procrastination if you don't have anything you need to do." You can however rationalize your low work output by the fact that your management really hasn't given you all that much to do, so whose fault is that? Whereas if you have an agenda, a goal, a destination, you can fail to make it to that destination. "You said you were going to build a game that could crush Farmville, you failed." Reading the blog post from Speck about Glitch shutting down, "we failed to develop an audience." They had a goal, they didn't get there.
Matt's advice that if you don't know what you want, you can't choose reasonably is solid. Start by deciding what you want to do, and pick something that will take a while as early goal achievement has its own problems.