برنامه‌نویس

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
فارسیEnglish
برنامه‌نویس‌های دانشجو در مؤسسهٔ فناوری در آلمان سال ۱۹۷۰

یک برنامه نویس، برنامه نویس رایانه، توسعه دهنده، کد نویس، یا مهندس نرم افزار کسی است که نرم افزار رایانه می‌نویسد. عبارت برنامه نویس رایانه می‌تواند به یک متخصص در زمینه‌ای از برنامه نویسی یا یک شخص دارای سررشته که برای بسیاری از گونه های نرم‌افزار کد می‌نویسد اشاره کند. شخصی که یک روش رسمی برای برنامه نویسی تمرین یا تدریس می‌کند همچنین می‌تواند به عنوان یک تحلیل‌گر برنامه نویس شناخته شود. زبان برنامه نویسی اصلی یک برنامه نویس (کوبول، سی، سی++، سی شارپ، جاوا، لیسپ، پایتون، غیره) اغلب دارای پیشوندی به این نام‌ها است، و کسانی که در محیط وب کار می‌کنند اغلب عنوان هایشان را با پیشوند وب می‌نویسند. عبارت برنامه نویس می‌تواند برای اشاره به یک توسعه دهنده نرم‌افزار، توسعه دهنده وب، توسعه‌دهندهٔ اپلیکیشن‌های تلفن همراه، توسعه دهندهٔ سفت‌افزار تعبیه‌شده، مهندس نرم‌افزار، دانشمند رایانه یا تحلیل‌گر نرم افزار به کار برده‌ شود. هرچند، اعضای این حرفه‌ها دارای دیگر مهارت‌های مهندسی نرم افزار، جدا از برنامه نویسی هستند؛ به همین دلیل، عبارت برنامه نویس یا کد مانکی (به انگلیسی: code monkey) بعضی وقت‌ها توهین یا ساده گیری تحقیرآمیزِ این دیگر حرفه‌ها در نظر گرفته‌می‌شود.[۱] این مسئله بحث های زیادی میان توسعه دهنده ها، تحلیل‌گرها، دانشمندان رایانه، برنامه نویس‌ها و کسانی که همچنان سردرگم در تفاوت‌های ظریف در معانی این حرفه‌ها هستند برانگیخته است.[۲][۳][۴][۵][۶]

ایدا لاولیس، نخستین برنامه نویس رایانه در نظر گرفته می‌شود.[۷]

ایدا لاولیس، ریاضی‌دان و کنتس انگلیسی نخستین برنامه نویس رایانه در نظر گرفته می‌شود، زیرا او نخستین شخصی بود یک الگوریتم را به قصد پیاده‌سازی روی موتور تحلیلی چارلز ببیج، در اکتبر ۱۸۴۲، به قصد محاسبهٔ عدد برنولی نوشت و منتشر کرد.[۸] چون که ماشین ببیج هرگز برای عملکرد استاندارد در زمان لاویس کامل نشد، او هرگز اجرای الگوریتم خود را ندید.

نخستین شخصی که یک برنامه را روی یک عملکرد الکترونیکی مدرن مبتنی بر رایانه اجرا کرد دانشمند رایانه کنراد تسوزه در سال ۱۹۴۱ بود.

تیم برنامه نویسی انیاک، شامل کاتلین انتونلی، ژان بارتیک، بتی هالبرتن، مارلین ملتزر، فرانسیس اسپنس و روث تیتلبام نخستین اشخاصی بودند که به طور منظم برنامه‌نویسی کار می‌کردند.[۹][۱۰]

روز بین‌المللی برنامه‌نویس‌ها هر سال در ۷ ژانویه جشن گرفته‌می‌شود.[۱۱] در سال ۲۰۰۹، دولت روسیه فرمان داد تا هر سال یک روز تعطیل حرفه‌ای که با نام روز برنامه‌نویسان شناخته می‌شود در ۱۳ سپتامبر (۱۲ سپتامبر در سال‌های کبیسه) جشن گرفته شود. این روز همچنین پیش از آن یک روز تعطیل بین‌المللی غیر رسمی بوده است.

ماهیت کار[ویرایش]

بعضی قسمت‌های این بخش از Occupational Outlook Handbook، ویرایش ۲۰۰۶–۲۰۰۷، آمده‌است که در مالکیت عمومی به عنوان اثری از دولت ایالات متحده آمریکا است.
یک برنامه‌نویس رایانه در حال نوشتن کد جاوا.

