Moneyquote: "Now I understand why older programmers complain about rampant ageism in Tech. Younger workers are cheaper, and programmer productivity is notoriously difficult to measure, so most companies opt for the cheaper option."
Wow that is so spot on, as a "generic" programmer asking $150K versus a "generic" programmer asking $75K ? Easy choice, we'll get two and double our productivity and halve the sick days! I noted that in the medical profession "General Practitioners" made the least, while specialists made the most. They were all doctors.
Specialist software categories:
Embedded Software - bringing up code without an OS, understanding hardware function and tools.
Graphics Programmer - these days understanding 3D programming with Shaders and other features common in todays GPUs
Kernel programmer - understanding the insides of the kernel and how to write code that works there.
Networking software - understanding all of the intricacies of how packets get from point A to point B, and what interferes with that and what facilitates that.
Security specialist - someone who understands what makes programs and systems break and can program fixes for them or ways to spot attempts at exploiting them.
Storage specialist - someone who understands file systems and disk drives and getting data to and from programs reliably.
Yes if you specialize in a specific technology. Not as much if you specialize in something more fundamental like audio DSP. you may have to jump between telephony and pro audio as the markets change, but there will always be work. And the barrier to entry is quite high.
Your working conditions and pay don't depend on how bad ass your specialty sounds, or how technically complicated the work is. They depend on the total supply of people who can do the work compared to the total amount of work that needs doing.
Right, but now you are back to square one. The solution to terrible market dynamics for grown-up programmers is to specialize. The solution to specialization risk is to become a generalist.
I guess you could repeat this until you are 40, then get a nursing degree (not easy!), and actually start your life. :)
There is "specialist" like "Angular JS expert" and there is "specialist" like "web application development". Specializing on a single product is bad, but specializing on delivering applications through web technologies (notionally a more general title) is good.
There are lots of 3D graphics professionals working on video games, which is a notoriously over-worked, under-paid field. To hire 3D graphics professionals:
1. go to a video game hub, like Montreal
2. offer sane working hours
3. there is no step 3.
Notice the complete lack of any mention of salary.
Could you be conflating 3d graphics artists with 3d graphics programmers? The former make 3d models for games. The latter writes 3d graphics systems to take those models and show them on the screen. The former is relatively low skill (as you say, it's a saturated market) the latter is very high skill (linear algebra).
Maybe Montreal just doesn't pay for 3d graphics programmers. Triple what you just quoted and that's what an average gameplay programmer makes in the bay area. 3d graphics programmers make more because an average gameplay programmer can't do what a 3d graphics programmer does. Then again, there aren't as many jobs for 3d graphics programmers. You'd pretty much have to work for one of the big graphics engine makers (Valve, Unity3D, Unreal, ID) or a company big enough to make their own (Ubisoft, EA, Disney).
In Montreal, that's pretty much just Ubisoft, isn't it?
Anyway, the original suggestion was 3d graphics, not necessarily for games. Lots of other fields use 3d graphics as well. I don't know how well they pay, though.
150K is pretty much the average salary for any programmer in silicon valley, though, right?
Autodesk also has a big presence in Montreal, and they do pay better than the video game makers, from what I hear. My OP was just saying that the best way to find 3D graphics programmers was to poach from games companies, not be one yourself. :)
I really don't know the field that well. It's been almost 30 years since I actually worked in the video game industry. Video game skills that old apply much better to the (much better paying) embedded market. We don't use assembler any more, but the experience is actually relevant there.
> 150K is pretty much the average salary for any programmer in silicon valley, though, right?
Pretty much :)
> Autodesk also has a big presence in Montreal
Interesting. I'm very interested in the Montreal job scene because I live just across the NY/Canadian border and have wanted to relocate to Canada for a while now. Unfortunately, the salaries haven't been there for web development or game development.
> Video game skills that old apply much better to the (much better paying) embedded market.
Do you work in embedded systems? How difficult a field is it to break into? I've been thinking about shifting in that direction for my own personal sanity, if nothing else. Doing nothing but building virtual worlds and websites for a decade makes you long for the physical world. I do, at least.
"Many people reach senior software engineer, and then they get stuck. They’ll still be a “senior” level developer 5 or 10 years later. For many, getting stuck is just fine. They like coding, and they don’t want to manage people, and the money is pretty good."
I have a problem with this part. Basically, being a developer and not making it to a managing position is "getting stuck". I strongly disagree with that. Developers and managers have very different roles, a great developer will not necessarily be a great manager. It's like expecting great athletes to become great coaches, and if they don't they're stuck?
Is becoming a manager really a promotion? I would argue that in such a hot market great developers should be making more money than their own manager.
Regardless of salary numbers, becoming a manager is not a promotion. It is changing career tracks. It just so happens that the lowest rung on that ladder is somewhat reachable from the highest rung of the software ladder.
The problem in many companies is that the positions into which a senior developer may be promoted do not exist. Other positions with greater pay and prestige are on other career tracks. Positions like lead software developer, software architect, technical complexity organizer, software developer supreme (with tomato and sour cream), or historical catastrophe repetition avoider might not be available, or not available to internal hires.
They could exist. Several people here could probably argue a very convincing case for them. But they don't.
And the reason is because certain people still don't see business software resources as anything but costs to be managed down. Just yesterday, a member of my own household wanted to extract an image from a PDF, crop out the whitespace, and post it as a JPEG to a website. This non-technical person could have spent a whole day--or more--figuring this particular problem out. Having a technically knowledgeable person on hand shortened that time considerably. (I could have done it myself in seconds, but I didn't want to assume responsibility for doing that on demand for the rest of my life.)
The sad thing is that I got no credit for the time saved. I instead got grief for not being instantly helpful. I wasted someone else's time, because I didn't anticipate the need, so that SumatraPDF and Paint.NET or GIMP would be installed on their computer already. I wasted someone else's time because I didn't drop what I was doing immediately, so that they wouldn't have to wait for me to finish eating, or, horror of horrors, actually spend a few minutes to try to figure it out on their own.
That's the problem. The whole party complains, "Why didn't you just call on the Eagles again, Gandalf? We could have been done in three days!" And then when Radagast explains about the dearth of giant fish in the magical appropriations budget, no one listens to a word he says.
The people with control of the money don't quite seem to grasp that software is yet another product, among many, where you get what you pay for. No matter how magical it may seem, you have to put more money into it to get more value out of it. People get "stuck" at senior because too many companies have determined that threshold is as much software talent as they need, and that paying for more would be wasteful.
1) does not understand the time value of money
2) does not care about the time value of money
There is no value placed on the reduction of future expenses- for example, not needing to train another new guy when a senior person leaves, or having a simpler, more reasonable codebase that is harder to introduce bugs into.
I think this is because people (both minions and management) switch teams or jobs too quickly for these savings to become apparent, and therefore there is zero incentive to do things right. It's monkey-patch some crap together, keep it running at the absolute bare minimum, and get promoted and someone else has to deal with the problem.
I think he means stuck financially, not career wise since they have chosen to stay as a developer.
His answer to how to move ahead financially is to specialize. So maybe that is the general advice is to find something to specialize in or you are just seen as a commodity by management. If you are a commodity (e.g. general web developer with X years) then you may not get higher rates.
I agree with the general idea. You can remain a "simple" developer and still ask for more money if you specialize and bring significant value.
I disagree with the idea that moving to a management position means that you get "unstuck", especially financially. To me, becoming a manager is pivoting or branching out, not specializing. And as I stated, a manager should not necessarily make more money than the people they manage.
Do all NFL coaches make more money than their players?
I guess this is what bothers me the most. This idea that a manager should make more money than the developers. Salaries are in function of demand/supply and the value that you bring to the table, if it's easier to find a manager than a developer then the developer should make more money.
> Do all NFL coaches make more money than their players?
on median, yah they do. you're thinking of the BIG winners who get 10/15mil or more a year (+ endorsements), but most football (and baseball) players don't make nearly that much. most NFL coaches are in the 2-3 mil range, w/ some much higher (10-15mil)
Then you've known a manager who was mature and professional enough to place the welfare of the company above her own ego. Such managers should be the norm; unfortunately the actual state of affairs is that they are rare and precious. I hope her employer realizes how lucky they were to find her, and does whatever it takes to make her happy enough to stay.
The management role is different and in most large companies is higher valued and more highly paid because they bear the brunt of whatever happens, good or bad, from their team.
Depending on the level of management and the systems involved it could also become involved in audits, regulatory matters and potentially handling confidential information for the company. Think of it this way: a manager of a team of 10 developers probably has a budget of 1.5 - 2.0 million dollars in just headcount, maybe higher. If your average developer on that team makes $100k, isn't it worth it to have the manager make about 20% more because of the responsibilities?
"specialize" is good advice to get paid more. Specialization is why wall street people get paid so much.
There are typically only a handful of people with relevant expertise trading [XYZ esoteric product], and when a company wants to enter that new business line, they have no choice but to settle for someone inexperienced or pay up for specialization.
Choosing the proper specialization is a different story...
The article agrees with you that entering management is a cop out. If you want to keep growing as a developer, you need to specialize, is basically what the article says.
It's certainly opened my eyes; I'm very much a generalist, but I can see how, to get beyond a certain point, you need to specialize in something where quality really matters over quantity; you want to be able to provide value that two lower-paid people with twice the amount of time can't.
Security sounds like a great specialization, for example: a single great security expert can save a companies hide (which may be worth millions) in ways two average programmers won't.
UI/visual design sounds like another case where that's true. Look at Jon Ive. Having the product look better can mean you reach more people, which amplifies revenue.
I'm sure there are other valuable specialization areas where your expertise can multiply across a large organization.
Security definitely pays more than web dev, but there is still a ceiling.
In fact, one of the things about security is that the benefit is completely constrained by how much you could possibly lose. You can't really create unbounded through security the same way you can through development. And in most scenarios where you are tasked with doing preventative work, it is hard to prove that you're really delivering value when breaches don't happen, or even if they do. The recent industry shift towards detection & response resolves this a bit since you can show all the things you have found on your network. But it's hard to use these metrics correctly (is more malware found a good or a bad thing?).
I've been trying to figure out how to make myself scale as a security expert, and the answer I came to was that I needed to work on software/platforms that could kill classes of bugs at a time, but it turns out it can be very hard to turn experience into software.
You can certainly have a lot of impact on offense as an exceptional IC, as evidenced by the 6+ figure .gov market for exploits, but its less clear to me how to have a big impact on defence (I say this as someone who has never worked defence anywhere, so this might just be my inexperience)
I agree with the premise of this article (if you wanna get paid, specialise) as it strongly echoes my own, perhaps limited, experience.
I am a generalist. I like being able to solve problems across a wide spectrum of fields. Working at a startup for the last three years has given me plenty of time for that. The flipside is that I have not had much opportunity to specialise. I take pride in being comfortable diving into anything. However this has meant I don't have DEEP knowledge of a specialist.
At a previous job, I was able to dig really deep on Solr and build some expertise. In the intervening years however most of that has become way outdated.
Also I've found (in an admittedly limited sample size of interviews) that jobs seeking "full stack" developers tend to really be seeking someone to fulfill a specialised role but ALSO be comfortable moving up and down the stack as the need arises.
So obviously in my next job I've been looking for more established organizations where my opportunity to specialise in something I enjoy is greater. I think I've found one and am quite excited about it.
I know many companies who would rather have someone like you. Someone who they can give a problem to and they know you can solve it because of your wide knowledge base. "Sorry we can't give this problem to Bob to solve because all he knows is tech X." This is worth a lot to some people.
It's also not that you know many things, it's that you can learn other things easily and quickly. (without training)
The hard part is finding the right place to work at. Many large corporations are looking for a square peg for a square hole.
Exactly on all that you just said. There are places but they are hard to find. The intersection of "looking for a generalist" and "doing interesting and/or meaningful work" is tiny.
Additional problem for a senior full-stack devs is that you'll usually be assigned at solving various tricky issues, and even when you get to dig deeply into something and get a decent expertise on that niche, it's very likely that as soon as you setup everything you'll have move to work on something else, usually completely unrelated. After a few months of working on something else you'll almost completely forget the most of those little insights and details that you previously learned, and you'll be back at the start...
Unfortunately, the author does not offer much to actually answer the question posed by the title.
He does complain about the whiteboarding during interviews, and would prefer to be taken at his word about his past experience. As an older engineer (much older than the author, I might add), I can understand the feeling; however, in my years of experience, I have seen too many people coast on their former laurels and contribute, basically, nothing to the day-to-day business of the company. They can talk a mean talk, but never deliver anything of value. They sure are quick to jump on a hot idea once it's proven out and take credit, though!
So is whiteboarding the best way to higher people? I don't know; but I think it is a good way to keep the slackers _out_.
I don't like whiteboarding interview, and I recently "failed" one. However, I can see the value in them to the employer.
To pass my whiteboarding interview, I needed first to review data structures and algorithms. It had been a while, so I went back to the textbook and got to the point where I could write mergesort, quicksort, dfs, and bfs, as well as do various permutations of sets (the sort of thing that you draw on when they ask you, for instance, to print all arrangements of a string), and could do this instantly (not by rote, through understanding, but "memorized" in the sense that I didn't have to reason through it, I could just write them on a whiteboard). Once I had that solid, I bought a copy of "Cracking the Coding Interview" and started working through the exercises. My goal wasn't to memorize, but to get to the point where I could answer medium to difficult level questions accurately on paper or whiteboard (no typing, no compiler) in 45 minutes or less.
I was unable to get to that point in the time I had to prepare. I should have asked for more time - I scheduled my interview for 3.5 weeks away, and I did devote a substantial amount of time to study. However, I lack the ability to get up to speed in that amount of time. You really do need to be razor-sharp at the whiteboard, and I just wasn't there. My guess is that I could get there in 3-6 months, studying about 15-20 hours a week. Others may not find this as difficult.
There was also a point in my life when I could probably have done this more easily. I have two kids, I'm married, I have a full time job, and there are a lot of demands on my time. It's far more difficult for me to shake 15-20 hours loose a week than it used to be.
Honestly, I do think that the ability and willingness to prepare for and pass an exam like this probably is a very strong indicator of success in the kind of environment where these developers will be working. In short, the constraints on my life and my own personal limitations that make it difficult for me to pass this exam would probably have reduced my value to an employer. They either need someone with more talent and an ability to get into this sort of form on shorter notice, or someone with more time who is willing to spend it on this sort of thing. I'm not happy about it, but there you go.
My broken record: companies are generally free to do as they please (within the limits of anti-discirmination laws, and so forth), but they should stop talking about a shortage of developers if this is how they wish to hire.
I agree with you; I'm one of those who suck at whiteboarding. But I can't think of a better way to weed out the slackers who ride on the coattails of others. Trust me, I've been burnt many times in my career. I've seen presentations of my work with other people's names on them; I've seen patents published on my work; I've seen top-level "distinguished researchers" take credit for the work done by my team.
Generally, if the interviewer relies on other cues _along_ with whiteboarding (like working on the problem with the interviewee in a collaborative manner), then it can be a decent signal.
In other words, your worth is equal to your replacement cost. Specialization helps because of demand/supply dichotomy.
There is another option; grossly unpopular, but I have to lay it out: make a career in startups. You'll eventually land with one or two that work out very well. That may not increase your yearly salary, but it increases your overall payout over a decade, because you'll get a windfall or two.
How? As you keep working for startups, some will fail and some will succeed, in different ways. Eventually, you'll learn how to recognize the more promising ones. Are there any guarantees? No. But there are no guarantees in any path.
[About me: Software Engineer by education and trade. Been in the valley for several years. Early employee at Box, left last year as their Director of Engineering. Now run http://InterviewKickstart.com. We've trained a lot of people on how to prepare for technical interviews, the right way, the no-shortcuts way]
It was pretty much - whiteboard interviewing is stupid. BUT, if you for some reason value it, recognize I already went through a much harder version of it and passed." That's entirely reasonable, and not entitled, it's just facts.
I think having Google on his resume did help him in getting the interviews (as opposed to a stack of resumes no one ever called back), but once you get the interview, they still make you go through the same format as other candidates. Hard to compare candidates otherwise.
It's unclear to me if that was his message or if he was trying to get across the more nuanced "my experience at Google should be a signal about my qualifications"
The author definitely stressed this a few times in the article.
To a new employer, the fact that he "made it through a Google interview" honestly doesn't mean much. Even Google interviews are wildly variable, and more importantly it doesn't in any way indicate that the candidate is a good match for whatever job he/she is interviewing for.
Talking about products and designs he had worked on in the past, at a technical level, though, is crucially important, and the author also pointed out they failed to do that (or at least I think he did?)
Anyway, getting a job at "one of the big employers" honestly doesn't mean much - there are plenty of people that get rejected that probably deserved a hire, and plenty of of people that get hired that aren't up to par. What matters more is what the candidate did while he was there.
It's sort of funny that he points out how broken interviewing & hiring is, but then also says that because he got hired by Google, he should be treated differently.
> Is it really that hard to manage your own health insurance plan and deduct taxes?
No, but it's hard (for many) to actually find work then negotiate a price. And for certain types of problems that people want to work on, there won't be many non-employe openings. Dealing with large bodies of sensitive data, for example, would be one I'd think it'd be harder to find consultant positions - not impossible, but more difficult.
I've been working as a consultant for a number of years and I think the biggest difference is the inconsistent salary. As I recall there was a recent poll someone posted on HN and that was the main reason people don't go into consulting. Consulting also suits a certain type of person because it's a hustling game. You can always make more, but that means there's no light to flip off at 5pm.
no, it's not that hard. what's hard is dealing with inconsistent income flow, lack of stability, and, most relevant to me, the psychological block against taking vacation or personal time when doing so has a real and immediate cost to my paycheck.
I'd rather make a little less at a job that has vacation benefits, than make a little more at a job where every day off comes out of my salary- because I recognize that I'm a human with certain hangups, and this is the way I can best optimize quality of life.
I recently blogged about this similar topic (http://jobtipsforgeeks.com/2015/05/20/moremoney/) and listed a handful of ways to avoid what I referred to as a salary plateau. The basic list was change jobs, get promoted, ask for a raise, brand additional benefits to your hire (network, visibility, etc.), consult/contract, moonlight or add revenue streams, and specialize.
I haven't read "Career Superpowers, but it sounds like Whitaker did almost all of these things - moved between Google/Apple, became a nationally recognized authority, specialized, added a revenue stream (book), and got promoted to VP.
In the end, your salary is roughly proportional to the number of people you impact. Management is an obvious path, since you directly control a group of people. But senior engineers can give technical direction and influence a lot of more junior engineers without having to be formally their boss. Also known as the technical track at companies such as Intel (principal engineer -> fellow).
The other thing that's somewhat related to this is the old "X years of experience means this range salary". Nothing like that cold, hard statement to remind you that the person across from you sees you as nothing but a cog or entry in a balance sheet. It immediately puts everything you've done, no matter how incredible/complicated/significant, down as if it's irrelevant.
That's capitalism. The sooner you stop thinking of your boss as your buddy and start thinking of the employer/employee relationship as a business transaction of hopefully mutual benefit, the better.
There's more than a hint here. It's not hard to hire competent people and then give them space to grow. As engineers, that is what we want, to grow, challenge yourselves. And it is the only way that experience occurs. If you as a company are not willing to invest in that, don't be surprised when people don't walk in your door and agree to do exactly the same things they've done 5x already, with no opportunity for growth.
I'll take a job that offers great opportunity and a mediocre salary any day. The vice versa not so much.
Just because you are specializing does not mean there is not room for growth of your knowledge, it just may not be in programming manner.
Consider specialization in say Expert Systems, you get to learn immense amounts about each domain which you are developing expert systems for, but I can understand employers wanting you to have a firm base in expert systems before hiring for you such a job.
The same can be said for 3D graphics, real time simulation software, and most other types of programming you could specialize. Just because you know everything there is to know about making realistic vehicles with 3D graphics does not mean there isn't plenty for you to learn about making realistic 3D dinosaurs and the nuances necessary to make them look amazing. You may not always be given tasks that require you to learn and develop new skills, but if you actually care about challenging yourself and learning you can generally find a way to incorporate challenges and learning new things into your job. You just have to be willing to put in the initiative to avoid forcing problems to be solved with the solutions familiar to you, and put in initiative to try new things learning enough about them to be able to advocate for their use when necessary.
TLDR: Just because the job doesn't force you to learn and be challenged, doesn't mean someone who wants to can't learn and challenge themselves on the job.
Key takeaway: You should become an expert in a deeply technical software specialty. Also, bounce back and forth between Google and Microsoft a few times.
I second this wholeheartedly. Unless you are specialized in some vertical with locally or nationally recognized skills, you are going to hit the ceiling. I'm not commanding 200-300K salary yet. But story is true for someone earning 150-160K. It seems like 150K is the beginning of the ceiling.
From a company's point of view, it's legit to not offer high salary for individuals with generic skills and experiences. They can always hire 2 at the cost 1 engineer. Then pay thru slower productivity, buggy software, inefficient architecture and so on.
I'm much less stressed about this after I realized it doesn't take more than 10-15 years of saving to become financially independent. It's seriously stressful to know you have to find a career that can sustain you until 65. Many people seem to have problems fairly early in their tech careers, with rampant ageism etc. So I plan on being FI by 45, preferably 40. So liberating to know my current job could be my last.
We should have a discussion about default SQL connectivity limits and the problems with using persistent connections.
There seems to be a ripe opportunity to make something similar to Amazon RDS, except with automatic scaling. The current version of RDS presents the user with different instance sizes and doesn't automatically scale during high CPU loads.
Security. Also 'growth hacking'; I'm not sure if that will actually up your salary, but knowing "everything" about SEO, analytics, a/b testing, email marketing, blah blah can definitely specialize you within an org.
EDIT: Employers also hire for 'tech stack' specialization, even though it's usually not necessary. For example, I'm only really recruited because I have demonstrate-able Rails expertise. In reality, I've also worked in Node.js and Java environments, and I'm pretty much just as productive after a few weeks.
"Growth hacking" definitely increases your salary, but it's really in consulting where you can leverage your marketing skillset to get a much higher rate (obligatory patio11 blog reference)
You may not realize it, but a lot of web developers still only know things like ASP, .NET, ColdFusion, PHP, etc.. So knowing modern languages and APIs like Go, Ruby on Rails, Python, NodeJS JavaScript, etc. is already a step toward specialization. Another frequent ask I see from clients is knowing modern streaming methods like Web Sockets, Comet, Meteor, etc. which is another level again. Past that their is mobile development, which can be done in HTML/JS on platforms like Cordova, and also scaling and deployments. It's often different to write something that can run on hundreds of servers at once than a single web server, for example.
You can always specialize by domain. It's not too hard to take general web development experience and apply it to finance for a nice pay raise. You can do even better by transitioning away from web stuff to "core" parts of financial systems like trading or risk systems.
Many enterprise organizations have a build/deployment process that is archaic, error prone, and takes lots of time.(in terms of man hours, and deployment latency.) A build or release engineer comes in and takes that process and transforms it into the press of button. Basically just build/deployment automation.
But the benefits to an org are vast for just a couple of months of the build engineers time.
-Deploys much faster deployment, shortening the feedback loop between end users and development
-Is far less error prone. The manager doesn't have to explain to his boss why development started deploying last night at 6pm but now it's 10 am the next day and the software still doesn't work.
-No longer has to pay someone to sit there and baby sits builds all the time.
I've worked with a couple of release experts and they've always been extremely valuable.
Not the original person, but in any organization with a non trivial amount of code needs someone that is really on top of managing how the applications build and how dependencies mesh together. There's many tools to learn and leverage (in java you have ant/ivy, maven, gradle) and can easily take up a fairly large amount of time to organize. If done properly it can also prevent certain project failure.
Nice writeup. I think that the final message to be specialized is great, and I'd underline that this should come after you proved that you master the "general knowledge".
This is clearly true for the author, he can specialize on 3d graphics after 3y web+mobile dev at Google and 3y in a startup, but the assumption that one could start specializing in 3d graphics from 0 imo is wrong.
All great painters were highly specialized, but all of them mastered the "general skills" in painting before taking their art to another level.
If financial side is so important, why not specialize in fintech / quant software development?
No special education (except for the general interest in finance and some math — easier than in computer graphics) is needed, and salaries are quite attractive.
The downside is zero work-life balance and huge stress levels, but everything has its price.
Wow that is so spot on, as a "generic" programmer asking $150K versus a "generic" programmer asking $75K ? Easy choice, we'll get two and double our productivity and halve the sick days! I noted that in the medical profession "General Practitioners" made the least, while specialists made the most. They were all doctors.
Specialist software categories:
Embedded Software - bringing up code without an OS, understanding hardware function and tools.
Graphics Programmer - these days understanding 3D programming with Shaders and other features common in todays GPUs
Kernel programmer - understanding the insides of the kernel and how to write code that works there.
Networking software - understanding all of the intricacies of how packets get from point A to point B, and what interferes with that and what facilitates that.
Security specialist - someone who understands what makes programs and systems break and can program fixes for them or ways to spot attempts at exploiting them.
Storage specialist - someone who understands file systems and disk drives and getting data to and from programs reliably.