in this video i wanted to put together a simplecareer strategy for those mgtow who would like to get into software development. now, this will not be video teaching programming. it will be a video inducting you into theworld of professional software development. it is my hope that this video will serve togive the breadth needed to any aspiring developer
Game Dev Story Hardware Engineer, in order to structure a learning plan forthemselves in anticipation of entering the industry. first, let me give you a little bit of mybackground so you can feel confident in the soundness of the advice in this video.
firstly, i have been working professionallyas a developer for about 13 years. preceding this, i have been writing code andgenerally screwing around with computers since the age of 11, starting in 1993. though i did not start writing code till aroundthe age of 16, the early 90’s were a great training ground as computers were generallyunforgiving back then. i hold a degree in computer science; i haveworked for about a dozen different companies in industries such as medical, financial,entertainment, telecommunications, research and development, social media, and gaming. i have held positions from the generic titleof developer, to director while under the
employ of others, and i played ceo/entrepreneurfor 3 years with a staff of 5 people. the largest software house i worked for wasmicrosoft. i have been a hiring manager in several rolesand wielded budgets in the 7 figures. overall i have run the whole gamut that thisindustry has to offer with very few exceptions. i learned a great deal in my time in the industry. a lot of the lessons i learned are counter-intuitiveand may come as a surprise to many of you. first i will cover a number of lessons i learnedabout this field and later i will give a description of how roles are arranged. finally, i will present a specific end goalthat should guarantee universal employability
across all industries if pursued fully. the journey from zero to 6 figures i estimatewould take someone around 6 years, where the first year is assumed to be completely devotedto self-study. okay. here are the most important lessons i learned. firstly, in the software development sphere,you start at the top and work your way down. this means that the best role you will haveis going to be at the very bottom of the management hierarchy; every promotion you get, from developerto team lead, to project manager, to development manager, to director or whatever the processionlooks like in any given company, is a step
down in disguise. this may seem counter intuitive but it isa hard lesson i learned by climbing the ladder. now, let me try to explain how this works. you see, as a ground thumping software developeryou spend all your time in code. this means your day to day job hones a skillsetthat is universally valued in virtually all industries, for all projects, in all countries. every promotion you get begins to narrow downyour options as every promotion slowly puts you further and further away from the code. in addition to this, every promotion you getentrenches you further into the politics of
both the particular industry as well as theparticular organization which in turn reduces the transferability of your knowledge to anew organization or industry. now, you may be asking yourself, won’t iget more money if i get promoted? the answer is almost always no. let us see how this works. firstly, you need to look at software developersas having a rough progression of titles. you start out as a junior developer, thenmove on to a title of developer, and then to senior developer. from here you may hold specialized titlesas software architect, user experience developer,
or any number of other specializations. but these title progressions are not promotionsin the sense of authority. a senior developer’s day to day job is notfundamentally different from that of a junior developer. no matter which of these titles you hold,you are still fundamentally writing code and doing little else. this is the bottom of the management hierarchyas non-of these titles involve managing people or spending too much time on non-programmingactivities. the progression in these titles typicallyonly results in a pay raise but no responsibility
changes. now, let us directly explore why getting apromotion out of this bottom tier will not usually lead to a pay raise. a senior developer, though still in the bottleof the management hierarchy, can command salaries close to 200k at the top limit while salariesof 120k are quite common in larger software houses and a salary of 70-90k is quite commonin the smaller software houses. now, team leads are drawn from the pool ofsenior developers, however, their salaries will be commensurate with their experience. this means that a senior developer who hasbeen working for 10 years will be making 120k
but need not be a team lead. a senior developer of 5 years might be promotedto team lead but because of his relative lower experience, he will only be earning 70 or80. so though the team lead has some authorityover a senior developer, the senior developer of 10 years’ experience can in fact be commandinga salary 50% higher than his boss. this difference in salaries grows even largerbetween project managers and developers. there are tons more project managers availablein the industry then there is demand. this brings down their salaries substantiallycompared to senior developers. where our senior developer of 10 years hada salary of 120k, the project manager might
be on 40 or 50k. this difference in salaries tends to startclosing at the director level. directors tend to make similar money to themost senior developers. it may sound absurd but trust me, i’ve beenin both roles. now, let us compare the role of the directorvs the role of a senior developer. the senior developer continues to write codeday in and day out. he is not bothered by office politics, noris he responsible in ensuring that the project is on schedule or on budget. the senior developer can be fired or quitwith little to no concern that he will find
a job of comparable money almost immediatelyas the demand for senior developers far outstrips the supply. of course, this is assuming he is locatedin a city and not some back wood town. now, this is a nice, stress free, high paying,politics free existence that the senior developer enjoys. the same cannot be said about the directorwho is making equivalent money. they director usually has to oversee anywherefrom 30 to 60 people; he needs to worry about budgets, reporting up to even more seniormanagers, and dealing with management politics. he spends a lot of time writing emails, creatingreports, and facilitating communication.
if he gets fired, he will have a hard timefinding a role at the same level as there is not a large demand for directors. his skillset is only partially transferableas a lot of the effectiveness of a director is contingent on his experience in a givenindustry, market, and organization size. this means that an it director in a financialinstitution will not be as effective in a gaming company whereas a developer has fewerissues with such an industry shift. our director is usually working many morehours than the senior developer as there are 30 to 60 people coming to him with one problemor another. in essence, the director has a lot of responsibility,more stress, and extra hours of work for the
same money as a senior developer. so, in this way, in the software industry,you really start at the top and work your way down. it takes an average of 5 years to gain therank of senior developer and command these 120k+ salaries. it will probably take you 10-15 years to becomea director. but there is yet another damning blow againstattempts to move up in the management ranks. this is contracting. now, contractor software developers commandludicrous day rates; in london, you can get
rates as high as 1200 pounds per day as asenior developer. it is almost impossible to find managementpositions if you wish to be a contractor. the end game for any developer is contracting. now, you might be thinking to yourself thatthe life of a contractor is much less stable than that of a permanent employee. this too is almost always false as well. this is the second of the counter intuitivelessons i learned in my career. you see, the explanation for this is concealedin how corporations track contractors within their financial projections.
a contractor is an employee that can be letgo at almost any point. this puts them in a rubric outside of futureprojections in costs. a full time employee on the other hand iscounted in future projections in costs. full time employees are also a lot harderto fire. now, what i have seen in the industry is asfollows. when financially difficult times hit the softwareindustry, corporations need to make cuts. now, because permanent employees are generallydifficult to fire, you get a lot of dead weight staff who have grown complacent over the yearsbut cannot be easily let go. i have seen corporations use financially difficulttimes as an opportunity to cut dead weight
in permanent employees first. when microsoft was downsizing 5 thousand peopleback in 2008, i was a contractor in their employ. almost all the 5k layoffs were permanent staff. the general disposability of contractors isalso a strength of contracting. as software companies have as core businesssoftware development, they will always need developers. in uncertain times, it is wise to keep disposablestaff doing the work that you can get rid of at any moment than to keep permanent staffthat are harder to get rid of.
now, this may not always play itself out inthe way i describe, but from what i have seen and experienced first-hand, contracting isgenerally the safer bet for a software developer. there are many other reasons for this. firstly, are the reasons i have just mentioned;security during downsizing. secondly, contractors earn substantially morethan permanent employees. you can earn a full year’s salary in 3-6months of work whereas a full time employee would need to spend 12 months. now, you might be asking yourself, if thisis true, why would companies hire contractors over permanent staff.
well, one reason is that contractors do notcost much more than a permanent staff member even though they earn a lot more. you see permanent staff leverage all sortof benefits that the corporation pays for in addition to paid leave and so forth. however, many of these benefits packages areaimed at families. so, company paid for health insurance maybe a meaningful benefit if you have a wife and 3 kids, but as a single man, you are betteroff taking the cash equivalent of that and pay for your own health insurance. also, many benefits that companies give arecontingent on life choices.
for example, i know one bank that offeredto pay your monthly mortgage and car load payments as a benefit. of course what this bank does is simply takeon your loans, spreads these loans out to their maximum durations, and makes the minimumpayments. this may be a valuable benefit to someonewho owns an expensive house and an expensive car but is a meaningless benefit to someonewho does not. a contractor, once again, gets the cash equivalentwhereas a permanent employee would not if he did not own a house or car. when you compare the cost to a company fora permanent employee and a contractor, the
numbers look pretty similar. however, the contractor gets his benefitsin cash as opposed to options you may never leverage. thirdly, recruitment agencies make massiveprofits off contractors. a headhunter will take a one time fee forplacing a permanent employee, but the agency takes a monthly cut for a contractor. also, the margin the agency takes is a percentageof the day rate of the contractor which encourages the agency to fight for the highest possiblerates on behalf of the contractor. also note, that this margin is not taken fromthe contractors day rate but it a fee charged
to the employing company in addition to thecontractors day rate. the typical agent percentage is 7%; if theyplace a contractor at a 500 dollar day rate and the contractor works 20 days a month,then the agency will take 700 dollars for each month the contractor is employed withthat company while the contractor will take home 10k. fourthly, because contracts tend to roll ona 3 to 6 month basis, the contractor always has his hand on the pulse of the job market. this means that he is always in touch withthe movers and shakers on the recruitment agency front which also means he is alwaysaware where new roles are popping up, how
much they pay, and what direction the technologicaldemands of the market are shifting. this has an effect of giving you a sense ofsituational awareness in the market at all times. personally, i get recruitment emails dailyand usually 2-3 calls a week each and every week from recruiters trying to poach me. finally, contractors do their taxes differentlythan permanent staff. all income paid to a permanent staff memberis subject to income tax as it is payed to the employee as income. this is not the case for a contractor.
a contractor owns their own corporation. this corporation invoices monthly the employingcompany for the labor of the contractor. how much, how often, and in what way the contractorthen decides to pay himself from the monies held by his corporation is his own business. also, a contractor benefits from things likedirector expenses and a whole lot of other tax free ways of accessing the corporation’smoney without it counting as salary; or, he may choose to not pay himself at all. he may choose to pay corporation tax on anyprofits his corporation earns and then over several years pay himself a salary under thetaxable yearly income limit to get that money
out of his corporation. this is an excellent way to save for retirement. so where a permanent employee may earn 100kin a year and pay out 40% in taxes, a contractor who invoices 100k a year may choose to onlypay himself a salary of 30k and may the lowest income tax rate, then claim 20k in tax freedirector expenses for things like his apartment, gas bill, electricity bill, travel expensesand so on, while leaving the remainder of the money in the corporation to invest withand only pay corporation tax on it. of course, depending on which country youlive in, corporation tax may be large, but for me, corporation tax is 12%.
once corporation tax is paid, that money cansit in the company indefinitely tax free. you can basically keep hoarding money in yourcompany this way until you choose to retire, then withdraw that money as income over manyyears paying little to no income tax. of course, while this money is in the corporation,it is properly invested and not sitting in a worthless savings account. now, let us move onto another lesson i learnedover the years. you do not need to have a university degree,or any certifications to gain employment as a software developer. this is much more true today then it mighthave been a decade ago as there are many exemplars
of success stories of people who never wentto university in this field. also, you will find that many hiring managersthemselves may not hold a university degree and as such see little reason to hold prospectivehires to that standard. one of the best managers i ever had was inmicrosoft. the man only has a high school diploma, isin his mid-thirties, and is a regional director. he learned to code on his own and had no problembreaking into the industry because he was good at what he did. now, i have served as a hiring manager myselfand i have had countless friends in the industry who have been or currently are hiring managers.
the primary point of interest of any resumeis the technologies that a candidate has experience with and years of experience in the industry. the most valuable quality, however, is entrepreneurialexperience. what a hiring manager is looking for in acandidate is someone who has courage in code and can take initiative. this may seem like a strange thing, but youfind there are a lot of cowardly developers in this industry. now, a cowardly developer is a developer whois afraid to make wide sweeping system changes in order to improve the code base as a whole.
a cowardly developer will stick to sectionof an application they understand and hardly ever deviate from their comfort zone. the analogy to this is someone who is afraidto leave the city they grew up in. but, first let us talk about what gettinga degree in computer science looks like. now, it is important to understand that adegree in computer science is not a degree in learning how to be a software developer. it is an overview of the entirety of the fieldof computer science. this means that you will spend time with mathematics. you need to learn mathematics in order tograsp concepts that you would need if you
want to build your own processor, or programminglanguage. you will spend time composing pseudo-codealgorithms solving highly academic contrived problems that are only ever encountered inacademia or in the highest echelons in the research and development departments of verylarge corporations. in a word, of a 4 year degree, you will spendno more than one year on writing actual code. in my program, there were 2 modules whichdealt with programming directly. one was based on the c programming language,which is a procedural language, and then the follow up was a single 4 month module on programmingusing java, which is an object-oriented language. there were a total of 32 courses i neededto take in order to graduate with a degree
in computer science. of those 32 courses, only 18 were compulsory. of those 18, 4 were pure mathematics; calculus,algebra and geometry, set theory, and finally graph theory. of the remaining 14 courses, 4 were relatedto hardware, namely, construction of things like adders via logic gates, how network hardwarelike routers work, and various other material related to the physical construction of variouscomputer parts from the most basic material. i am sure there is overlap with electricalengineering in these courses. now, of the remaining 10, one course was abasic computer use course; so, how you turn
a computer on, how you open notepad, savea file, and so on. of the 9 we said that 2 were directly relatedto programming. of the 7 remaining, one module was about databases,two on development methodologies which deal with theories about how teams come togetherto organize themselves on a project. the remaining 4 are highly detailed, mostlymathematically oriented courses discussing certain concepts used in software developmentsuch as file structures, data structures, algorithm design and so forth. now, it might seem like there are really around7 or 8 courses which are directly relevant to software development.
this is a half-truth; but even if it was completelytrue, this would mean that there is only 1 full school year in a computer science degreethat actually deals with software development. however, the full truth is much more interesting. you see, other than the 2 modules that dealdirectly with programming, the remaining courses are mostly theoretical. however, they are theoretical in a way thatis not very relevant to the day to day work that a software developer does. let me give you some examples. the course that dealt with how teams cometogether in organizing themselves to build
software taught models that are not actuallyused in industry in a majority of places. so, though in theory you are learning somethingyou might use, the odds are stacked overwhelmingly against you that you will find yourself ina company that actually uses these methodologies. now, you may be thinking to yourself thatthe reason for this is simply that the university is behind industry as far as practices areconcerned. this is only partially correct. yes, university courses are behind the times,but the complete answer is that virtually every team in every company home grows a methodologythat best fits the political landscape of the company, the skillset of the team, thenature of the product, and the size of the
team. this means that in school you merely learnthe concept that teams organize themselves around methodologies, but you will never beable to learn the exact details of a methodology of a team until you start working in thatteam. also, when you are learning these methodologiesin theory, their application looks almost nothing like what you imagined it to looklike. also, by the time you hit the industry, thedetails of the module have long escaped your mind. now, what about courses in data structures?
well, these two are only half useful. the level of detail you learn about thingslike linked lists is so fine that it loses all but the highest level meaning in industryas oppose to academia. let me give you a concrete example. imagine that you need to store a list of namesin some data structure. you can choose to use an array, a linked list,or say a hashtable. now, let us assume that the array has a performancerating of 1, the linked list of 10, and the hashtable of 100. well, in this example it would appear thatthe hashtable is 100 times slower than the
array so you might think to yourself thatyou have written much better code by using the array as oppose to the hashtable. this is true, however, in a real life scenario,this may mean that a user either needs to wait 1 one thousandth of a second, or oneone hundredth of a second for an operation to complete. as neither are temporally perceptible by ahuman being, your selection of the array over the hashtable is effectively meaningless tothe user experience. now, this was a contrived example but it servesto illustrate the point that though intimate knowledge of data structures may be useful,it has such diminishing returns that it almost
becomes meaningless except in insanely highvolume operations, which is not as common as you imagine. also, these courses have an interesting wayof forging your thinking about writing code that is counter-intuitive to practical application. let me ask a simple question that almost everyjunior developer gets wrong. what is a software developer meant to do? the most common answer is, well, a softwaredeveloper is meant to write code. this answer is wrong. a software developer is meant to solve businessproblems.
well, you might say to yourself, but marcus,that is just word play; of course a software developer is meant to solve business problemsbut he will do so by writing code. my response to this is that once again youare wrong. writing code is not the answer in a very largenumber of cases. this is the trap that juniors fall into becausein university, you learn to pass courses by solving academic problems and not businessproblems. the correct approach is to first find an existingproduct that you can configure to meet your business need. this is almost always the cheapest and fastestresolution to most business problem.
if no such product exists and the companydecides to build their own, then the next solution is to look for an existing productthat mostly meets your business needs but also has an application programming interfacethat allows you to customize it adequately through writing code. if this does not exist then you need to planout your requirements and then look for individual existing components, either proprietary oropen source, that you then merely connect together through either configuration or code. now, this is the level at which most homegrown solutions will end up. if you need functionality that simply no onehas ever written before, or written badly,
then and only then do you write the code toperform the function yourself. you see, one of the ex-cto’s of microsoft,i don’t remember which one anymore, said that the difference in productivity betweena guru software developer and an average software developer is not a factor of 2, or 5, or 10. the difference in productivity is a differenceof 10k times. the reason for this is that the best developersin the world write the least amount of code; they have this enormous breadth of awarenessof various existing components that they can simply connect together to solve businessproblems in a blink of an eye. it’s the junior developers who are writingthe most code.
the most experienced developers are writingcode, but that code is mostly used to connect existing components written by others; likeplaying with lego. i mean, just look at wordpress. wordpress is nothing a very configurable applicationfor a non-technical end user. however, it also lends itself to customizationthrough writing plugins. a senior developer would much rather takewordpress and extend it then even considering of rolling their own blogging platform. however, many university educated juniorsare so detail oriented, trained on a curriculum of academic rigor, that they can only seethe faults in wordpress, and in their arrogance
would come to believe they can build somethingbetter. this is a common problem with developers;they miss the point of what they set out to achieve. now i think we can see why getting a degreein computer science is not needed to become the breadth of topics covered in such a degreecovers areas you will never touch as a software in addition to this, many activities and toolsyou will use in industry are never taught in a computer science degree. the good news is that 90% of all softwaredeveloper roles will never demand any of this specialized knowledge.
there is a whole hidden world of softwareapplications that exist for internal use in organizations that are never meant for publicconsumption. now, certifications in various software developmentqualifications have limited benefit in terms of securing employment though they are notcompletely useless. now, if you want to teach yourself to be adeveloper then there is only one attitude you should take to certifications. certifications are guides for basic competenciesyou should possess in order to not sound ignorant when discussing the subject at hand. this means the following; look at a certification,get the syllabus, go through the syllabus,
but don’t bother paying to get the actualcertification. use the certification material to help createa roadmap for your own education but little else. there are many certifications that truly meannothing; they only communicate to the hiring manager a form of initiative but do not themselvesstand as placeholders in guaranteeing the candidate knows anything about software development. like i said, it’s mostly down to years ofexperience and technologies known. now let me give you some insights into whatgoes through the mind of a hiring manager both when sifting through resume’s and thenduring the interview.
this should be useful in evaluating the roleeducation and certificates have in the hiring process. if the hiring manager is himself not technical,he will most likely have passed on the resumes to the team lead for which he is hiring newdevelopers for. if the non-technical hiring manager is notdoing this, odds are good he is not a very good manager and you don’t want to workfor such a team. however, those sorts of managers will usuallylook for things that look objectively good; university degree, number of companies a candidatehas worked at, and the years spent at each company.
now the reason that a hiring manager is lookingat years spent at any given company is to wager the general loyalty of the candidate. he will look for breaks in the career of thedeveloper and will also look for key words, such as technologies used. now, i don’t want to spend any more timetalking about the non-technical hiring manager because that is not going to be the most commonscenario. the most common scenario is that the ultimatedecision maker will most likely be technical or the opinion of a technical team memberwill hold overwhelming sway on the non-technical hiring manager’s decision.
now, a technical hiring manager looks at aresume in the following way. first he asks himself; what level of developerdo i want? this is very important as said earlier, 2juniors is not equivalent to one senior developer. so, if you are just starting out your career,you do not have a snowballs chance in hell of getting a job with a team that needs seniorstaff. let us assume that the hiring manager is lookingto hire junior developers. first, he thinks to himself, do we have asenior developer on the team who will be able to assist the junior developer in their work. if there is a shortage of senior developerswho would have the time to mentor a junior,
the hiring manager will not hire a junior. let us say there is a senior developer whowould have the time. the next question the manager asks himselfis the following; does the junior developer have a focus on the core platform used bythe company. now, this is very important to note. each company usually specializes in a singleplatform. it is only the very large corporations thatmay have teams that use a diversity of platforms. now, my advice is simple on this front, specializein one platform and do not attempt to diversify because you will most likely turn out mediocre.
however, this will be clarified later in thevideo. the good news is that most organizations tendto specialize in either the .net stack or the java stack. this is good news because it means you don’thave to worry too much what to choose from. but anyways, if the junior developer’s resumeindicates that he specializes in the core platform of the organization, he is consideredfurther. the next question the hiring manager askshimself is if the junior developer seems to be a full stack developer or specialized toa specific tier. now, this will become clearer later on butfull stack developers are always favored over
specialists in small to medium teams. in fact, other than some very large corporationswith very specific needs, full stack developers win hands down every time. the next question is a compound question;how much cash is the developer asking for in comparison to his years’ experience. now, what is important to know is that a juniordevelop ranges from 0 to 2 years’ experience so it’s not like you would be competingwith someone with a decade of experience; the price difference between such developersis very large. a junior with 1 year experience is almostalways looked up more favorably than a developer
with no years, but a junior with 1 year isnot really worse off than a junior with 2 years. the jump from zero to 1 year is large, butusually a developer with one or two years’ experience is not that radically different. now, if you are asking around 25k to 30k foryour first software job, you are in the correct range. i have seen juniors ask for as much as 45kand passed them by because there is little reason to blow an extra 15k on a junior whenyou can get a second junior for a mere 15k in addition to the asking price of 45k.
just so you know, microsoft pays entry leveljuniors 33k per year. once the experience to price ratio is right,and all previous considerations have been met, the junior is asked to come in for aninterview. getting an interview is relatively easy withthe right key words on your resume but getting through the interview is a different beast. now, there is a curious phenomenon that happenswhen a senior developer interviews a junior a senior developer usually sees himself inthe junior developer to some level. he was there at one point in his career andhe wants the junior developer to get the job…..if he likes the junior developer personally.
you need to keep in mind that the technicalhiring manager will most likely be working on the same team as the junior developer heis looking to hire. this means he is looking at a lot of non-technicalqualities about the junior. developers work is teams. one bad apple can poison and destroy a teamso personality is as important as skill. the senior developer most likely will go quiteeasy on the junior in terms of the interview unless he is a power hungry egomaniac, inwhich case, you don’t need to concern yourself about getting that job. now, a hiring manager will most likely askgeneral open ended questions.
when he does this, the hiring manager is lookingto see how the thought process of the candidate looks like. these open ended questions seem the easiestto answer, but are in fact the most revealing. the reason for this is that the hiring managerwill not only hear what the candidate says, but also what the candidate does not mention. the candidate will clearly not be in a positionto mention things he has no experience with and if it becomes the case that the candidateseems to be omitting many important aspects of a general question, the interviewer willthink less of the candidate. specific technical questions will also bethrown in but they should be relatively benign.
these questions usually probe the depth ofa particular subject. the purpose of these questions is not so muchto catch you up in a wrong answer, but to wager how much mentoring might be needed bya senior developer. of course, if you consistently get all thetechnical questions wrong, then you will be looked down upon. what many junior candidates don’t realize,that would help them immensely get through interviews, is that saying that you wouldlook it up on google is a valid answer if you can elaborate on how you would conductthe search. the point is not necessarily that you immediatelyknow the answer, but that you know how to
relatively easily find the answer. in interviews i conducted, i would put a laptopin front of a candidate and tell them they can use it as a resource to answer questionsif they wish. some answers people would look up, but whenthey did use google, i was looking to see how long it takes them. also, i found that letting candidates lookup answers took a lot of the edge off which removed the fog that interview stress canimpose upon your mind. outside of the questions themselves, the hiringmanager will definitely be looking for arrogance in the candidate, general likability, andsome sort of back story that signifies genuine
interest in software development. though a senior can say that he does it forthe money, such a jaded answer is very unbecoming of a junior developer because self-motivationis absolutely critical for someone just starting out. if the hiring manager likes you and is satisfiedwith your answers, he may call you in for a second interview, give you a job offer,or issue you a programming test. now, programming tests can take many formsbut what they usually look like is one or two problems you are asked to solve in codeand send on your results. this test is usually done on your own timeat home.
now, programming tests are a pain in the ass. some can be very demanding in terms of complexity,while other may be straight forward, and yet others may be open ended such as; “sendme code you would be proud to put into production. the program can do whatever you like, butit needs to be written to the best of your ability.†now, if you are ever asked to do a programmingtest, do it the same day you get it or by the end of the following day. you will not usually be given a deadline forthese tests. this is part of the test.
i have known hiring managers that have issuedvery challenging tests that took in excess of 12 hours to complete but never actuallylooked at the results. the reason the test was issued was to seeif i actually wanted the job enough to jump through that hoop; if you could follow instructions. there was no other purpose for that hiringmanager in issuing that test. because the test was so complicated, somecandidates self-selectively excluded themselves simply by not sending back their work. such a self-selecting filter would speak tothe candidate’s skill or their confidence. do not assume a reason why you may be askedto do a programming test.
what the hiring manager was looking for maybe drastically different between hiring managers. i have issued programming tests myself. the ones i issued were always open ended. i asked that the candidate simply send mecode they are proud of, whether it was something they wrote before, or wrote specifically forthis test. my objective was to see what the candidatedeemed pride worthy as this told me their level of understanding of not only softwaredevelopment, but of writing impersonal, standardized code. these are things the candidate could neverfake any more so than you can fake playing
the piano. having covered the mentality of a hiring managerwhen filtering resumes and when conducting interviews, let us now position software developmentcertificates. for a junior developer, certificates onlyshow initiative but say nothing of the skillset of the candidate; that is revealed in theinterview. i would be more readily inclined to call ina junior for an interview with certificates if he had no work experience, but those certificateswould not hold as much weight as a single year of industry experience, all else beingequal. now, throughout my entire career two thingsheld true.
i was never asked to show my university degreeand i was never asked for references. i had one microsoft certificate that i dida decade ago that i was also never asked about. my advice is this. go through the certification course on yourown for cheap as a self-study guide. however, don’t worry yourself to much aboutdoing the actual exams. besides, certifications tend to expire anywaysso they can only be of any use in getting your first job. now, let me break down for you how to hitthat sweet spot of universal employability as a software developer.
to do this i need to explain to you the basicthree tier architecture of most software products. this architecture seems to have formed thebasis from which you have the various software roles spring from. the three tiers are as follows: front endor ui, middle tier, and back end. now, these are generic classifications thattend to cover a very wide variety of technologies and roles but these tiers create groupingsunder which you can organize your career as let us go through each of these tiers andbriefly describe what fits where. the top tier is the front end or ui. in this tier you have developers who are creatingthe user experience of a program, they determine
what screens will exist, and what the visualswill look like. when developing a website, the front end alsoencapsulated everything that happens in a user’s browser. the middle tier on the other hand is usuallypure code that has no visual aspect. this is usually where business problems aresolved through the lego style assembly of existing components or custom code. the back end is concerned with databases andthe storage of data in general. we can also describe the three tiers in thefollowings way; the front end is what the program looks like, and how a user interactswith it.
the middle tier is what solves the businesscase and responds to user activity in the front end. the back end then is where information isstored, like orders placed on amazon, or your facebook profile. now, there is a diversity of types of computerprograms that a software developer may be tasked in creating. since my objective is to maximize on employabilitywe will talk only about web applications. web applications are nothing more than complicatedwebsites. websites like facebook, google, youtube, amazon,ebay and so on are all web applications.
i won’t be discussing mobile applicationdevelopment such as app development for the iphone or ipad. i will not be talking about programs you installlike photoshop, audacity, or video games. the reason i omit these types of programsis that compared to web applications, these are all niche products. in order to maximize your employability, weneed to aim at the most boring, but most common forms of software products that employersare developing; web applications. also, to those developers watching this videoand shaking their heads at my breakdown, this video is not intended as a choose your ownadventure video.
this video is a roadmap to guaranteed employment. now, what unites these three tiers togetherinto a single product? well, a development platform. there are two platforms that cover a verylarge portion of the boring web application jobs. these are java, the open source platform byoracle, and .net, the open source platform by microsoft. now, i can already hear software truthersout there screaming into their monitors that you can write web applications on ruby orphp and others.
to those aspiring to be developers, avoidthese truthers. java and .net are tried and true platformsthat are the bedrock of the banking systems of the world, and the bedrock of virtuallyall large businesses. there are thousands of technologies out therethat get fanatical fanboys. these technologies fade into oblivion mostof the time. i call these technologies hipster tech; technologiesthat are cool because no one uses them. we are concerned with employability and notnerd cred. java and .net are the meat and potatoes ofthe software developer world. the simple test for this is to do a job searchbased on the key word of .net or java.
now, as an aspiring universally employabledeveloper you will need to specialize in one of these platforms to get to the top tierof either. i have taken the .net route and so the restof this video will talk in context of .net and mostly microsoft technologies. i recommend .net for everyone as it is anamazing and rich platform which has a large community supporting it and a great deal ofopen source components as well as tons of guides, articles, and code samples. now that we have settled on .net, let us re-workour 3 tier architecture to reflect the appropriate technologies in each tier.
as we can see i have contained each tier to8 line items. this may seem like a very long list but onceyou start engaging yourself in the subject matter, you quickly figure out where eachof these technologies fits in. now, to get a simple website in place youonly need to figure out two technologies from the front end tier. you need to get a very basic understandingof html5 and css. to author your simple web page you don’tneed any special tools. open notepad and type your html and css thensave the file with a dot html extension. when you open your html file in a web browser,your page will be displayed.
now, if you were to master html5 and css alone,you would have a minimum skillset to get a job as a web designer. however, you would not be employable as asoftware developer. in order to be considered a junior level softwaredeveloper, you would at minimum need to have some level of competence in all the technologieshighlighted in red. now, let us rework our 3 tiers in terms ofgeneral job titles. though not every entry is a formal job title,it goes to show you what you can expect from your career if you specialize in any giventier. if you specialize in some combination of thetechnologies mentioned in the front end, you
will have the skillset to get a role as aweb designer or ux designer. if you specialize in nothing but the middletier technologies, then you will be a software developer, but a very limited developer. if you specialize only in back end technologies,you can becomes a database administrator or database analyst. if you specialize in a combination of technologiesfrom the front and middle tier, you will become a web developer. however, if you learn technologies from all3 tiers, you become what is known as a full stack developer.
a full stack developer is referred to as such,because he knows his way around all aspects of the relevant platform; in our case, a fullstack .net developer. the full stack developer is universally employable. full stack developer is not so much a jobtitle as it is a descriptive term of the utility and flexibility of a developer. software architects, principle developers,and team leads are always full stack developers. most full stack developers hold the titleof senior software developer. now, at first this list of technologies mayseem very long and very intimidating but you are surely projecting some assumptions intothe situation.
you see, a full stack developer is not a masterof every technology. he is usually a master at only a few of thesetechnologies and only mid-range at the rest. the value in a full stack developer is notin a breadth of mastery but in his ability to correctly identify the technologies tomost efficiently and clearly solve a business problem. in fact, only full stack developers are capableof architecting anything approaching a complex application with any degree of confidencethat the project will succeed. they are the only ones who can conceptualizethe entire end to end flow of a web application. your goal is to become a full stack developerwithout getting promoted out of that bottom
tier. previously we have also mentioned that contractorsearn the highest rates of all software developers, so when we combine the two, your mission isto become a full stack developer who is employed as a contractor. this combination puts you into one of thebest careers that exist in this day and age. it pays ridiculously high, it makes you employableby almost every software company in every country in the world, and it is a skillsetthat you can use to start your own company without the need for any startup capital orstaff. now, the next question becomes; how do i getfrom aspiring full stack .net developer contractor
to actual full stack .net developer contractor. well, it only takes commitment and time andvirtually no money. the first thing you need to learn is yourfirst programming language. as we are focusing on the .net stack, thelanguage we will be learning is c#. this is what you do. go and download visual studio 2015 expressfor web and buy yourself a copy of c# 6.0 and the .net 4.6 framework 7th edition byandrew troelsen and head first c#. now, you can write c# code in notepad if youlike but you can make your life a lot easier if you use visual studio.
visual studio is like a developer’s versionof notepad. remember, code is just text. the books i recommended work well in synergy. the head first book will get you from zeroto 60 as far as c# and visual studio are concerned while troelsens book will take you from 60to warp speed. it won’t be quick, but if you keep at itfor one year, you will bring yourself up to the junior level and 5 years after that you’llbe commanding a 6 figure salary if you stick to it and are not afraid to ask for such asalary; you have no idea how many guys i met were afraid to ask what they were worth.
now, the key is to write code. the more you write, the more understandingyou will gain of what the whole field involves. eventually you will get to the point whereyou can see there is no reason to write as much code anymore and start to seek out existingsolutions on the internet that you can simply connect together. who knows, you may find that you get a greatidea and put out an application of your own design that makes you rich. before i close off this video, i wanted toraise one more interesting thing i learned about software development.
after being in the industry for 8 or so yearsi found a passion with philosophy. when i started reading plato i realized thatobject-oriented programming, the dominant programming paradigm for around 40 years,is literally platonic metaphysics. this connection between software developmentand platonism became even stronger after i read the platonic dialogue entitled the timeaus. in the timeaus, plato describes his cosmology. he constructs reality out of triangle. all 3d virtual worlds like world of warcraftare mathematically constructed out of triangles. the performance of video cards is partiallymeasured by how many triangles it can render
a second. it was a crazy realization for me that mymodern day occupation has its roots in two and a half thousand year old philosophy. it makes you think. now, i hope that this video was helpful foryou in understanding the software industry, setting a clear end goal, and finding a startingpoint. thanks for listening. go team!
0 Response to "Game Dev Story Hardware Engineer"
Posting Komentar