برنامه‌نویس‌های رایانه می‌نویسند، آزمایش می‌کنند، اشکال‌زدایی می‌کنند و از دستورالعمل‌های دقیق، که برنامه‌های رایانه‌ای گفته می‌شوند و رایانه باید از آنها برای اجرا توابع‌شان پیروی کنند، نگهداری می‌کنند. برنامه‌نویس‌ها همچنین تصور می‌کنند، طراحی می‌کنند و ساختارهای منطقی را برای برطرف کردن اشکال‌ها توسط رایانه آزمایش می‌کنند. بسیاری از نوآوری‌های فنی در برنامه‌نویسی — فناوری‌های رایانش پیشرفته، زبان‌های تازه پیچیده و ابزارهای برنامه‌نویسی — نقش برنامه‌نویس را دوباره تعریف کرده‌اند و بسیاری از کارهای برنامه‌نویسی که امروزه انجام می‌شوند را بسیار بهتر کرده‌اند. عنوان‌های شغلی و توصیف‌ها با توجه به آن سازمان ممکن است متفاوت باشند.

برنامه‌نویس‌ها در بسیاری از محیط‌ها، از جمله بخش‌های سازمان فناوری اطلاعات، شرکت‌های نرم‌افزاری بزرگ، شرکت‌های خدمت‌رسانی کوچک و نهادهای دولتی کار می‌کنند. بسیاری از برنامه‌نویس‌های حرفه‌ای همچنین برای شرکت‌های مشاوره‌ای در محل‌های خدمت گیرنده به عنوان پیمانکار کار می‌کنند. اجازه‌نامه به طور معمول برای کارکردن به عنوان یک برنامه‌نویس نیاز نیست، اگرچه گواهی‌نامه‌های حرفه‌ای به طور معمول توسط برنامه‌نویس گرفته می‌شوند. برنامه‌نویسی به طور گسترده یک حرفه در نظر گرفته‌می‌شود (هرچند بعضی از[چه کسی؟] مقامات بر این اساس که فقط شغل‌هایی که پروانهٔ قانونی نیاز دارند به عنوان یک حرفه به حساب آیند اختلاف نظر دارند).

کار برنامه‌نویس‌ها به طور گسترده‌ای بسته به نوع کسب و کاری که آنها برای آن برنامه می‌نویسند متفاوت است. برای نمونه، دستورالعمل‌های درگیر در به‌روزرسانی سوابق مالی بسیار متفاوت از تکثیر کردن شرایط در یک هواپیما برای آموزش خلبانان در یک شبیه‌ساز پرواز هستند. برنامه‌های ساده می‌توانند در چند ساعت نوشته شوند، آنهایی که پیچیدگی بیشتری دارند ممکن است بیش از یک سال کار نیاز داشته‌باشند، این در حالی است که دیگر برنامه‌ها هرگز 'کامل' در نظر گرفته نمی‌شوند بلکه به طور مداوم تا زمانی که از آنها استفاده می‌شود بهبود می‌یابند. در بیشتر موارد، چندین برنامه‌نویس با یکدیگر زیر نظر یک برنامه‌نویس ارشد به عنوان یک تیم کار می‌کنند.

برنامه‌نویس‌ها مطابق مشخصات فنی که در درجهٔ اول توسط برنامه‌نویس‌های ارشد و تحلیل‌گرهای سیستم بیشتر تعیین شده‌اند برنامه می‌نویسند. پس از تکمیل فرایند طراحی، کار برنامه‌نویس است که آن طراحی را به دنباله‌های منطقی از دستورالعمل‌هایی که رایانه بتواند پیروی کند تبدیل کند. برنامه‌نویس کد این دستورالعمل‌ها را به یکی از بسیار زبان برنامه‌نویسی می‌نویسد. زبان‌های برنامه‌نویسی گوناگون بسته به هدف برنامه استفاده می‌شوند. کوبول، برای نمونه، به طور معمول برای اپلیکیشن‌های تجاری که معمولاً روی بزرگ‌رایانه و رایانه کوچک اجرا می‌شوند استفاده می‌شود؛ در حالی که، فورترن در علم و مهندسی استفاده می‌شود. سی++ به طور گسترده برای هر دو اپلیکیشن‌های علمی و تجاری کاربرد دارد. جاوا، سی شارپ، ویژوال بیسیک و پی‌اچ‌پی زبان‌های برنامه‌نویسی محبوبی برای وب و نرم‌افزارهای کاربردی تجاری هستند. برنامه‌نویس‌ها عموماً بیش از یک زبان برنامه‌نویسی می‌دانند، و چون بیشتر زبان‌ها مشابه یکدیگر هستند، اغلب نسبتاً به آسانی زبان‌های تازه را فرا می‌گیرند. در عمل، برنامه‌نویس‌ها اغلب با زبانی که می‌دانند نسبت داده‌می‌شوند، برای نمونه برنامه‌نویس‌های جاوا، یا با نوع وظیفه‌ای که انجام می‌دهند یا محیطی که در آن کار می‌کنند، برای نمونه، برنامه‌نویس‌های پایگاه داده‌ها، برنامه‌نویس‌های بزرگ‌رایانه یا توسعه‌دهنده‌های وب.

