This assumes 'web development' refers to web-based applications, not just informational webpages.
This is likely to be an unpopular opinion to many, but I don't see the huge barrier here.
I've been working as a software developer for nearly 20 years now, going from games programming to business apps to web development and machine learning. In that whole time, I can count only a small handful of times when I've ever had to exhibit mathematical skills more complex than trivial algebra. Oh sure, in college, they made me write my own compilers, I had to write my own vector math routines for my ray tracer, and so on, and I consider these valuable learning experiences. However, in the real world, where I'm employed and make money, I use software libraries for those sorts of things.
When it comes to data structures, the languages of employers today, java and c#, provide me with the majority of structures and optimized-enough algorithms to manipulate them. I don't have to do a big-O analysis and determine if my data patterns will be better served by a skip-list than a quicksort, because we just throw memory and cpu at that anyway!
The point is, if you spend 1-2 years learning to write software - not computer science theory - you'll be ready to enter the workforce. Sure, you're not going to be someone creating those frameworks, you're not going to be an architect, but you'll be able to use them. A few years of real world problems and google at your finger tips, and it's likely you'll have learned enough to start tackling those harder problems.
Here's a list of what I'd prioritize before computer science theory, in regards to employment:
- Proficient in SQL and at least one database type
- Familiar with IDEs, source control, bug/task trackers, automated builds and testing, debugging tools and techniques.
- Ability to work in a group software project.
- Exposure and participation in a full blow software development life cycle (SDLC) from reading, writing, evaluating requirements, coding, debugging, QA, unit testing, the oft-overlooked documentation, etc. Include at least something waterfall and something agile-ish.
- Expert with HTML & CSS, javascript, and awareness of javascript libraries and frameworks.
I don't think I need to explain the value of any of these, and these practical concerns trump high level concepts like discrete mathematics or heuristic design for the entry-level developer.
1. Remove a danger to society 2. Acting as a deterrent 3. As a punitive measure (strongly related to item #2) 4. To provide rehabilitation
To date, analysis[1] has shown that never in the verifiable recorded history of crime and punishment, has any prison, anywhere, ever had a non-negligible impact on recidivism rates. Some pre-established percentage of people continue to commit crimes after a jail sentence, regardless of changes to enable rehabilitation. Education, trade skills, access to medicine & counselors, 'nice' quarters, access to games and exercise, work release programs, etc - no appreciable impact.
Even punishments like public shaming (very big in medieval times) have no impact on the average number of individuals willing to commit the crime again. Even torture (short of permanent harm) has no real lasting impact, though it does often result in the individuals using more effort to reduce the risks of getting caught.
In short, prisons do not rehabilitate prisoners, and they never have.[2] [3]
Pretending they they do, or can and then making screeching noises when they fail - or worse, throwing money at them so they can try yet another fad get-lawful-quick program is just irrational. Blaming the system for not working as one expects only shows the value of those expectations.
Here's the takeaway: The only things prisons are good for is removing a danger from society and providing a punitive threat as a deterrent - and even that last one has only limited impact.
For those interested in constructive comments, the fix is obvious and simple; spend that money on fixing those parts of society that give rise to crime. Focus on education, focus on a two-parent household, focus on employable skills, and so on.
[1] - oy. Google it, read some books, and take a few criminal justice classes. Personally, I'd start with this book, http://www.amazon.com/CRIMINAL... because it's a fascinating read, but your mileage may vary. [2] - though there's nothing to say they couldn't eventually. Maybe cryogenically freeze them and subliminally imprint upon them the desire to knit when they're stressed? Could work. [3] - Technically, life in prison works, in that they don't commit any more crimes, but the important point to note is that rehabilitation programs STILL have no impact on this rate. So it doesn't count either.
Were you talking about the daily news and world events? The political history of most existent countries and almost assuredly the history of those that no longer exist?
Sure, there's less metal golems and tricksie lords, but what you're describing is how the world actually seems to work. You can't shelter kids from that, and if you do, the result will be an individual incapable of dealing with reality. It'd be like living on the "Small World" ride until the age of 12 and only then being released into the world. That's a hit to a psyche.
In the timeline of a pre-post-scarcity world, we have a population of unemployed individuals which will grow as job growth - especially unskilled blue collar labor - flattens or becomes regressive. Until we're in a post-scarcity world, however, these individuals will be in a society that requires money for things like housing, food, shelter and clothing - whether it comes from the government or not.
At some point, the government simply won't be able to provide; their budget will be scraped too thinly over the nation. This is one of those situations where we'd be hard pressed to iteratively progress - it's a "flip the switch" sort of thing. Doing otherwise will create a massive underprivileged underclass, who are likely to be quite frustrated by their life; no job or job prospects, subsistence level living, inability to focus on personal goals or desires...
Two things can happen at this point:
Those who have focused their lives on acquiring wealth, the super rich, the 'haves', the ones who are most defined by the benefits wealth has brought them, they can all become completely selfless altruists, and together, agree to reduce their primary value to near zero by agreeing to, effectively, eliminate money in the spirit of pure socialism. Thus, utopia is achieved.
Alternatively, they will not do that, and at some tipping point - say, 60% unemployed - there will be a revolt that destroys the current economy, form of government, and so on, settings us back to 0 on the cultural progress - and likely technological/engineering scale, but removing the then-existing artificial constraint that says work=money.
I really don't see the first happening. Do you? Am I overlooking some important alternative choice?
In actuality, I think we're headed towards a more corporation-centric outcome, as predicted by many of the darker sci-fi novels out there, rather than a post-scarcity world, but hey, that's just my opinion.
It was repeated several times in the article; she was worried about 'media' on the device being posted to the internet. That it would be a 'voyeuristic invasion of privacy.'
You all realize what's being said here right? I don't think I'm speculating too much here; she took naughty photos and/or video with her glass. That's why she was so worried. Not the cost, nor her email (which she changed the password on after the fact), nor much of anything really, aside from the 'media on the device'. This wasn't her worrying about someone being critical of her lunch choices or the amount of mayonnaise she uses. She recorded some pants-off time and didn't want to be embarrassed.
At some point, society needs to get a little more aware of their own situation. Anything you record in digital media may very well be persisted indefinitely, and seen by others. This could be due to theft or cell phone hacking or an upset significant other. This goes for tweets, for emails, for forum postings, for photos, for video. If it's electronic media, now a days, you can bet the/a government has access to it if they want it at the very least.
There's a really easy way to avoid this though; learn to never record something you don't want other people seeing. It's not that hard. Alternatively, make your peace with it if you choose to do so anyway.
So the problem seems to be that ICANN is an american corporation, and thus subject to the laws of the US, and that in turn, could be used against foreign powers?
The solution then is to 'globalize' it? Where is it going to be 'globalized' to? Which country could it exist in where it would have immunity to any laws and act with impunity in regards to them?
When I see the complaints against it by China, Russia, the EU, and so on, they're always advocating more restrictions, protection of their interests. They want the ability to blacklist sites that talk about their politicians, that discuss unfavorable religions or religious rights, that cover alternative lifestyles such as gay or transgender, and so on. They want to do it without arbitration, automatically.
What they really are complaining about is that they don't have absolute control over it, and they want it. Everything else is just a pleasant lie or deliberate misdirection.
Let's be fair; the US has more than it's fair share of faults, but our definition of freedom is still incredibly wide reaching compared with the vast majority of countries in the world, and we're big enough to make it hard to push us around with political power alone. That's the big problem they're seeing.... besides, use of the current DNS registry system is entirely voluntary. There's nothing to stop someone from coming up with their own, like the TOR network did. If it's better, people will use it over the current one. Though, I think they realize that any replacement that is more strictly controlled will never be considered 'better', so they need to subvert the current one.
Let's assume the programmer is average. They write some good code, some not so good, they have a certain bug rate. We have to assume that even the best programmers introduce bugs here and there. If you assume that no bugs will be created, or will develop later on - you are not fit to be a manager. Bugs happen.
Knowing that, a good project manager is going to create a system with peer review, with automated and manual testing, both unit and functional, frequent project sanity checks and of course, reasonable timelines and room in the schedule for refactoring and teardowns, not to mention some amount of signoff from those who okay'ed the project and approved each step.
If they won't provide that - it's on them. If they can't, it's those above them, and so on. That's the way it works; those above you in the chain need to provide an environment in which to excel, if they expect excellent results.
The downside, of course, is that it costs time and money, even if you start with exceptional people - not just average ones.
Is it about the money? Is it about maintaining a professional relationship? Having a steady job? Completing a challenging assignment? Learning a new skill? Working on an app that will eventually be released as a finished product instead of a never-ending series of bugs or rolling feature updates from an agile process with no end or sense of accomplishment?
Figure out what you want out of it, and then take the steps to achieve that.
That aside, I personally don't place a lot of value in seniority for the sake of seniority. That someone 'respected' worked on it means nothing at all if the product is crap.
At one workplace, I acquired a project much like you did; our three architects had all worked on it personally, over a 10 month period. It took me 2 weeks to get it running on my own machine locally - so much had been hardcoded; pathnames, machines, pre-existing sql connections with expired logins on machines only accessible from within a cluster. It had unimaginable complexity, built so that they could 'throw it over the fence' to the ops team, and supposedly let them own it, and update it for when our software changed in the future. They would only need to learn java, sql, our internal table structure (undocumented and continually changing) and SSIS too. It didn't help that the software still didn't work yet. It'd run for 2 days and then drop a 40+ gig coredump.
Yeah, I complained, and complained, and everyone just said 'make it work', so I talked to the end users and product owners, collected requirements, and wrote the whole thing from scratch as a command-line tool in about 4 hours. I had to spend 2 days making a power point presentation to demonstrate how it was functionally superior (cpu, memory, bandwidth, throughput), easier to use (2 pages of documentation), well commented and structured, had no 3'd party dependencies (so no extra $$$ for database licenses and such), and how it followed the company statement and policy (one of which was explicit; 'Do not just "throw it over the fence"').
I got a lot of positive attention from that. If recognition is your thing, that may be the way to go.
When I eventually quit that job they remembered that I got stuff done, and done well. So now I work for them in my spare time, making 3x my previous salary, on discrete projects where I call the shots and they just need something that works well without dealing with months of crap in between. So, I eventually got money and responsibility too.
Who ends up writing these descriptions? The programmers? Their team lead? The architect? No. They just provide the job requirements.
It's your HR staff, your middle and upper management. They come up with corporate statements like "Engage our customers and employees with passionate, best of breed solutions and lead the mindshare" and that jumble of words has real meaning in their world. Now when they issue a statement, they're going to be asked things like "Does this grow our mindshare? Can you put a metric on the net 'passion' of this business decision?" This leaks through into their job descriptions among other places.
You've probably been exposed to this phenomenon before and come away confused; this world is about 90 degrees away from the norm - just enough suck you in with familiar words and phrases which only reinforces the alien nature when they're used to mean something totally other.
You ever get the question in an interview, "Where do you see yourself in 5 years?" - that comes from the same mindset.
Look at it from a business standpoint: If your company makes great sprockets, and you consistently make a million dollars in sprocket sales... you've failed as a business. The metric isn't how much you make. It's not even how fast you make it. It's how fast you increase the rate you make it. So when they hire execs, they want them to say "in 5 years, I want to be the division manager of the newly created south pacific department, that I've built from the ground up" - or something. They don't want them to say "Valued for my professionalism, expertise and domain knowledge, doing the same job I've always done." That means they're somehow broken, that they just don't "get it."
You'll probably note that when they bring in non-administrators, those folks don't ask those questions unless they have no idea what they're doing hosting an interview. On the other hand, if the majority of your company is focused on high pressure sales - real estate, auto, etc - you'll be exposed to it more and more, even in support jobs like IT, and even from other engineers.
This is just one of those cases. If you're not in sales, marketing, middle-to-upper management, it's usually safe to ignore the parts of the job description that don't relate to your actual job. They likely have nothing to do with it.
I've worked with an industrial psychologist for quite a while now - they focus on things like pre-employment screening, improving employee efficiency, hiring (both from the company and candidate viewpoints) and so on.
One of the things they'll point out is that not every employee has the same motivations or same 'best' work environment. You're going to get some that thrive in an open environment, and others that don't. You'll get some that spend more time chatting, and others that use collaboration to become more productive. Unfortunately, there's no silver bullet to say which is best, and office layout is only a small part of that anyway.
However, you can do an employee survey (by which I mean an actual scientific survey with statistical analysis, not just a slopped together 'do you want open seating yes/no' form), and determine which environments work best for your best workers and average workers. This gives you the information you need to make a good decision. For example:
- Does it make sense to change the environment to make the average workers more efficient? - Alternatively, should you change the environment to make your star workers most efficient and expect that the environment will help turn your average workers into stars (and weed out the underperformers)? - Are your tasks inherently better suited to solo efforts or team efforts? - Are your employees good communicators?
Of course, most of this is moot.
There are only a few cases where an immediate manager has the ability to radically restructure the work environment - those decisions are made higher up. At the same time, those higher up are making decisions primarily on immediate financial costs - so cubes and open offices are much more cost effective.
Personally, I'd rather have a small office with complete control of the light and temp, and don't have a chance that someone's looking over my shoulder.
My problem is that I need a remote windows access solution that doesn't appear to have required me to go through extra effort to circumvent security restrictions. While my department and local IT people could care less, and in fact actively enable me to do my job, corporate might have an issue.
We are ~technically~ not allowed to download software and install it (in fact, links to.zip,.exe and a host of other types are denied), and standard RDP, VNC and similar ports are explicitly blocked. Logmein handled everything via the browser and browser dialogs, so I could claim ignorance, and required no special network configuration.
Sorta sad to see it go. I liked having plausible deniability.
We all know innately know this, but sometimes it's hard to avoid getting caught up in a religious debate about the apples-to-oranges details.
Once your language is at least complex enough to write a compiler or interpreter for itself - that is, it's no longer a toy language - it tends to be more or less capable of everything every other language is capable of. Sure, it might not be the best tool for a given job, but they're all generally the same aside from some syntactic sugar.
The more important thing is the metrics we can track are directly correlated to a person's experience with a language. The longer an individual spends writing in a language, the less time it takes to complete a program, the less errors it contains, the severity or error incident goes down, the number of security issues is reduced, it is better optimized for the platform, uses less memory or cpu, has more features, etc.
Those are reliable statistics and the trend holds true regardless of the language. That has real world value far above and beyond arguing whether whitespace should be part of a language, or if it uses smalltalk or c++'s object models, to name a few items I've seen above.
The end result; whatever language you tend to use the most is going to be the best language for you to use, often even when it's not a good fit.
You ever duck your head down, put the earphones on, and cut a swath through the feature list, barely realizing that you've missed lunch and it's already 7pm? You'd leave but you've just thought of a really elegant optimization routine and it's so obvious, but you need to see it work before you go?
A good manager can provide coordination between project members, act as an insulating buffer between customers/requirements and devs, fight for resources, push back against poor requests and push forward agendas like refactoring, internal tool development, or library updates (ie, the Good Fight). Really though, this boils down to the simple goal of letting the devs do their job.
Without all the other context switching, we're free to descend into code mode, shut out the outside world, and make beautiful code that we're proud of. In practical terms, that means less bugs, better security, efficient code, lower cost of maintenance, and so on. That's the biggest thing a manager can really provide; an environment where we're free to excel.
I used to write financial software for a living, including ATM driving software.
I realized, after a while, that I had certain preconceived notions about the sort of software and hardware that is running on these sorts of high profile, high risk systems. Obviously, the software will have been made highly secure; redundant checks on every action, code signing, etc. It'd likely be running a custom operating system that was built from the ground up and booted off a (P)ROM. The case would be just as impenetrable, with a separate compartment for the computer itself, requiring specialty equipment so that could only really be opened at the point of origin or in a manner certain to destroy the innards - and certainly not in the field.
Right? I mean, any of us can think up a set of reasonably secure basic premises from which we could build a system like this out of.
Imagine my surprise when I found out that half of the ATMs out there are just running off the shelf windows desktops, with the original demo software still installed. There's no real optimization, no cleanup, no limited boot, nothing; it's just a desktop machine jammed in a vending machine with a custom card & cable for driving the mechanics of the ATM. Sometimes they're even in the original manufacturer's case (though usually they're just the board). I've also done some work on vending machines, and I can tell you that they're often better made!
As a software developer, one of the things I was shocked to see was that security for ATMs was almost entirely focused on the physical. There's little to stop someone from hooking up an external line and sending approvals or just do basic proxying - most of the data is sent in the clear, just skim it, or to update the system with a cd or usb if you pull the front cover of the ATM off. Many times, you'll find someone left a keyboard and mouse behind in the unit because it's a pain to always carry your own when doing updates or what have you.
This follows the same basic trend in the rest of the financial systems I've seen; physical security is very high, software security is relatively low. When it comes down to it, most companies place a focus on tracking transactions rather than securing them, and rely on constant manual review by staff to detect problems (that's why banks close so early - the folks who don't run the registers are in the back doing the day's reconciliation.
Re:You mean it has ever been alive?
on
Is Ruby Dying?
·
· Score: 1
It must be your scope of work that you haven't heard of it as a option for a given project, or that no one uses it.
I'm often put in the architect position, or at least, the seat right next to them, and Ruby has frequently been brought up as a contender. It's not being brought up because it's especially good, but rather, it's evangelists, while small in number, tend to be loud in voice. It's what I call a 'toy language', in that it's fun to play with, and the kids especially seem to like it, but very few people with real experience consider using it for mission critical software. So there's always an individual who says "Have you thought about ruby?" - and they tend to get shot down by people who are driven by project requirements rather than the emotional appeal of getting to play with a new toy.
So, it is out there, people bring it up from time to time because they've heard non-specific good things and don't want to miss out on a new trend. Very few orgs use it for any large projects, though you can find a number of small-scope applications (primarily web apps) using it - mainly as the result of hobbyist pet projects, as you said.
Yup. I generally ignore the obviously mass-mailed spam recruiter mail. There's no value in it, those recruiters will not do anything for me, beyond print my resume with their letterhead and my contact information stripped out before emailing it in with the first 2 others that responded (they always send in 3, to allow the client to have a choice, I've been told).
Then there's some that actually want to succeed at their job, and they put in personal effort when contacting candidates. They respond to emails. They engage in a dialog where they find out what your actual job skills and desires are, and they send you matching open positions instead of just a valueless load of everything.
Like you said, it doesn't hurt to keep cordial relations with these folks. It might even help.
One of the recruiters I was in contact with nearly 10 years ago now is now upper management at the same recruitment firm. He often sends me customers who don't meet the specific scope of his firm - usually per-project contracts that can be done as a side job, which is usually fairly lucrative for me.
Another moved to a different agency to get that same type of vertical promotion, and he authorizes the top tier referral bonus to me when I sent folks over, as if I was a contractor already working for them, instead of an outsider.
Not all of them stuck with it and succeeded, but some invariably will.
Wow, so much vitrol, so much lack of understanding.
It's okay to be ignorant. Lots of devs are, even ones that have been in the industry for a good long while.
Letsee....
1) Contracting companies make money off you
Yes, but that's just sour grapes - if you accepted the contract at the rates and benefits given, then, you accepted it.
2) They're charging x% more than you're making! You should be making that much
You sound like someone who's never done independent contracting before. First, how are you going to get in the door to bid yourself out for these contracts? Are you going to go through their agency vetting? Provide your own worker's insurance (ensures your contract will be completed if you're unable to)? Provide a history that shows more than a single competent individual with a single set of skills? Don't forget providing your own medical insurance. I've had to do this before for myself; for a job that I'd normally peg in the 80$/hr range, in order for me to be profitable, it'd need to be in the 200-300$/hr range. and see item 3 below...
3) You weren't going to get that job by yourself anyway.
When it comes to devs, it's rarely a choice between contract or perm for the same position. It's one or the other.
First, perm employees are - to the company - almost always more expensive than contractors, even given an invisible markup that goes to the contracting company. The cost of onboarding is high, benefits are high, it's all very expensive, more so than the contract cost.
Next, contractors are easier to get rid of, just cancel the contract - so if you don't work out, it's painless to excise you. It's much harder to get rid of employees. There's unemployment, there's a higher potential for lawsuits, there's morale problems, etc.
Additionally, many big companies use contractors as budget stuffing. You might not know this if you're outside of management, but in many places, coming in under budget is bad - it means your next year's budget will be reduced. One way to avoid this is to use your discretionary budget to hire contractors. They're effectively uncashed checks - you can cash them any time you need to, or just wait out the year and let them soak the remaining budget.
A counterpoint to the above issue, many small companies use contractors because they cannot afford to compete in the HR/recruitment space on their own. Many shops specialize in software design, and they don't have a separate department to vet and sort thousands of applications, much less maintain social presence on career sites and such required to snag good employees. They rely on contract agencies and rarely even post their positions publicly. Most contract companies even give discounts when you mark them as a sole provider, so it's the best way to get good candidates without spending your lead engineer's time.
Last, since these budgets are almost always separate from a fixed budget to be used purely for headcount, it can be used to hire additional personnel when you're not allowed to otherwise.
All in all though, it means most of the jobs going to contractors are not ~ever~ going to perm employees, and vice versa.
4) Recruiter cares if you sent them a nice email?
Yes, they do. Their livelihood depends on placing candidates. For them, it's mostly statistics; throw enough candidates at a job, a certain % will stick. How do they hedge their bets? They find _good_ candidates, and they keep in touch with them. Some of that is social - just a willingness to communicate with them is a better risk than someone who never responds. It pays for them - literally - to keep in touch, to maintain that relationship. So they make special notes of the nice ones, of the successful ones, the ones that interact with them, that agree to go to lunch with them - of the ones that can help them bring in a payday. Especially in that environment, they're very used to monet
I remember prepping for interviews where there were 30 applicants for every opening, and each of us competed for low pay, a random grab-bag of on-site 'non financial incentives', with zero focus on the work environment or corporate culture, and where your only chance to stick out was to make a strong human connection.
Now it's shifted the other direction, but devs - don't be lax. If you're any good, you've already been approached by at least 3-4 recruiters a week via phone & email. Do not blow these people off. In a few years, they could be your best friends. Write a short letter that includes that sentiment: Sorry, not now, but please keep me in mind when a position pops up, because my situation may change It doesn't hurt to ask them if you can forward it on to friends or ex-coworkers who may find it interesting either; it increases their interest in you, and most companies provide referral bonuses even to folks outside their company structure - I usually cash in 2 or so of these a year. I like to ask them too, what their focus is - for example, some look more for admin and general IT, some for java or C# devs, some for embedded devs, and so on so I can send them good candidates.
Once you have a list of non-robotic/non-spam real actual recruiters in your area, when someone you know does indicate they're looking for a job, play matchmaker. Send them to the folks on your list. Tell the recruiters to expect to hear from so-and-so. Grow the professional relationship.
It's not just about the occasional free lunch. Once, when I was part of a large contract for a company, there was an emergency meeting as our contract had been cancelled out of the blue, and some 200+ of us were effectively laid off. We all shuffled into a big meeting hall to hear about COBRA insurance and such, and after the first 15 minutes, one of the recruiters comes over to me and says, "Oh, you don't have to worry about this stuff; they still need 2-3 folks, and you're one of them. Technically you'll be unemployed for a week and a half, but we got you a pay raise and more vacation time. No need to interview, we're just shifting you over. Congrats!"
Sure, without my technical skill, I wouldn't have been considered, but out of the some 100 or so with that same skillset in the group of 200, they picked me because they knew me personally. I had brought them 3 new hires, and about 5-6 potentials that didn't get hired. When we had lunch meetings, we spoke about the employment environment, and what it looked like from our perspectives so they could better market jobs. When they had candidates, I made myself available to answer working environment questions, things like that.
Basically, I had value to them more than just the contract, and they knew it. So my name was at the top of the list when it came time to hand out the more rewarding jobs or christmas bonuses.
So the tl;dr: Software devs would do well to nurture your relationship with recruiters, because it could pay off in the long run.
Okay, the point where they then use the connections to send out xmas cards linked to an attack site which people went to, and how they somehow scammed someone into sending her a work laptop and network access credentials.
That might be better to lead with the actual attacks in the summary, and not just some sort of information gathering setup.
...was being added to an employee's facebook or linkedin page a 'Security Attack' or really any sort of real risk? How is making a friend request a "Sophisticated Attack"? Sure, you can start linking information together, but this is an attack in the same way that a honey bee at the pool counts as a deadly swarm of African hornets.
As for the "job offer," why do I suspect that the 'job offers' were not real job offers, but rather requests to apply for a job? You know, like everyone who's on linkedin who has any qualifications or prior experience gets about 3-4x a day, more if you've got a resume with certain keywords in it? Anyway, why is any of that relevant to a security probe?
I read a book a while back about some of the phone phreakers, and at one point they brought a woman in to the pentagon to demonstrate social manipulation. She was given only a normal phone and phonebook, and asked to get the daily schedule of a specific general, and something like 40 minutes later, she had it. They also had examples of people having extra keys made for doors, purchases and deliveries being made, phone systems being rerouted, and so on. Those sorts of things are attacks.
... was the hardest thing for me today. Is there any reason that Ghostery finds 16 various advertising and tracking widgets to block that apparently are required for the page to load? Also, why would you put a list of 16 items in a slideshow? Just to buck up advertising revenue for multiple page views?
I'll just guess what's on the list, and say it's 80% right, but that the hardest thing altogether for me is getting decent requirements from end users. Right after that it's explaining why is not only not Agile, but often not helpful by itself.
Last, and this is an ever present distraction for me, is to explain to some folks the definition of "priority" and why the phrase becomes meaningless once you have two or more #1 priorities for an individual.
I worked as a sysadmin for a high energy physics group at the Beckman Center. Day and night, it was Fortran, on big whopping clusters, doing monte carlo simulations.
Though it ~was~ many years ago.
Elsewhere, I worked for a company doing datamining on massive datasets, over a terabyte of data back in 2000, per customer, with multiple customers and daily runs on 1-5 gig subsets. We used C + big math/vector/matrix libs for the processing because nothing else could come close, and Perl or Java for the data management; preprocessing, set creation and munging (like attempting to corrrect spelling mistakes, parsing date strings into a standard format, normalizing data against a standard metric, applying expert system filters, even actual machine analysis like clustering or shape detection, which to us was still just preprocessing).
I remember playing a game called Uplink. You're a hacker, slowly gaining real world skill and understanding over time, plus hardware and software to allow you to pull off ever-more-difficult hacks.
One of the very first lessons you learn is that just because you can break the law, that's no guarantee that you get away with it. You need to scrub connection logs or redirect them, you have to erase bank records at multiple locations, and failing all that, you need to be prepared to blow up your system so the feds can't use it to catch you.
In realistic combat simulators then, what we should expect to see is some sort of penalty for, say, killing civilians, as the ICRC wants - unless you can cover it up. Maybe torch the building, or use area-affect weapons so it appears to be unintended collateral damage. Kill everyone so there's no witnesses and dump a spent RPG on them. Point to intelligence stating that there were no civilians in the area, or that hostiles were posing as civilians.
Culpability is a good lesson, it reminds you to cover up your misdeeds, not necessarily to not commit them. Probably NOT the lesson that the ICRC really wants, despite the realism involved therein.
Let's be honest - they don't want virtual world punishments for virtual world war crimes. That's just a means to an end. What they want a mechanism to push specific moral, political, and ethical messages via negative reinforcement to the player. As a form of art, I fail to see why video games should be beholden to promote any specific moral, political, or ethical stances.
Not unless you can make it a fun game mechanic, at least.
I posted about this before in another thread, but the scenario at some future time is something like this;
Robots, Automation, brute optimization from data analysis, etc will result in less jobs available for unskilled laborers and many skilled blue collar workers. At some unknown time, it's possible that even skilled white collar workers could be pushed out.
The interesting thing - and we may already be seeing it - is this; Unemployment goes up, but there's no scarcity of product or labor in response.
At this point, there's a subtle disassociation between work done and money. In fact, money as a whole will become less useful, especially as some segment of the population that steadily grows larger over time has no way to generate any. Long term, this could be a very good thing - think Star Trek and a moneyless society where people more or less live a vacation lifestyle.
Short term however, we're going to have a period of serious strife, with haves and have-nots extremely separated, where money is still needed to buy food, make rent, and obtain material goods. How are we going to reach that tipping point into utopia when we have to first get through 20%, 40% or more unemployment - but we still rely on money? I don't even know if it's possible to get through that phase without some sort of civil war or revolution first that sets up all back to zero.
Even if we do get through it, what happens when that discrepancy still exists elsewhere in the world? Some nation is going to get there first, even if it's only by hours, but the whole world won't suddenly switch on at once. If we achieve post-scarcity by forcing third world nations to bear the burden, how long will that really last?
Personally, I think that we'll come up with some other metric to judge individuals long before money and majority unemployment are real issues. We just can't stand to not place metrics of value on individuals. I also think that none of this will happen in my lifetime, so really, this is just a thought experiment.
This assumes 'web development' refers to web-based applications, not just informational webpages.
This is likely to be an unpopular opinion to many, but I don't see the huge barrier here.
I've been working as a software developer for nearly 20 years now, going from games programming to business apps to web development and machine learning. In that whole time, I can count only a small handful of times when I've ever had to exhibit mathematical skills more complex than trivial algebra. Oh sure, in college, they made me write my own compilers, I had to write my own vector math routines for my ray tracer, and so on, and I consider these valuable learning experiences. However, in the real world, where I'm employed and make money, I use software libraries for those sorts of things.
When it comes to data structures, the languages of employers today, java and c#, provide me with the majority of structures and optimized-enough algorithms to manipulate them. I don't have to do a big-O analysis and determine if my data patterns will be better served by a skip-list than a quicksort, because we just throw memory and cpu at that anyway!
The point is, if you spend 1-2 years learning to write software - not computer science theory - you'll be ready to enter the workforce. Sure, you're not going to be someone creating those frameworks, you're not going to be an architect, but you'll be able to use them. A few years of real world problems and google at your finger tips, and it's likely you'll have learned enough to start tackling those harder problems.
Here's a list of what I'd prioritize before computer science theory, in regards to employment:
- Proficient in SQL and at least one database type
- Familiar with IDEs, source control, bug/task trackers, automated builds and testing, debugging tools and techniques.
- Ability to work in a group software project.
- Exposure and participation in a full blow software development life cycle (SDLC) from reading, writing, evaluating requirements, coding, debugging, QA, unit testing, the oft-overlooked documentation, etc. Include at least something waterfall and something agile-ish.
- Expert with HTML & CSS, javascript, and awareness of javascript libraries and frameworks.
I don't think I need to explain the value of any of these, and these practical concerns trump high level concepts like discrete mathematics or heuristic design for the entry-level developer.
1. Remove a danger to society
2. Acting as a deterrent
3. As a punitive measure (strongly related to item #2)
4. To provide rehabilitation
To date, analysis[1] has shown that never in the verifiable recorded history of crime and punishment, has any prison, anywhere, ever had a non-negligible impact on recidivism rates. Some pre-established percentage of people continue to commit crimes after a jail sentence, regardless of changes to enable rehabilitation. Education, trade skills, access to medicine & counselors, 'nice' quarters, access to games and exercise, work release programs, etc - no appreciable impact.
Even punishments like public shaming (very big in medieval times) have no impact on the average number of individuals willing to commit the crime again. Even torture (short of permanent harm) has no real lasting impact, though it does often result in the individuals using more effort to reduce the risks of getting caught.
In short, prisons do not rehabilitate prisoners, and they never have.[2] [3]
Pretending they they do, or can and then making screeching noises when they fail - or worse, throwing money at them so they can try yet another fad get-lawful-quick program is just irrational. Blaming the system for not working as one expects only shows the value of those expectations.
Here's the takeaway: The only things prisons are good for is removing a danger from society and providing a punitive threat as a deterrent - and even that last one has only limited impact.
For those interested in constructive comments, the fix is obvious and simple; spend that money on fixing those parts of society that give rise to crime. Focus on education, focus on a two-parent household, focus on employable skills, and so on.
[1] - oy. Google it, read some books, and take a few criminal justice classes. Personally, I'd start with this book, http://www.amazon.com/CRIMINAL... because it's a fascinating read, but your mileage may vary.
[2] - though there's nothing to say they couldn't eventually. Maybe cryogenically freeze them and subliminally imprint upon them the desire to knit when they're stressed? Could work.
[3] - Technically, life in prison works, in that they don't commit any more crimes, but the important point to note is that rehabilitation programs STILL have no impact on this rate. So it doesn't count either.
Were you talking about the daily news and world events? The political history of most existent countries and almost assuredly the history of those that no longer exist?
Sure, there's less metal golems and tricksie lords, but what you're describing is how the world actually seems to work. You can't shelter kids from that, and if you do, the result will be an individual incapable of dealing with reality. It'd be like living on the "Small World" ride until the age of 12 and only then being released into the world. That's a hit to a psyche.
In the timeline of a pre-post-scarcity world, we have a population of unemployed individuals which will grow as job growth - especially unskilled blue collar labor - flattens or becomes regressive. Until we're in a post-scarcity world, however, these individuals will be in a society that requires money for things like housing, food, shelter and clothing - whether it comes from the government or not.
At some point, the government simply won't be able to provide; their budget will be scraped too thinly over the nation. This is one of those situations where we'd be hard pressed to iteratively progress - it's a "flip the switch" sort of thing. Doing otherwise will create a massive underprivileged underclass, who are likely to be quite frustrated by their life; no job or job prospects, subsistence level living, inability to focus on personal goals or desires...
Two things can happen at this point:
Those who have focused their lives on acquiring wealth, the super rich, the 'haves', the ones who are most defined by the benefits wealth has brought them, they can all become completely selfless altruists, and together, agree to reduce their primary value to near zero by agreeing to, effectively, eliminate money in the spirit of pure socialism. Thus, utopia is achieved.
Alternatively, they will not do that, and at some tipping point - say, 60% unemployed - there will be a revolt that destroys the current economy, form of government, and so on, settings us back to 0 on the cultural progress - and likely technological/engineering scale, but removing the then-existing artificial constraint that says work=money.
I really don't see the first happening. Do you? Am I overlooking some important alternative choice?
In actuality, I think we're headed towards a more corporation-centric outcome, as predicted by many of the darker sci-fi novels out there, rather than a post-scarcity world, but hey, that's just my opinion.
It was repeated several times in the article; she was worried about 'media' on the device being posted to the internet. That it would be a 'voyeuristic invasion of privacy.'
You all realize what's being said here right? I don't think I'm speculating too much here; she took naughty photos and/or video with her glass. That's why she was so worried. Not the cost, nor her email (which she changed the password on after the fact), nor much of anything really, aside from the 'media on the device'. This wasn't her worrying about someone being critical of her lunch choices or the amount of mayonnaise she uses. She recorded some pants-off time and didn't want to be embarrassed.
At some point, society needs to get a little more aware of their own situation. Anything you record in digital media may very well be persisted indefinitely, and seen by others. This could be due to theft or cell phone hacking or an upset significant other. This goes for tweets, for emails, for forum postings, for photos, for video. If it's electronic media, now a days, you can bet the/a government has access to it if they want it at the very least.
There's a really easy way to avoid this though; learn to never record something you don't want other people seeing. It's not that hard. Alternatively, make your peace with it if you choose to do so anyway.
So the problem seems to be that ICANN is an american corporation, and thus subject to the laws of the US, and that in turn, could be used against foreign powers?
The solution then is to 'globalize' it? Where is it going to be 'globalized' to? Which country could it exist in where it would have immunity to any laws and act with impunity in regards to them?
When I see the complaints against it by China, Russia, the EU, and so on, they're always advocating more restrictions, protection of their interests. They want the ability to blacklist sites that talk about their politicians, that discuss unfavorable religions or religious rights, that cover alternative lifestyles such as gay or transgender, and so on. They want to do it without arbitration, automatically.
What they really are complaining about is that they don't have absolute control over it, and they want it. Everything else is just a pleasant lie or deliberate misdirection.
Let's be fair; the US has more than it's fair share of faults, but our definition of freedom is still incredibly wide reaching compared with the vast majority of countries in the world, and we're big enough to make it hard to push us around with political power alone. That's the big problem they're seeing. ... besides, use of the current DNS registry system is entirely voluntary. There's nothing to stop someone from coming up with their own, like the TOR network did. If it's better, people will use it over the current one. Though, I think they realize that any replacement that is more strictly controlled will never be considered 'better', so they need to subvert the current one.
Let's assume the programmer is average. They write some good code, some not so good, they have a certain bug rate. We have to assume that even the best programmers introduce bugs here and there. If you assume that no bugs will be created, or will develop later on - you are not fit to be a manager. Bugs happen.
Knowing that, a good project manager is going to create a system with peer review, with automated and manual testing, both unit and functional, frequent project sanity checks and of course, reasonable timelines and room in the schedule for refactoring and teardowns, not to mention some amount of signoff from those who okay'ed the project and approved each step.
If they won't provide that - it's on them. If they can't, it's those above them, and so on. That's the way it works; those above you in the chain need to provide an environment in which to excel, if they expect excellent results.
The downside, of course, is that it costs time and money, even if you start with exceptional people - not just average ones.
Is it about the money? Is it about maintaining a professional relationship? Having a steady job? Completing a challenging assignment? Learning a new skill? Working on an app that will eventually be released as a finished product instead of a never-ending series of bugs or rolling feature updates from an agile process with no end or sense of accomplishment?
Figure out what you want out of it, and then take the steps to achieve that.
That aside, I personally don't place a lot of value in seniority for the sake of seniority. That someone 'respected' worked on it means nothing at all if the product is crap.
At one workplace, I acquired a project much like you did; our three architects had all worked on it personally, over a 10 month period. It took me 2 weeks to get it running on my own machine locally - so much had been hardcoded; pathnames, machines, pre-existing sql connections with expired logins on machines only accessible from within a cluster. It had unimaginable complexity, built so that they could 'throw it over the fence' to the ops team, and supposedly let them own it, and update it for when our software changed in the future. They would only need to learn java, sql, our internal table structure (undocumented and continually changing) and SSIS too. It didn't help that the software still didn't work yet. It'd run for 2 days and then drop a 40+ gig coredump.
Yeah, I complained, and complained, and everyone just said 'make it work', so I talked to the end users and product owners, collected requirements, and wrote the whole thing from scratch as a command-line tool in about 4 hours. I had to spend 2 days making a power point presentation to demonstrate how it was functionally superior (cpu, memory, bandwidth, throughput), easier to use (2 pages of documentation), well commented and structured, had no 3'd party dependencies (so no extra $$$ for database licenses and such), and how it followed the company statement and policy (one of which was explicit; 'Do not just "throw it over the fence"').
I got a lot of positive attention from that. If recognition is your thing, that may be the way to go.
When I eventually quit that job they remembered that I got stuff done, and done well. So now I work for them in my spare time, making 3x my previous salary, on discrete projects where I call the shots and they just need something that works well without dealing with months of crap in between. So, I eventually got money and responsibility too.
Of course, your results may vary.
Who ends up writing these descriptions? The programmers? Their team lead? The architect? No. They just provide the job requirements.
It's your HR staff, your middle and upper management. They come up with corporate statements like "Engage our customers and employees with passionate, best of breed solutions and lead the mindshare" and that jumble of words has real meaning in their world. Now when they issue a statement, they're going to be asked things like "Does this grow our mindshare? Can you put a metric on the net 'passion' of this business decision?" This leaks through into their job descriptions among other places.
You've probably been exposed to this phenomenon before and come away confused; this world is about 90 degrees away from the norm - just enough suck you in with familiar words and phrases which only reinforces the alien nature when they're used to mean something totally other.
You ever get the question in an interview, "Where do you see yourself in 5 years?" - that comes from the same mindset.
Look at it from a business standpoint: If your company makes great sprockets, and you consistently make a million dollars in sprocket sales ... you've failed as a business. The metric isn't how much you make. It's not even how fast you make it. It's how fast you increase the rate you make it. So when they hire execs, they want them to say "in 5 years, I want to be the division manager of the newly created south pacific department, that I've built from the ground up" - or something. They don't want them to say "Valued for my professionalism, expertise and domain knowledge, doing the same job I've always done." That means they're somehow broken, that they just don't "get it."
You'll probably note that when they bring in non-administrators, those folks don't ask those questions unless they have no idea what they're doing hosting an interview. On the other hand, if the majority of your company is focused on high pressure sales - real estate, auto, etc - you'll be exposed to it more and more, even in support jobs like IT, and even from other engineers.
This is just one of those cases. If you're not in sales, marketing, middle-to-upper management, it's usually safe to ignore the parts of the job description that don't relate to your actual job. They likely have nothing to do with it.
I've worked with an industrial psychologist for quite a while now - they focus on things like pre-employment screening, improving employee efficiency, hiring (both from the company and candidate viewpoints) and so on.
One of the things they'll point out is that not every employee has the same motivations or same 'best' work environment. You're going to get some that thrive in an open environment, and others that don't. You'll get some that spend more time chatting, and others that use collaboration to become more productive. Unfortunately, there's no silver bullet to say which is best, and office layout is only a small part of that anyway.
However, you can do an employee survey (by which I mean an actual scientific survey with statistical analysis, not just a slopped together 'do you want open seating yes/no' form), and determine which environments work best for your best workers and average workers. This gives you the information you need to make a good decision. For example:
- Does it make sense to change the environment to make the average workers more efficient?
- Alternatively, should you change the environment to make your star workers most efficient and expect that the environment will help turn your average workers into stars (and weed out the underperformers)?
- Are your tasks inherently better suited to solo efforts or team efforts?
- Are your employees good communicators?
Of course, most of this is moot.
There are only a few cases where an immediate manager has the ability to radically restructure the work environment - those decisions are made higher up. At the same time, those higher up are making decisions primarily on immediate financial costs - so cubes and open offices are much more cost effective.
Personally, I'd rather have a small office with complete control of the light and temp, and don't have a chance that someone's looking over my shoulder.
My problem is that I need a remote windows access solution that doesn't appear to have required me to go through extra effort to circumvent security restrictions.
While my department and local IT people could care less, and in fact actively enable me to do my job, corporate might have an issue.
We are ~technically~ not allowed to download software and install it (in fact, links to .zip, .exe and a host of other types are denied), and standard RDP, VNC and similar ports are explicitly blocked. Logmein handled everything via the browser and browser dialogs, so I could claim ignorance, and required no special network configuration.
Sorta sad to see it go. I liked having plausible deniability.
We all know innately know this, but sometimes it's hard to avoid getting caught up in a religious debate about the apples-to-oranges details.
Once your language is at least complex enough to write a compiler or interpreter for itself - that is, it's no longer a toy language - it tends to be more or less capable of everything every other language is capable of. Sure, it might not be the best tool for a given job, but they're all generally the same aside from some syntactic sugar.
The more important thing is the metrics we can track are directly correlated to a person's experience with a language. The longer an individual spends writing in a language, the less time it takes to complete a program, the less errors it contains, the severity or error incident goes down, the number of security issues is reduced, it is better optimized for the platform, uses less memory or cpu, has more features, etc.
Those are reliable statistics and the trend holds true regardless of the language. That has real world value far above and beyond arguing whether whitespace should be part of a language, or if it uses smalltalk or c++'s object models, to name a few items I've seen above.
The end result; whatever language you tend to use the most is going to be the best language for you to use, often even when it's not a good fit.
You ever duck your head down, put the earphones on, and cut a swath through the feature list, barely realizing that you've missed lunch and it's already 7pm? You'd leave but you've just thought of a really elegant optimization routine and it's so obvious, but you need to see it work before you go?
A good manager can provide coordination between project members, act as an insulating buffer between customers/requirements and devs, fight for resources, push back against poor requests and push forward agendas like refactoring, internal tool development, or library updates (ie, the Good Fight). Really though, this boils down to the simple goal of letting the devs do their job.
Without all the other context switching, we're free to descend into code mode, shut out the outside world, and make beautiful code that we're proud of. In practical terms, that means less bugs, better security, efficient code, lower cost of maintenance, and so on. That's the biggest thing a manager can really provide; an environment where we're free to excel.
That doesn't require any sort of technical chops.
I used to write financial software for a living, including ATM driving software.
I realized, after a while, that I had certain preconceived notions about the sort of software and hardware that is running on these sorts of high profile, high risk systems. Obviously, the software will have been made highly secure; redundant checks on every action, code signing, etc. It'd likely be running a custom operating system that was built from the ground up and booted off a (P)ROM. The case would be just as impenetrable, with a separate compartment for the computer itself, requiring specialty equipment so that could only really be opened at the point of origin or in a manner certain to destroy the innards - and certainly not in the field.
Right? I mean, any of us can think up a set of reasonably secure basic premises from which we could build a system like this out of.
Imagine my surprise when I found out that half of the ATMs out there are just running off the shelf windows desktops, with the original demo software still installed. There's no real optimization, no cleanup, no limited boot, nothing; it's just a desktop machine jammed in a vending machine with a custom card & cable for driving the mechanics of the ATM. Sometimes they're even in the original manufacturer's case (though usually they're just the board). I've also done some work on vending machines, and I can tell you that they're often better made!
As a software developer, one of the things I was shocked to see was that security for ATMs was almost entirely focused on the physical. There's little to stop someone from hooking up an external line and sending approvals or just do basic proxying - most of the data is sent in the clear, just skim it, or to update the system with a cd or usb if you pull the front cover of the ATM off. Many times, you'll find someone left a keyboard and mouse behind in the unit because it's a pain to always carry your own when doing updates or what have you.
This follows the same basic trend in the rest of the financial systems I've seen; physical security is very high, software security is relatively low. When it comes down to it, most companies place a focus on tracking transactions rather than securing them, and rely on constant manual review by staff to detect problems (that's why banks close so early - the folks who don't run the registers are in the back doing the day's reconciliation.
It must be your scope of work that you haven't heard of it as a option for a given project, or that no one uses it.
I'm often put in the architect position, or at least, the seat right next to them, and Ruby has frequently been brought up as a contender. It's not being brought up because it's especially good, but rather, it's evangelists, while small in number, tend to be loud in voice. It's what I call a 'toy language', in that it's fun to play with, and the kids especially seem to like it, but very few people with real experience consider using it for mission critical software. So there's always an individual who says "Have you thought about ruby?" - and they tend to get shot down by people who are driven by project requirements rather than the emotional appeal of getting to play with a new toy.
So, it is out there, people bring it up from time to time because they've heard non-specific good things and don't want to miss out on a new trend. Very few orgs use it for any large projects, though you can find a number of small-scope applications (primarily web apps) using it - mainly as the result of hobbyist pet projects, as you said.
Yup. I generally ignore the obviously mass-mailed spam recruiter mail. There's no value in it, those recruiters will not do anything for me, beyond print my resume with their letterhead and my contact information stripped out before emailing it in with the first 2 others that responded (they always send in 3, to allow the client to have a choice, I've been told).
Then there's some that actually want to succeed at their job, and they put in personal effort when contacting candidates. They respond to emails. They engage in a dialog where they find out what your actual job skills and desires are, and they send you matching open positions instead of just a valueless load of everything.
Like you said, it doesn't hurt to keep cordial relations with these folks. It might even help.
One of the recruiters I was in contact with nearly 10 years ago now is now upper management at the same recruitment firm. He often sends me customers who don't meet the specific scope of his firm - usually per-project contracts that can be done as a side job, which is usually fairly lucrative for me.
Another moved to a different agency to get that same type of vertical promotion, and he authorizes the top tier referral bonus to me when I sent folks over, as if I was a contractor already working for them, instead of an outsider.
Not all of them stuck with it and succeeded, but some invariably will.
Wow, so much vitrol, so much lack of understanding.
It's okay to be ignorant. Lots of devs are, even ones that have been in the industry for a good long while.
Letsee ....
1) Contracting companies make money off you
Yes, but that's just sour grapes - if you accepted the contract at the rates and benefits given, then, you accepted it.
2) They're charging x% more than you're making! You should be making that much ...
You sound like someone who's never done independent contracting before. First, how are you going to get in the door to bid yourself out for these contracts? Are you going to go through their agency vetting? Provide your own worker's insurance (ensures your contract will be completed if you're unable to)? Provide a history that shows more than a single competent individual with a single set of skills? Don't forget providing your own medical insurance. I've had to do this before for myself; for a job that I'd normally peg in the 80$/hr range, in order for me to be profitable, it'd need to be in the 200-300$/hr range. and see item 3 below
3) You weren't going to get that job by yourself anyway.
When it comes to devs, it's rarely a choice between contract or perm for the same position. It's one or the other.
First, perm employees are - to the company - almost always more expensive than contractors, even given an invisible markup that goes to the contracting company. The cost of onboarding is high, benefits are high, it's all very expensive, more so than the contract cost.
Next, contractors are easier to get rid of, just cancel the contract - so if you don't work out, it's painless to excise you. It's much harder to get rid of employees. There's unemployment, there's a higher potential for lawsuits, there's morale problems, etc.
Additionally, many big companies use contractors as budget stuffing. You might not know this if you're outside of management, but in many places, coming in under budget is bad - it means your next year's budget will be reduced. One way to avoid this is to use your discretionary budget to hire contractors. They're effectively uncashed checks - you can cash them any time you need to, or just wait out the year and let them soak the remaining budget.
A counterpoint to the above issue, many small companies use contractors because they cannot afford to compete in the HR/recruitment space on their own. Many shops specialize in software design, and they don't have a separate department to vet and sort thousands of applications, much less maintain social presence on career sites and such required to snag good employees. They rely on contract agencies and rarely even post their positions publicly. Most contract companies even give discounts when you mark them as a sole provider, so it's the best way to get good candidates without spending your lead engineer's time.
Last, since these budgets are almost always separate from a fixed budget to be used purely for headcount, it can be used to hire additional personnel when you're not allowed to otherwise.
All in all though, it means most of the jobs going to contractors are not ~ever~ going to perm employees, and vice versa.
4) Recruiter cares if you sent them a nice email?
Yes, they do. Their livelihood depends on placing candidates. For them, it's mostly statistics; throw enough candidates at a job, a certain % will stick. How do they hedge their bets? They find _good_ candidates, and they keep in touch with them. Some of that is social - just a willingness to communicate with them is a better risk than someone who never responds. It pays for them - literally - to keep in touch, to maintain that relationship. So they make special notes of the nice ones, of the successful ones, the ones that interact with them, that agree to go to lunch with them - of the ones that can help them bring in a payday. Especially in that environment, they're very used to monet
I remember prepping for interviews where there were 30 applicants for every opening, and each of us competed for low pay, a random grab-bag of on-site 'non financial incentives', with zero focus on the work environment or corporate culture, and where your only chance to stick out was to make a strong human connection.
Now it's shifted the other direction, but devs - don't be lax. If you're any good, you've already been approached by at least 3-4 recruiters a week via phone & email. Do not blow these people off. In a few years, they could be your best friends. Write a short letter that includes that sentiment: Sorry, not now, but please keep me in mind when a position pops up, because my situation may change It doesn't hurt to ask them if you can forward it on to friends or ex-coworkers who may find it interesting either; it increases their interest in you, and most companies provide referral bonuses even to folks outside their company structure - I usually cash in 2 or so of these a year. I like to ask them too, what their focus is - for example, some look more for admin and general IT, some for java or C# devs, some for embedded devs, and so on so I can send them good candidates.
Once you have a list of non-robotic/non-spam real actual recruiters in your area, when someone you know does indicate they're looking for a job, play matchmaker. Send them to the folks on your list. Tell the recruiters to expect to hear from so-and-so. Grow the professional relationship.
It's not just about the occasional free lunch. Once, when I was part of a large contract for a company, there was an emergency meeting as our contract had been cancelled out of the blue, and some 200+ of us were effectively laid off. We all shuffled into a big meeting hall to hear about COBRA insurance and such, and after the first 15 minutes, one of the recruiters comes over to me and says, "Oh, you don't have to worry about this stuff; they still need 2-3 folks, and you're one of them. Technically you'll be unemployed for a week and a half, but we got you a pay raise and more vacation time. No need to interview, we're just shifting you over. Congrats!"
Sure, without my technical skill, I wouldn't have been considered, but out of the some 100 or so with that same skillset in the group of 200, they picked me because they knew me personally. I had brought them 3 new hires, and about 5-6 potentials that didn't get hired. When we had lunch meetings, we spoke about the employment environment, and what it looked like from our perspectives so they could better market jobs. When they had candidates, I made myself available to answer working environment questions, things like that.
Basically, I had value to them more than just the contract, and they knew it. So my name was at the top of the list when it came time to hand out the more rewarding jobs or christmas bonuses.
So the tl;dr: Software devs would do well to nurture your relationship with recruiters, because it could pay off in the long run.
(and then I read the article)
Okay, the point where they then use the connections to send out xmas cards linked to an attack site which people went to, and how they somehow scammed someone into sending her a work laptop and network access credentials.
That might be better to lead with the actual attacks in the summary, and not just some sort of information gathering setup.
...was being added to an employee's facebook or linkedin page a 'Security Attack' or really any sort of real risk? How is making a friend request a "Sophisticated Attack"? Sure, you can start linking information together, but this is an attack in the same way that a honey bee at the pool counts as a deadly swarm of African hornets.
As for the "job offer," why do I suspect that the 'job offers' were not real job offers, but rather requests to apply for a job? You know, like everyone who's on linkedin who has any qualifications or prior experience gets about 3-4x a day, more if you've got a resume with certain keywords in it? Anyway, why is any of that relevant to a security probe?
I read a book a while back about some of the phone phreakers, and at one point they brought a woman in to the pentagon to demonstrate social manipulation. She was given only a normal phone and phonebook, and asked to get the daily schedule of a specific general, and something like 40 minutes later, she had it. They also had examples of people having extra keys made for doors, purchases and deliveries being made, phone systems being rerouted, and so on. Those sorts of things are attacks.
This was just fluff.
... was the hardest thing for me today. Is there any reason that Ghostery finds 16 various advertising and tracking widgets to block that apparently are required for the page to load? Also, why would you put a list of 16 items in a slideshow? Just to buck up advertising revenue for multiple page views?
I'll just guess what's on the list, and say it's 80% right, but that the hardest thing altogether for me is getting decent requirements from end users. Right after that it's explaining why is not only not Agile, but often not helpful by itself.
Last, and this is an ever present distraction for me, is to explain to some folks the definition of "priority" and why the phrase becomes meaningless once you have two or more #1 priorities for an individual.
(Btw, I did find a 'deslider' site, for example, this article can be 'deslided' here: http://deslide.clusterfake.net/?o=html_table&u=http%3A%2F%2Fwww.itworld.com%2Fslideshow%2F124383%2Farg-9-hardest-things-programmers-have-do-378834 )
I worked as a sysadmin for a high energy physics group at the Beckman Center. Day and night, it was Fortran, on big whopping clusters, doing monte carlo simulations.
Though it ~was~ many years ago.
Elsewhere, I worked for a company doing datamining on massive datasets, over a terabyte of data back in 2000, per customer, with multiple customers and daily runs on 1-5 gig subsets. We used C + big math/vector/matrix libs for the processing because nothing else could come close, and Perl or Java for the data management; preprocessing, set creation and munging (like attempting to corrrect spelling mistakes, parsing date strings into a standard format, normalizing data against a standard metric, applying expert system filters, even actual machine analysis like clustering or shape detection, which to us was still just preprocessing).
I remember playing a game called Uplink. You're a hacker, slowly gaining real world skill and understanding over time, plus hardware and software to allow you to pull off ever-more-difficult hacks.
One of the very first lessons you learn is that just because you can break the law, that's no guarantee that you get away with it. You need to scrub connection logs or redirect them, you have to erase bank records at multiple locations, and failing all that, you need to be prepared to blow up your system so the feds can't use it to catch you.
In realistic combat simulators then, what we should expect to see is some sort of penalty for, say, killing civilians, as the ICRC wants - unless you can cover it up. Maybe torch the building, or use area-affect weapons so it appears to be unintended collateral damage. Kill everyone so there's no witnesses and dump a spent RPG on them. Point to intelligence stating that there were no civilians in the area, or that hostiles were posing as civilians.
Culpability is a good lesson, it reminds you to cover up your misdeeds, not necessarily to not commit them. Probably NOT the lesson that the ICRC really wants, despite the realism involved therein.
Let's be honest - they don't want virtual world punishments for virtual world war crimes. That's just a means to an end. What they want a mechanism to push specific moral, political, and ethical messages via negative reinforcement to the player. As a form of art, I fail to see why video games should be beholden to promote any specific moral, political, or ethical stances.
Not unless you can make it a fun game mechanic, at least.
I posted about this before in another thread, but the scenario at some future time is something like this;
Robots, Automation, brute optimization from data analysis, etc will result in less jobs available for unskilled laborers and many skilled blue collar workers. At some unknown time, it's possible that even skilled white collar workers could be pushed out.
The interesting thing - and we may already be seeing it - is this; Unemployment goes up, but there's no scarcity of product or labor in response.
At this point, there's a subtle disassociation between work done and money. In fact, money as a whole will become less useful, especially as some segment of the population that steadily grows larger over time has no way to generate any. Long term, this could be a very good thing - think Star Trek and a moneyless society where people more or less live a vacation lifestyle.
Short term however, we're going to have a period of serious strife, with haves and have-nots extremely separated, where money is still needed to buy food, make rent, and obtain material goods. How are we going to reach that tipping point into utopia when we have to first get through 20%, 40% or more unemployment - but we still rely on money? I don't even know if it's possible to get through that phase without some sort of civil war or revolution first that sets up all back to zero.
Even if we do get through it, what happens when that discrepancy still exists elsewhere in the world? Some nation is going to get there first, even if it's only by hours, but the whole world won't suddenly switch on at once. If we achieve post-scarcity by forcing third world nations to bear the burden, how long will that really last?
Personally, I think that we'll come up with some other metric to judge individuals long before money and majority unemployment are real issues. We just can't stand to not place metrics of value on individuals. I also think that none of this will happen in my lifetime, so really, this is just a thought experiment.
In 300 years though, who's to say?