I’ve been programming for 25 years.
Here’s what you’ll get. You will learn language A, become proficient in it, get a job using it and then eventually get laid off.
When you look for work, you’ll find that Language A is no longer the “in thing”. They want people that know language B, which was introduced 5 years ago.
The H.R. people will want only candidates that have 7 years experience in language B.
Then you’ll learn B, but someone will come up with B#, B-, B++, B–, all basically the same thing, but with just enough differences that they can copyright it and irritate the hell out of you when trying to figure out where to put the semi-colon
The H.R. people won’t accept experience in the B(variation) that you know, only the B(variation) that they want.
And then you’ll have to deal with language bigots. You know B(variation) but not D? Well then, you are one or more of:
a) not as productive
b) not a “real” programmer”
c) you write buggy code.
Then the E bigots will dump on the D bigots while the database language “Seroquel” (many programmers know what this is are are probably taking it) bigots watch with amused expressions because they know only their language is a “real” language.
It gets worse.
At some point they will change the entire paradigm of application development to a new one where you have less control over how it looks, works differently depending on the user’s browser preference and requires giant servers. Sure, you don’t have to deal with Installers, but at the cost of submitting your program to the whims of the server, the network and the user’s preference of browsers.
Oh…and H.R. now wants:
10+ years work experience as a Technical Lead working with the following languages, tools, and methodologies:
* Technical lead role
* Agile development
* Project management
* Implementing Microsoft technologies
* Web architecture design and implementation
* High volume system architecture design
* Hardware and software load balancing technologies
* Data replication / ETL technologies
* Multithreading, socket programming, distributed transaction processing
* System stress testing / performance testing framework
* Business process / rules modeling
* Business Intelligence tools
* Lead technical teams in designing and prototyping technical solutions
* Create implementation proposals
* Review technical designs, code, test plans
* Create well-designed, reusable objects
* Create and execute project work plans for the technical team, revising as necessary to meet changing needs and requirements.
* Communicate and enforce best practice coding standards.
* Consistently deliver high-quality products and services to clients on schedule.
* Communicate difficult/sensitive information appropriately.
* Communicate with customers technical concepts in easy to understand language.
* Communicate effectively with stakeholders to identify needs and evaluate alternative business solutions with project management.
* Develop an understanding of clients’ business and suggest effective programming solutions.
* Creativity and strong attention to detail
* Ability to work effectively on tight deadlines as necessary
* Effective oral and written communication skills
* Exceptional customer service skills, including the ability to interact professionally with a diverse group of customers
* Desire to learn new skills and improve
* Experience as Technical Project Lead, Architect, Lead Developer or other position of major responsibility on mission critical software projects
* Relational databases: DB2, MS SQL Server, and/or Oracle
* Experience designing and coding superior technical solutions, creating and executing well designed and reusable objects, efficient and logical databases for clients, project work plans, revising as necessary to meet changing needs and requirements.
* MSMQ and/or MQ Series
* MS Visual Studio (versions 6.0 * 2008)
* Experience with requirements gathering, design, coding, testing, and implementation of complex software projects on time and within budget.
* .NET Framework including 3.0/3.5
* XML, Web Services, SOA
* Agile development
* High volume architecture, hardware and software technologies for load balancing
* Data replication / ETL technologies, data warehouse design and implementation
* Business Intelligence and reporting tools
* Experience communicating, both in writing and verbally, with a broad spectrum of stakeholders, including team members, all levels of management, external contacts/the public, vendors, government officials, end users.
So, the best thing you can do is stay out of it and pay us lunatics that are dumb enough to go through all this crap.
Slashdot Ask Slashdot Story | How Should a Non-Techie Learn Programming?