زمانی که در کد منبع، چیزی که برنامه‌ها از آن ساخته شده‌اند تغییر ایجاد شود، برنامه‌نویس‌ها باید دیگر برنامه‌نویس‌ها را از وظیفه‌ای که روزمره انجام می‌شود آگاه کنند. آنها این کار را با نوشتن توضیحات در کد منبع و مستندسازی کدشان انجام می‌دهند؛ بنابراین، دیگر برنامه‌نویس‌ها برنامه را با آسانی بیشتر درک می‌کنند. برای صرفه‌جویی در کار، برنامه‌نویس‌ها اغلب از کتابخانه‌های کد پایه که می‌توانند تغییر یابند یا برای نرم‌افزار کاربردی مشخص سفارشی شوند استفاده می‌کنند. نتیجهٔ این روش برنامه‌های قابل اطمینان‌تر و سازگارتر است و همین‌طور سودمندی برنامه را با حذف برخی از مرحله‌های روزمره افزایش می‌دهد.

آزمون و اشکال‌زدایی[ویرایش]

برنامه‌نویس‌ها برنامه را با اجرای آن و دنبال اشکال‌ها (خطاها) گشتن می‌آزمایند. زمانی که اشکال‌ها مشخص شدند، برنامه‌نویس معمولاً اصلاحات مناسب را ایجاد می‌کند، سپس برنامه را دوباره تا وقتی که یک سطح پایین و شدت قابل قبول از اشکال‌ها باقی بماند بررسی می‌کند. این فرایند را آزمودن و اشکال‌زدایی می‌گویند. اینها بخش‌های مهم از وظیفهٔ هر برنامه‌نویس است. برنامه‌نویس‌ها می‌توانند به برطرف کردن این اشکال‌ها سراسر زندگی یک برنامه ادامه دهند. به‌روزرسانی، تعمیر، ویرایش و گسترش برنامه‌های موجود بعضی وقت‌ها برنامه‌نویسی تعمیر و نگهداری نامیده می‌شود. برنامه‌نویس‌ها می‌توانند در راهنماهای کاربر و راهنمای برخط همکاری کنند، یا می‌توانند با نویسندهٔ فنی برای انجام چنین کاری کار کنند.

برنامه‌نویسی نرم‌افزار کاربردی در مقابل برنامه‌نویسی سیستم[ویرایش]

برنامه‌نویس‌های رایانه اغلب به دو گروه گسترده تقسیم می‌شوند: برنامه‌نویس‌های نرم‌افزار کاربردی و برنامه‌نویس‌های سیستم. برنامه‌نویس‌های نرم‌افزار کاربردی برنامه‌هایی می‌نویسند تا به وظیفه مشخصی رسیدگی کنند، مانند برنامه‌ای برای پی‌گیری سیاهه در یک سازمان. این گروه از برنامه‌نویس‌ها همچنین می‌توانند نرم‌افزار بسته‌بندی‌شده را اصلاح کنند یا نرم‌افزارهای کاربردی عمومی را که مکرراً از فروشنده‌های نرم‌افزار مستقل خریداری می‌شوند سفارشی کنند. در حالی که، برنامه‌نویس‌های سیستم، برنامه‌هایی برای نگهداری و بررسی نرم‌افزار سیستم‌های رایانه‌ای می‌نویسند، مانند سیستم‌های عامل و سامانه‌های مدیریت پایگاه داده‌ها. این گروه از برنامه‌نویس‌ها در دستورالعمل‌هایی که مشخص می‌کنند چگونه شبکه، پایانه‌های رایانه رومیزی (معمولاً شبکه شده و قدرتمندتر از رایانه شخصی هستند) (به انگلیسی: Workstations) و واحد پردازش مرکزی سیستم وظیفه‌های گوناگونی که به آنها داده شده‌اند را رسیدگی می‌کنند و چگونه با تجهیزات جانبی مانند چاپگرها و دیسک‌گردان ارتباط برقرار می‌کنند تغییر ایجاد می‌کنند.

