1) It's obviously very different. It's primarily about organisation and co-ordination - you need to understand all the moving parts of a project, know what's important, what might need your attention and what can be left alone. You might want to ask yourself whether after 3 years experience you feel you're equipped to do that - some people have a feel for it and are, others need more first hand experience of projects. More importantly you want to think if you're going to be happy doing that.
2) There is a temptation to think when you're a programmer that the reason things aren't going well are that the manager is doing his job badly and you're going to do better. This may be the case but in my experience that's often not the case. Organisational cultures and how projects are run tends to be driven from the top of the organisation down and you may find that the things ultimately causing the problems are far higher up the chain. Where things are bad for programmers they're often bad for managers (or at least middle managers) too. Moving into management because you think you can fix the world is probably misguided.
3) Following on from that, you'll probably have a lot less power / authority than you think. It's best to think of managing at this middle level as working with programmers but doing a different job rather than them working for you. Generally, as when you're a programmer, you're a middle man turning the wishes of those above you into reality. Yes you might get a say / some influence but probably not anywhere near as much as you'd like. People will tell you to do stuff, you'll do it.
4) Learn to delegate. This is key. When you're given things your first instinct will be the one you have now - to do it yourself. That approach is going to kill you. You need to learn to give other people work.
5) If being friends with the people in your team is important, you might want to think twice. That's not to say you can't be friends with someone who works for you, just that there is always the potential for problems. If your friend starts coming in late are you willing to pull them up on it and risk the friendship?
6) It is hard to go back. Some roles keep you hands-on to an extent but once you're not coding at least 20 hours a week, you've got a year, maybe two at most, before your skills have significantly atrophied at which point moving back will be a problem.
7) With regard to skills decay, you also need to understand this is happening when you're making decisions on the project. You may be the best programmer in your team but if you spend 0 hours a week programming and the graduate entry level guy spends 45 hours, how long before he knows more than you do?
I wouldn't make a jump into pure management that early. I would fear that it would do two things, both bad:
1. Prevent you from developing the necessary technical experience, instincts, and judgment that will serve you well later in your career.
2. Prevent you from "tasting management" and deciding whether or not you like it. Many don't, and that's perfectly OK. I am in the category of "initially reluctant managers" which makes me both good and bad. Good because I'm not in it for the power or title. (Managers who are can be incredibly corrosive.) Bad because there are some parts of managing that are necessary but distasteful to me and so I naturally deprioritize them or am less than good at them. Things like figuring out something personal about someone on your team and figuring out how to motivate them or how to help them break through what's blocking them. Those can be a struggle for me, as I'm a natural engineer, not a "people person". I see some of my peers who got into management out of desire, and while they're not nearly as strong technically, they appear effortless when dealing with people and their idiosyncrasies.
Being able to "try on" managing a team at your current role is possibly great. If you like it and are good at it, you learned something, but you still should proceed slowly with the transition.
If you don't like it and decide to stay technical, there's no harm whatsoever in giving that up (at your current or next job). I hear in interviews pretty regularly, "they were pushing me into management and I like to stay technical". When I have a technical role (which is always), that's music to my ears.
I managed to negotiate about 25% of my time for development (some of it quite high-level architecture, but often still writing actual code); the rest was personnel management, planning and organisation, liaising with sales and project management, sometimes attending sales pitches, and training other teams. I actually had a great time, met people from all over the organisation, got some travel out of it, and learnt a hell of a lot, almost all of which has been beneficial to me later in my career.
Personnel management was definitely a real challenge - in ways I absolutely had not predicted (we had some, shall we say, "interesting" characters on the team, and I got to know the HR people very well by the end of it).
After 18 months, I moved to another company to take a role which ostensibly should have been similar but ended up migrating back into a more-or-less pure development role as a technical lead. The skills I learnt then - especially anything to do with personnel, sales, and planning - are still extremely useful to me as a software consultant / small business guy today.
I don't know if this route is for everyone - I was already naturally pretty confident and articulate, and for developers who aren't especially born that way, I think a lot of management tasks and managerial expectations are probably scary and unpleasant. But for me, at least, I enjoyed it and have few complaints.
Try to find out what you really want to do, and be aware of that it is not straightforward to go back to a position as a developer in the same company after you've become a manager.
Im doing a bit of management part time coz my team is small. I manage multiple products and i code on one product one week and the other product the next week.. sometimes it depends on the priority levels. We might have a release due in some product where extra hands are required. Then i go do that. So!
Will you love it? If you want to go work for apple or start your company or something, it always helps to have a bit of management in you. So instead of a full switch to management, ask your company if you can work on code 50% of the time.
Anyway, I think that, even as a manager, you have the option of being involved in the design aspect of things, even though that heavily depends on the kind of developer you are.If you're anything like me, you love designing new features and writing specs that are as detailed as needed.That's something I've been doing quite frequently, to the point where, for the project I've beenassigned to, I do most of the design of new features besides helping turning them into working code.I sit down and think through the problem at hand, jotting down ideas in plain text files and commit them to a dedicated folder in our project's source code repo, iterating over them as I think of more efficient/elegant/fast/simple ways to implement the feature and taking into account inputs from the other guys in the team.Again, I've never been a manager, but I think one could retain at least part of this role, provided she can cut through all the bullshit that working for a company entails (meetings where you decide nothing, chiefly).
OTOH, if management is not your thing it's not your thing, I guess.Then again, why not give it a try? Give it some time and see how that works out for you.If you like it, great. If you don't, you can always quit and the best that can happen is that your resume will look more interesting.
If I had to hire someone, I would give bonus points to someone who knows about managing and communicating with people, not only machines.
also read the hackernews discussion:
It really boils down into one point: how happy would you be doing whatever you choose to do - there is nothing worse than a manager that hates his job or a programmer that doesn't feel the "drive" and passion to work.
Personally, I do not feel equipped to switch into management just yet - I am not confident enough I would make the best decisions, and I am leaning towards staying in my role a while longer, just to be totally sure I acquired all the necessary skills.
This of course might change to more management if that part of the jobs demands more time.
Nothing wrong with becoming a manager if that's your thing. But I love the fact that I can still do some research (/poc development).
As we say in Dutch: A Developer in Heart and Kidneys ;-)
Additionally, I think it might actually help in becoming a good manager if you are a good developer, still being able to 'relate' (i.e. not looking down from your ivory management tower).
If the former, thank them for the assessment and leave to start your own company, even a tiny one. You will learn more about management and less about impedance matching the (dys)functions of existing organizations.
If the latter, leave to work elsewhere in a technical role, preferably under a good leader.
At the point I made this connection, I had lost several years of progress, skills had depleted, and technologies had moved on a lot. I'm still catching up! Consider that a cautionary tale. :-)
Just my 2.
Lots of cool things to learn, don't think your leaving interesting knowledge behind.
Being a manager is about getting the right resources, the right people to do things at the right time.
If it's good or bad it depends on what you enjoy doing, nothing more nothing less.
Ok, to be more specific:
Do you prefer wrangling bits and bytes or people?
Do you like your current company? Is there an appealing career track for you?
Do you like being challenged technically? Or would you just prefer to earn a comfortable salary?
My observation is that once you get settled into the management track it is hard to go back to development. Even if you do side projects, that doesn't really put you back on the tech track.
Re: naming, http://namevine.com asks for current registrar and may be earning affiliate revenue.
I have a million HN bookmarks (and add a dozen more every day) and a "save" method would be very convenient.
Many times I'll drag the "X comments" link to my bookmarks when there is a post that links anywhere (most posts) and the title for those bookmarks are "X comments" which is useless.
+1 for the Save/Bookmark feature!
When I get incoming spam I can look up who the address is assigned to, cut off the alias and then take further action such as notifying the company, giving them a new email, or cutting ties with them.
I don't bother with retribution (would take too much time) -- if the company is unwilling to acknowledge the incident or it happens multiple times I cut the cord and move on.
Your situation seems different than mine. I think my addresses were taken during a security breach instead of being sold by the company.
In my case I just change my address with the company to dropbox2@, and block the original address.
I also have a friends-and-family email address that isn't published anywhere online that finally started receiving spams. I think it was taken from a neighbor's address book in hotmail when he got phished.
I think a possible long-term solution would be for everyone to have a unique address for everyone else. The email software would auto-negotiate a unique address after your first communication with the person, creating a pairing similar to a friendship on a social network. I'm getting off-topic, but here's a link explaining what I mean a bit more: http://stevenjewel.com/2014/02/clearskies-chat/ (It's about decentralized IM instead of email, but the same antispam technique would work for either.)
Hell, even a $500 small claims court suit might make for a good option.
Depending on how often they sell the info, you can just change your address with them, and permanently scuttle the original address (saves you from having to look at spam, etc).
If you want some more concrete ideas, in lieu of copy/pasting a previous comment: https://news.ycombinator.com/item?id=5904316
Completely open source, no real marketing.
Some random ideas I just came up with are below. Not all of them passive, but might still interest you.
- Website with WordPress templates for real estate agents.
- WordPress multisite network that enables real estate agents to create a site quickly and then pay a monthly hosting fee. You could scale this by selling to different real estate companies, getting all of their agents a personal site.
- Mobile marketing for restaurants. Create a service that enables restaurants to send text message deals to customers.
- Pick an audience that interests you and post user generated content. Then sell ads/sponsorships to companies that want to be in front of that audience. For example, if you create a site for people to submit cute dog pictures, a company like BarkBox might pay for sponsorship.
- Teach people a skill and use Amazon affiliate links to the tools that you use (if possible).
- Marketing analytics. Build a tool that integrates with Google analytics and provides recommended actions to take to improve website performance.
- Create a stock photo site for a specific niche (doctors, lawyers, start ups, etc).
- Create a directory for a specific niche and then sell top placement on that directory.
- Create a site that allows people who don't know how to code to make an app.
Some open source project ideas:
- subscription commerce (open source birchbox model)
- location based platform for mobile apps (open source Uber/Lyft model)
- host your own airbnb page (open source airbnb)
essentially, any type of successful business model that can be replicated in other industries, open source it, then monetize on templates.
Then see if that country or region has a dominant job board/classified website/real estate listing etc.
Millions of users are just coming to the internet in those countries and have room for growth. Many of the existing websites offer horrible experience.
Second revenue stream for this - there are lots of "end of the world preparedness" sites (think of the people who are buying Glenn Beck's gold coins and you've got an idea of the demographic) that would pay to advertise on a website that attracts people who want to buy their way out of future-phobia.
Ancient, but here's a blog post I wrote with some ideas: http://www.puremango.co.uk/2010/10/ten-ideas/
And Jacques Mattheij's post that inspired me: http://jacquesmattheij.com/My+list+of+ideas+for+when+you+are...
I have a few other ideas in that vein, but I am curious of any traps that may be encountered.
I have had a few comments downvoted. Some of them a lot, but I learned that sarcasm doesn't translate well in text. Complaints about downvotes get downvoted every time, usually even by people who didn't mind the first comment.
If you are worried about your karma level then try to post interesting stories you find elsewhere. A comment will never get more than a few upvotes, but you can get hundreds from posting a story.
Between living-in-California posts and posts focusing on commercial rather than technical concerns, HN is rapidly becoming less interesting to me, despite having used it consistently for less than six months -- unfortunate since there's a notable minority of extremely interesting technical posts that I need to dig through the 'new' section to find!
Been using pay.reddit.com for a while now
Who knows, your good deed could end up getting you in some trouble. But it's true of any good deed you'll ever do in your life. You can't let the risk of being harmed stop you.
A better approach may be to not focus on cutting costs but gaining profit. What extra functionality does your database provide, that can make their businesses more profitable? What extra value can you deliver to them?
In general, convincing people to give you money so that they can theoretically lose less money is usually harder than selling them on benefits and solving their pain points.
A potential response may be "Then why are you not hiring more people to update spreadsheet." Another response may be "How accurate do you think more people will be with updating a spreadsheet compared to a automated process." Another one could be "How important is accuracy to you?"
It all comes down to whom you were talking to, what is your value proposition, what is in it for the business you are selling to, and what is in it for the stakeholder you are talking to.
Mesos is bigger on services, openstack is bigger on virtual machines. They are different solutions for overlapping, but fundamentally different problems.
Here is an example of Ebay running mesos ontop of openstack:
So basically we took numbers from, say 1000 to 3000 as "valid" codes, used a modified implementation of RSA to encrypt them to numbers in a specifically sized domain and then base-30 encoding them, to exclude pairs of hard to distinguish digits and numbers (5 and S, 1 and I, 0 and O).
To validate the codes, the code needs to decrypt the number and verify that the value is within our allowed range (in this example, 1000 to 3000).
This is relatively safe if the domain is big enough that random guessing has a very low probability of hitting a valid code. On the other hand, the domain needs to me small enough that the codes can be easily typed, typically 12 digits is way more than we would have done.
What is this from?
Some game codes actually consists of a memory address and data to write into that address so you wouldn't expect there to be a simple sequence.
It reminds of exactly how I felt two years ago, before I quit my job chopping up bloody cows at a meatworks and "became" a programmer. If I can do it, so can you!
Like you, I thought my lack of connections or programming friends was the biggest hurdle. I came up with the following plan to get started:
1. Build five small apps that I can put on my resume, and are built for some specific end-user (or group). 2. Regularly contribute to an open source project I believe in 3. Attend programming meetups to be around "programming people" (I attended Python and Functional Programming meetups)
I did not spend time on stackoverflow or blogging about code because they weren't the biggest thing I could do to get business. They were part of my plan originally but someone pointed this out and I took them off.
To build my resume I would build demos for small job adverts on Elance. I wouldn't apply for the job, only slowly complete it and put it on my resume so I appeared valuable. Later, I earned $1,350 over 5 months, before a small startup in Australia found my resume, liked the look of it, and asked me to join their team (earning more money that I've earned in my whole life!).
I didn't make any friends at the meetups but I'm 100% SURE you could. The groups were sponsored by local software companies, who provided office space and pizza in return for advertising their job openings. Other attendees would let everyone know about openings at their own company etc. The friendly, honest vibe will give you a much better chance than an interview, where there's a ton of pressure on the interviewer to pick a good person.
Read this, it's a great discussion about getting hired without "on the job experience":http://www.quora.com/Computer-Programming/If-programmers-are...
Also read this, don't get scared by the high level answers:http://www.quora.com/Programming-Interviews/Whats-the-best-w... - While you should definitely try learn as much as you can, at your stage you should concentrate on demonstrating your creativity, problem solving, willingness to work hard and ability to get results. Those questions are for programmers with high salaries on the line (but definitely read them)
Ramit Sethi's Earn1K course also helped. It taught me to communicate, sell my skills and find freelance work:http://www.iwillteachyoutoberich.com/blog/announcing-the-ear... It paid for itself in 3 months)
The funnest way I've ever seen to do this (but expensive) is to completely immerse yourself during a programming bootcamp and surround yourself with the industry and like-minded people for a few weeks. Check out the following thread and scroll down to "Physical Academies":http://www.quora.com/Learning-to-Program/What-are-the-best-w...
Edit: If you've got time for a podcast, here's the story of a hollywood filmmaker (Jesse Lawler) who quit his job during the recession, became a programmer, and now runs a successful development agency:http://www.tropicalmba.com/distributed/ (I liked the interview so much that I emailed him my "plan" back when I started. He gave me great advice and helped me refine my three steps above :)
Wow, sorry I babbled quite a bit, but I hope I shared at least one new and helpful thing with you!
I'm building my first app now. And it has been delayed as hell (already cost me one year full time on it, my family live on our previous savings) since I'm the only one to work on it. There are just too many things needed to be done. UI design, information architecture, strategy... The most challenging part is writing code for both ends. I have almost zero knowledge of programming. Even most of the tasks/concepts seems easy, however, there are simply too many to learn and practise. It goes worse when they come together. But I still want to ship my app, because I want to use it and I'm fascinating to test the idea. I want to see the result. Even with the worst result, I'll gain enough skills and cases to start a career in programming.
So just hang in there, no one is able to learn programming for you. If you don't fix question A today, it will be still there tomorrow and get in your way. Little by little, I think you'll see some results in 6 months. It's not a short period. But compared with our life span, it is worth it. Like others said, building something is a good way to have a learning/practice path. Good luck to you and all fellows in the same boat.
That being said, as someone below mentions, I am TERRIFIED that even though I spend most of my free time coding, it will be far less enjoyable as a full-time career. But, on the flip side, I really do enjoy creating and building things with code.
I hate testing, I rather not work with someone else's code, etc. I love building. I would just have to set myself up to work for companies that are in the building stage where I am constantly working on something new. I think that can certainly be done.
Here is what it comes down to for me and why I am heading in this direction and why it is never too late:
- I have dreams that involve technology (building things, running my own company)
- If my dreams fail, what profession is going to set my up for long-term success and is going to be sustainable for the next 30 years. And I rather do it now at ~28 than regret not doing it in another 5 years. (Engineering)
- I want to work in an industry that is moving the world forward with extremely intelligent people. (Goes back to, my job means nothing.)
- And most importantly, there are examples and inspirations all over the world that show why it is never to late and that you can do what you put your mind to. The human mind and body is an unbelievable specimen. It will be hard, but you just have to decide. Just decide and go do it. Don't waste time because life is pathetically short. And you can be whoever you want to be.
It is your choice to wake up with a smile on your face everyday and to put a smile on other's faces. We all have to work to live, but what you do outside of your profession and how you have fun with your profession is what it is all about.
The answer is - probably yes. I built a Linkedin profile and taught myself to use Github and created some projects and published some wordpress plugins over a couple of years. Since I also had a graphics degree (apparently worthless), I made some logos and a couple of wordpress sites for people, for pocket change. Nothing much has happened yet - occasional freelance work and I'm interning at a startup but, you know, it's probably never as hopeless as you think.
For now, I think I could focus on web development since I can setup Wordpress blogs or static pages and tweak CSS. My goal would be to become mobile app programmer/embedded programmer.So I thought about learning Swift - it's new I know but it feels a bit like Python.
I want to treat my self-teaching as something serious - set aside at least 10h weekly which I think I can do. It's just sad feeling for me ... new city, totally new job. But you all are encouraging while also setting real expectations = I'm determined to do this.
I will try to figure this out without CS degree. Taking a year off of work just to learn programming is something I might be able to do financially, I can just move out of Canada back home where it's 5x less expensive or to South East Asia where it's even less to focus on this.
I think the reason why I fear this is because I have no connection to other programmers. I am not shy, actually quite opposite, I have "cool" hobbies (film making, bmx bikes, music) but smart people are kind of intimidating, even more so when I'd like to discuss my projects with them.
Anyway, so far I programmed this little CLI utility (just to paint you a picture how "far" I've come from non-programming to newbie since Jan) -> https://pypi.python.org/pypi?name=flashCardStudy&version=1.0...
Anyway I want to thank everyone for their input. I discussed how frustrated I am with my life with my girlfriend and she totally supports me - she'd be willing to push me through school = universities are "free" (paid from taxes) in my country so I just need money for rent and food. We have CS programmes where you obtain bachelor degree in three years but it's heavily connected to math which I kinda suck at. We'll see.
As a failed entrepreneur in India i came to Singapore as a Mechanical engineer in 2006 and observed that IT was paying far better salary than mechanical and immediately went back to India after i had got my permanent residency for a 3 months study and came back and got a job in IT by telling my Hiring Manager to give me any salary for 3 months and if i am able to deliver give me good salary and was able to deliver.
Once i entered IT field i grew to senior project manager and spent too much time managing other developers and got hit by the start-up bug in 2008.
Unfortunately even though i was very technical, i did not have any programming experience and had to pick up everything by starting again.
If i can pick up again at 41 you can definitely pick up programming at 28.
The addictive part of programming is the problem solving aspect and the boring part is the actual writing (validation, idiot proofing, re-factoring) of good programs.
If you spend more time on the Problem solving aspects of programming, you will be able to learn more faster. Ex. Since you are working in construction, does your company require any useful information to be captured in a database using a website which they are currently doing in excel. Solve these types of problems and your skill will improve.
Find a problem to solve and solve it yourself by programming you will find it is faster and more interesting and you will persevere and ultimately succeed.
The problem gives you focus and solving the problem will give you skill.
I'm 31 and just started to learn, I do get a little frustrated at times, but ultimately I know I'm good enough to get to the level of getting hired somewhere. The more you work on little side projects and ask questions, the more you realize that it is within reach.
When I was in grad school, I was 21, most of my colleagues were 30 and a couple in their 40s, who wanted to be professors. Just go after what you want and have fun while doing it.
Consider: if you devoted yourself to reading and working on open-source projects or even some contracting, going to workshops/codeathons, local user groups, and etc., you could built up some expertise and even a pretty decent portfolio of work within a few short years. Give it even just 2-3 years of being disciplined with it, and you could very possibly have more to show for it than some who have been coasting in the industry for far longer. After 3 years, you would be only 31, and you could have a programming career for 20-30 years, if you so desired.
Bottom line: you can do it. But you gotta be ready to work hard and jump into things.
As you are in a manual job, I think the end of the day you will not be so tired mentally, and you will have more energy to program stuff you like. In a company, probably, and most in the start of you career, you will got more boring stuff to do, and you will cannot choose what you want to do. Have you thought about this?
Beside of all of this, you need to choose what do you really like to do, if everything goes wrong, you can change again. Your experience will never be lost. Good luck!
Learn by doing.
And if you feel now or in the future that you'd like a dash of fundamentals to go with your programming practice, you have options beyond those of traditional education. For example, Udacity has a great Introduction to Computer Science online class:
The free courseware includes the lectures and auto-graded exercises. It's Python-based, but goes beyond programming languages to touch on foundational CS concepts in general. Recommended.
I'm so impressed with how it has turned out, I'm looking to make my next hire from the next batch of recruits.
If you can't afford a crash course like the one I mentioned, try Code Academy and Treehouse.
It is definitely not too late for you!
I'd be very interested to see what others have to say about this, I doubt if it is a very uncommon problem at the moment.
I got a degree in an unrelated field, did a lot of different things including manual labor, being a grower on a farm, working on a concrete crew etc. I had a construction contracting business with employees for over 5 years that fed me but eventually went bust. I then got a job as a project manager for a large outfit and was paid fairly well for nearly 10 years. It was extremely stressful with long hours and lots of travel.
I got a break when some people I knew with a mission critical Access business application asked if I could help fix it. I re-wrote it using HTML, Python and Sqlite, set it up on a server, and they could access it from home. They were tickled pink and I got a little more work. It still wasn't enough to pay all the bills though. But I had a number of projects at this point. None on github, but that's not my world. A few weeks ago I saw an ad for a web developer at a large institution here in town (small town...far away from the tech centers) redoing their internal web applications. I went in, talked to the manager (an old perl programmer), gave him links to a few of my projects, (they got a lot better over the years), some sample code and was hired just like that. I start on Monday. I won't make as much initially as I did project managing but hey.... I'm excited. I have the programming bug and it's all I want to do. And I'm an old guy comparatively. So yes, it can be done.....
I was interested in building websites and after my curiosity getting the better of me, I ended up playing with SQL injection. Instead playing with my own websites, I thought it would be more fun to find the same vulnerabilities in other sites.
You can imagine my excitement and disbelief when one of the largest online DVD retailers in the world ended up spitting out over 600,000 records complete with SSN, full name, address, credit card number/expiry/CVV, email. Among these records I found the information of a certain female CEO of the world's 2nd largest food and beverage company (or someone pretending to be her). Of course, about 70% of these were expired, but I was just curious. I had no intent to use them (okay maybe a little itch).
My excitement quickly turned into fear as I realized the legal implications of such a feat. And against my better judgement, I contacted the company and let them know about the vulnerability.
Fortunately, after warning me that they would use the law to its full extent in punishing me if they ever found those records leaked/used, they left me alone.
Around that same time I also compromised various government departments of South Asian countries (think Indonesia, Malaysia, etc). But they never replied when I notified them.
Still scares me to this day.
Hung out in a private IRC channel where gamehackers resided, guys who made cheats for valve games. A few of us exploited websites (complete skids, just downloaded shit off milw0rm). Not too exciting a story, but one of the guys links me his injected c99 shell to some site, and then links me their directory of plaintext databases that include CC's and tons of info burried into some stupid generated path like a/w/da/w/r//13/g3/g/g/3/g1/g1/3ga/g/s/g/<csv files>.
Turns out all they did was parse this shit with a PHP script from their form over HTTP. I emailed them this story. 3 weeks later police raid my house, I give them every email I know of from the hackers I knew, and they spent hours meticulously disassembling every part of my computer and filing it in these special plastic bags and boxes. Then my Dads computers, and my Mom's. And all our laptops/tablets.
The only scary part was when the cops picked me up in an unmarked van to take me home to open the door for the agents or whoever they were. They asked me one question, "when you're ready, tell us what you did". Obviously being 15 I'm shitting my pants and just start ratting myself out for the next 15 minutes until we got home, and even then I had no idea what the fuck I did until it dawned on me. Cops probably tell this story to this day.
Goodbye $15k~ which I'm still on the hook for from my parents. Yet to hear back from the police.
I still have no idea what the fuck happened.
I wrote a script that allowed me to create a Google account with the IP address of a visitor to my website, all without them knowing. All I had to do was open the registration page with a server side script, download the CAPTCHA, display it to the user and ask them to fill it out. When they filled it out, the submitted form targeted the Google registration form in a 1x1 iFrame, then another button targeted the logout form. Google was not checking the referrer of the sign up form, nor was it comparing the IP address that received the CAPTCHA to the one that submitted it.
I had a friend load that script into thousands of generated blogspot blogs, which got long tail google traffic and asked the user to "fill the CAPTCHA to continue." The script ran for ~2 weeks and generated ~60000 Google accounts all from unique IP addresses.
That was around 2007, so obviously it's all patched up by now. I was 15 years old and never did anything with the accounts, so if anyone from google is reading this, keep the lawyers away from me please.
Blackhat SEO actually has a lot of clever tricks. I haven't been part of that space in a while, for a lot of reasons, but I can attribute 99% of my knowledge of marketing to time spent trawling through blackhat SEO forums reading not only about that, but also landing page optimization, conversion tracking, copywriting, etc. It was definitely a worthwhile learning experience for me.
Sometimes, we couldn't crack the game. As a last resort, we would gently peel the game sticker off the store floppy, and glue it on an blank floppy. We would go back to the store, and say "uhh...this game doesn't work". They would give us our money back - rarely with any resistance.
We would then walk to the game section and pick out another game.
A simple LIST of the program revealed the supplies you had available. Another command to update the line (lines?) of code to change supplies (Oxen becomes Monkeys, Bullets becomes Bubble Yum, you get the idea).
Once we all started playing, the confusion and giggling ramped-up pretty fast. It didn't take long for the teacher to figure out the perpetrator. It was the first time I had to stay after school.
The only reason I was caught was because I complained to the sysadmin about disk space and she looked up my account and happened to spot .bat files and she came in and confronted me during a class and I became the youngest student to be put on the permanent wall of shame for technology violations which was usually reserved for students who look up porn.
cat > /dev/ttyNN
I don't remember even knowing there was a root account or /etc/passwd then and I was too busy trying to learn enough vi to get my COBOL programs done. The things we endured to get to take "the computer class" at school.
Ran the program on teachers PC when she wasn't looking, ran the client on my PC, spent the next hour confusing the teacher.
Hacked the schools computer system during school hours and had access to ALL passworts of every pupil and teacher in IT courses. Access to the admin account was saved in a file on the networkserver you would normally not have access to...
When Aaron died, I felt sad that I'd never see him again and that he wouldn't be around to fight things anymore, but I don't feel like it makes someone a bad person, I feel like maybe we should all do a better job of trying to understand where people are coming from and accept that there's always more going on that people share.
Don't do it, you might miss something.
I know a lot of people who feel the same way. In computer science, you can make your own path to a job:
1. Do interesting projects in open source 2. Using (1), apply for internships - offer to work unpaid3. Using (2), get relevant experience on your resume4. Apply for jobs - there are interesting startups that look more at skill than degrees.
These steps have nothing to do with your degree at all. You are quite lucky to be in CS where the skills matter more than the degree - make use of it!
My job was to hack shit, find vulnerabilities and write automation for attacks that our systems could prevent. There were 4 pretty big code bases (>100k lines) that were used for the same thing. There was no inter-team effort, everyone wanted to roll their own rather than working together because the bosses had huge egos and wanted their name in the brick.
I was tasked with building a new framework!
So yeah, five different automation frameworks, one for automating attacks against devices and servers, one for smoke testing (pound the box with traffic) etc. Mind you all of this shit could be done with a single framework because many of the tasks were similar. So I created a way to build test profiles from our test plans and consolidated the code bases. I learned a shitload about dealing with existing code during this effort. It was awesome in that respect, I learned how to deal with poor management decisions - execute better than they ever did.
Long story short I refused to scrap everyone elses hard work even though my boss told me to "build it from scratch and use it for the security team only". The reason being is because starting from scratch would have incurred more technical debt than the consolidation effort took. Mind you every other department in eng could have used said framework. Anyhow, under the radar I went about consolidating the other four frameworks and I gave my boss the timeline without his knowledge of what I was doing.
Three months later every eng department was using this new framework using the tools that they were used to using for deployment and verification, just a new ui and a lot of code that was cleaned up and everyone was pretty happy with it to be honest. Everyone that actually used it that is.
My boss, who never used any of the frameworks, got pissed off that I did not build a sec. team only framework and asked me to build a version only for the security team for "security reasons". This was the proverbial straw that broke the camels back. This fucking moron wanted to satiate his own ego at the expense of my peers time, health and the company. I don't really care too much for the company but everyone I worked with was very competent and I did not want to just throw the baby out with the bathwater. That would be stupid.
Long story short, I was interviewing at places at the time and got an offer that very day so I decided to take the offer.
Moral of the story:
Don't have your engineers build 4 different automation frameworks and then ask an engineer to "rebuild" a custom version for a bullshit reason. Don't build shit from scratch unless you are learning/experimenting and at large companies, they rarely reward experimentation.
I get that this might not exactly be technical debt but 4 frameworks and the effort I had to put in to the consolidation was brutal at times. Improperly used technology, poorly deployed interface supporting services and solutions for transient failures of tests being "just reboot the test box" was too much bullshit for me.
God I fucking hated that job. I will never work for a large, well established company again if I can avoid it. My startup might be getting picked up soon by a conglomerate and I have 6 months left on my vest. If we end up at the conglomerate I am going to quit and take a few years off working.
That is my experience.
But that's not how it happens. When you bought the Playstation you also got a copy of Call of Battlfield Honor Brothers, and your friends aren't going to wait half an hour while you do that. So you steal the AV cords from the Wii, run them in front of the DVD player, and plug them into the XBox's TV port.
So now, the system still works, but it's not ideal. You have to move some cords if you want to play a DVD. You have to unplug the Playstation if you want to play Minecraft on XBox. And heaven help you if you want to play Wii Bowling.
Now imagine this happens many times over several years. You get a new XBox. And a Bluray player. And a new sound system. Each time you do what it takes to get things working, and no more. Pretty soon, just to watch Netflix you have to rewire a whole switchboard of cables.
At some point, you need to pay off your technical debt. In this case, by taking a whole Saturday to unplug everything, buy some new cables, and re-route all the connections in a clean, logical way. It's the last thing you want to do while your friends are playing Band of Duty-bound Heroes IV, but if you don't, you'll be rewiring Ethernet cables in order to watch Hulu until the end of time.
You should do the same. Just read about what's out there, and you'll find something that you really think is awesome. Then you'll be motivated to do some coding!
There's tangible benefits to this too - for me, I reached out to a professor to help out with his research in an area that I found particularly interesting (computer graphics). Just ask around!
All of the great programmers I know got that way by repeatedly thinking up a cool idea they had, researching how to do it, and winging the rest. All you need is Google these days.
Though, of course, schooling can accelerate the learning by teaching you the mistakes of your elders so you can conveniently bypass them.
(1) What are you testing? (e.g. hardware?, software?, firmware?, ...--and more detail is better)
(2) What are you trying to automate? (e.g. an oscilloscope?, a LogicProbe?, network throughput? computational load? memory usage? algorithmefficiency? a software bug test suite to find regressions? ...).
Other useful questions are:
(1) Does your company do experimental/research work?
(2) Is your company using "Agile", or "TDD" (Test Driven Development),or some other organizational methodology?
(3) What are your constraints? (e.g. do you need sub-millisecond timingresolution?, are you limited to particular interfaces/buses like Serial,GPIB/HPIB, SCPI, PCIe, USB, Ethernet, ...?, do you need to useemulators?)
(4) Does your company have an existing test regimen?
(5) Is your middle name Tim?
OK, that last one more than just a joke; it's actually a trick questionand it serves a point. The best test design and automation engineersI've known all have a real knack for doing the unexpected --You canoften find bugs by doing unexpected things.
Whether it's called "Test" or "Quality Assurance" or "Total QualityManagement" or whatever, the field is absolutely huge, and it can beextremely fun and challenging.
Anyway, he's goes to a lot of conferences so it's not uncommon to see him. I wouldn't act like a big fanboy, trying to ask him clever questions about null or anything like that.