جستارهای وابسته[ویرایش]

پانویس[ویرایش]

  1. "Yes, calling "programmer" to a "software engineer" is an insult.". 
  2. "No Programmers". 
  3. "Developer versus programmer". 
  4. "Developers AND Programmers". 
  5. "Programmer vs. Developer vs. Software Engineer". 
  6. "Programmer vs. Developer vs. Software Engineer". 
  7. Fuegi, J.; Francis, J. (2003). Lovelace & Babbage and the creation of the 1843 'notes'. Annals of the History of Computing 25 (4). pp. 18–26. doi:10.1109/MAHC.2003.1253887. 
  8. J. Fuegi and J. Francis, "Lovelace & Babbage and the creation of the 1843 'notes'." Annals of the History of Computing 25 #4 (October–December 2003): 19, 25. Digital Object Identifier
  9. "ENIAC Programmers Project". Eniacprogrammers.org. Retrieved 2010-10-03. 
  10. "ABC News: First Computer Programmers Inspire Documentary". Abcnews.go.com. 2007-12-04. Retrieved 2010-10-03. 
  11. "International Programmers' Day". 

منابع[ویرایش]

مطالعه بیشتر[ویرایش]

  • Weinberg, Gerald M., The Psychology of Computer Programming, New York: Van Nostrand Reinhold, 1971
  • An experiential study of the nature of programming work: Lucas, Rob. "Dreaming in Code" New Left Review 62, March–April 2010, pp.  ۱۲۵–۱۳۲.

پیوند به بیرون[ویرایش]

Student programmers at the RWTH Aachen University in Aachen, Germany in 1970

A programmer, computer programmer, developer, dev, coder, or software engineer is a person who creates computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst.

A programmer's primary computer language (Assembly, COBOL, C, C++, C#, Java, Lisp, Python, etc.) is often prefixed to these titles, and those who work in a web environment often prefix their titles with web.

A range of occupations, including: software developer, web developer, mobile applications developer, embedded firmware developer, software engineer, computer scientist, or software analyst, while they do involve programming, also require a range of other skills. The use of the simple term programmer for these positions is sometimes considered an insulting or derogatory oversimplification.[1][2][3][4][5]

History

Ada Lovelace is considered by many as the first computer programmer.[6]

British countess and mathematician Ada Lovelace is often considered the first computer programmer, as she was the first to publish an algorithm intended for implementation on Charles Babbage's analytical engine, in October 1842, intended for the calculation of Bernoulli numbers.[7] Because Babbage's machine was never completed to a functioning standard in her time, she never saw this algorithm run.

The first person to run a program on a functioning modern electronically based computer was computer scientist Konrad Zuse, in 1941.

The ENIAC programming team, consisting of Kay McNulty, Betty Jennings, Betty Snyder, Marlyn Wescoff, Fran Bilas and Ruth Lichterman were the first regularly working programmers.[8][9]

International Programmers' Day is celebrated annually on 7 January.[10] In 2009, the government of Russia decreed a professional annual holiday known as Programmers' Day to be celebrated on 13 September (12 September in leap years). It had also been an unofficial international holiday before that..

Nature of the work

Some of this section is from the Occupational Outlook Handbook, 2006–07 Edition, which is in the public domain as a work of the United States Government.

Computer programmers write, test, debug, and maintain the detailed instructions, called computer programs, that computers must follow to perform their functions. Programmers also conceive, design, and test logical structures for solving problems by computer. Many technical innovations in programming — advanced computing technologies and sophisticated new languages and programming tools — have redefined the role of a programmer and elevated much of the programming work done today. Job titles and descriptions may vary, depending on the organization.

Programmers work in many settings, including corporate information technology ("IT") departments, big software companies, small service firms and government entities of all sizes. Many professional programmers also work for consulting companies at client sites as contractors. Licensing is not typically required to work as a programmer, although professional certifications are commonly held by programmers. Programming is widely considered a profession (although some[who?] authorities disagree on the grounds that only careers with legal licensing requirements count as a profession).

Programmers' work varies widely depending on the type of business for which they are writing programs. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on an aircraft for pilots training in a flight simulator. Simple programs can be written in a few hours, more complex ones may require more than a year of work, while others are never considered 'complete' but rather are continuously improved as long as they stay in use. In most cases, several programmers work together as a team under a senior programmer’s supervision.

A computer programmer editing the source code of a piece of software.

Programmers write programs according to the specifications determined primarily by more senior programmers and by systems analysts. After the design process is complete, it is the job of the programmer to convert that design into a logical series of instructions that the computer can follow. The programmer codes these instructions in one of many programming languages. Different programming languages are used depending on the purpose of the program. COBOL, for example, is commonly used for business applications that typically run on mainframe and midrange computers, whereas Fortran is used in science and engineering. C++ is widely used for both scientific and business applications. Java, C#, VB and PHP are popular programming languages for Web and business applications. Programmers generally know more than one programming language and, because many languages are similar, they often can learn new languages relatively easily. In practice, programmers often are referred to by the language they know, e.g. as Java programmers, or by the type of function they perform or environment in which they work: for example, database programmers, mainframe programmers, or Web developers.

When making changes to the source code that programs are made up of, programmers need to make other programmers aware of the task that the routine is to perform. They do this by inserting comments in the source code so that others can understand the program more easily and by documenting their code. To save work, programmers often use libraries of basic code that can be modified or customized for a specific application. This approach yields more reliable and consistent programs and increases programmers' productivity by eliminating some routine steps.

Testing and debugging

Programmers test a program by running it and looking for bugs (errors). As they are identified, the programmer usually makes the appropriate corrections, then rechecks the program until an acceptably low level and severity of bugs remain. This process is called testing and debugging. These are important parts of every programmer's job. Programmers may continue to fix these problems throughout the life of a program. Updating, repairing, modifying, and expanding existing programs is sometimes called maintenance programming. Programmers may contribute to user guides and online help, or they may work with technical writers to do such work.

Application versus system programming

Computer programmers often are grouped into two broad types: application programmers and systems programmers. Application programmers write programs to handle a specific job, such as a program to track inventory within an organization. They also may revise existing packaged software or customize generic applications which are frequently purchased from independent software vendors. Systems programmers, in contrast, write programs to maintain and control computer systems software, such as operating systems and database management systems. These workers make changes in the instructions that determine how the network, workstations, and CPU of the system handle the various jobs they have been given and how they communicate with peripheral equipment such as printers and disk drives.

Types of software

Programmers in software development companies may work directly with experts from various fields to create software – either programs designed for specific clients or packaged software for general use – ranging from video games to educational software to programs for desktop publishing and financial planning. Programming of packaged software constitutes one of the most rapidly growing segments of the computer services industry. Some companies or organizations – even small ones – have set up their own IT team to ensure the design and development of in-house software to answer to very specific needs from their internal end-users, especially when existing software are not suitable or too expensive. This is for example the case in research laboratories.[citation needed]

In some organizations, particularly small ones, people commonly known as programmer analysts are responsible for both the systems analysis and the actual programming work. The transition from a mainframe environment to one that is based primarily on personal computers (PCs) has blurred the once rigid distinction between the programmer and the user. Increasingly, adept end users are taking over many of the tasks previously performed by programmers. For example, the growing use of packaged software, such as spreadsheet and database management software packages, allows users to write simple programs to access data and perform calculations.[citation needed]

In addition, the rise of the Internet has made web development a huge part of the programming field. Currently more software applications are web applications that can be used by anyone with a web browser.[citation needed] Examples of such applications include the Google search service, the Outlook.com e-mail service, and the Flickr photo-sharing service.

Programming editors, also known as source code editors, are text editors that are specifically designed for programmers or developers for writing the source code of an application or a program. Most of these editors include features useful for programmers, which may include color syntax highlighting, auto indentation, auto-complete, bracket matching, syntax check, and allows plug-ins. These features aid the users during coding, debugging and testing.[11]

Globalization

Market changes in the UK

According to BBC News, 17% of computer science students could not find work in their field 6 months after graduation in 2009 which was the highest rate of the university subjects surveyed while 0% of medical students were unemployed in the same survey.[12] The UK category system does, however, class such degrees as information technology and game design as 'computer science', industries in which jobs can be extremely difficult to find, somewhat inflating the actual figure.[13]

Market changes in the US

Computer programming, offshore outsourcing, and Foreign Worker Visas became a controversial topic after the crash of the dot-com bubble left many programmers without work or with lower wages. Programming was even mentioned in the 2004 US Presidential debate on the topic of offshore outsourcing.[14]

Large companies claim there is a skills shortage with regard to programming talent. However, US programmers and unions counter that large companies are exaggerating their case in order to obtain cheaper programmers from developing countries and avoid previously employer paid training using industry specific technologies not covered in most accredited degree programs.[15] Other reasons for employers claiming skill shortages is the result of their own cost saving combining of several disparate skill sets previously held by several specialized programmers into fewer generalized multifaceted positions that are unlikely to have enough "qualified" candidates with the desired experience.[16]

Enrollment in computer-related degrees in US has dropped recently due to lack of general interests in science and mathematics and also out of an apparent fear that programming will be subject to the same pressures as manufacturing and agriculture careers.[17] This situation has resulted in confusion about whether the US economy is entering a "post-information age" and the nature of US comparative advantages. Most academic institutions have an Institutional research office that keep past statistics of degrees conferred which show several dips and rises in Computer Science degrees over the past 30 years. The overall trend shows a slightly overall decline in growth (especially when compared to other STEM degree growth) since certain peaks of 1986, 1992, 2002, and 2008 showing periods of flat growth or even declines[18]. In addition the U.S. Bureau of Labor Statistics Occupational Outlook 2014-24 is -8% (a decline in their words) for Computer Programmers because Computer programming can be done from anywhere in the world, so companies sometimes hire programmers in countries where wages are lower.[19]

See also

References

  1. ^ "No Programmers". 
  2. ^ "Developer versus programmer". 
  3. ^ "Developers AND Programmers". 
  4. ^ "Programmer vs. Developer vs. Software Engineer". 
  5. ^ "Programmer vs. Developer vs. Software Engineer". 
  6. ^ Fuegi, J.; Francis, J. (2003). Lovelace & Babbage and the creation of the 1843 'notes'. Annals of the History of Computing. 25. pp. 18–26. doi:10.1109/MAHC.2003.1253887. 
  7. ^ J. Fuegi and J. Francis, "Lovelace & Babbage and the creation of the 1843 'notes'." Annals of the History of Computing 25 #4 (October–December 2003): 19, 25. Digital Object Identifier
  8. ^ "ENIAC Programmers Project". Eniacprogrammers.org. Retrieved 2010-10-03. 
  9. ^ "ABC News: First Computer Programmers Inspire Documentary". Abcnews.go.com. 2007-12-04. Retrieved 2010-10-03. 
  10. ^ "International Programmers' Day". 
  11. ^ "BBC Bitesize - GCSE Computer Science - Programming software and the IDE - Revision 4". www.bbc.co.uk. Retrieved 2017-09-16. 
  12. ^ "'One in 10' UK graduates unemployed" from the BBC
  13. ^ [1] ATAS classifications (University of Plymouth)
  14. ^ "CPD: October 8, 2004 Debate Transcript". www.debates.org. Retrieved 2017-02-13. 
  15. ^ [2] Migration Letters, Volume: 10, No: 2, pp. 211 – 228 ISSN 1741-8984 & eISSN 1741-8992
  16. ^ "Purple Squirrels and the Reserve Army of the Unemployed" Paul Solman https://www.pbs.org/newshour/making-sense/purple-squirrels-and-the-reser/ PBSAugust 15, 2012 accessdate = 2016-06-10
  17. ^ Theresa Beaubouef and John Mason, Why the high attrition rate for computer science students: some thoughts and observations., ACM SIGCSE Bulletin, 2005
  18. ^ https://www.bls.gov/opub/regional_reports/200908_silicon_valley_high_tech.htm
  19. ^ https://www.bls.gov/ooh/computer-and-information-technology/computer-programmers.htm

.

Further reading

  • Weinberg, Gerald M., The Psychology of Computer Programming, New York: Van Nostrand Reinhold, 1971
  • An experiential study of the nature of programming work: Lucas, Rob. "Dreaming in Code" New Left Review 62, March–April 2010, pp. 125–132.

External links