Ci sono degli svantaggi nel prendere un lavoro in cui userò un linguaggio di programmazione unico? [chiuso]


37

Mi sono appena laureato con una laurea in CS, quindi mi piacerebbe trovare un lavoro in cui posso imparare di più sul campo e sviluppare un'esperienza professionale.

Ho intervistato una società che utilizza il proprio linguaggio di programmazione interno e non credo che altri lo utilizzino. Non hanno menzionato l'uso di altre lingue o di ciò che usano per un ambiente di sviluppo.

Cosa dovrei preoccuparmi di prendere un lavoro come questo? Se dovessi cambiare lavoro in un secondo momento, dovrei ricominciare a cercare posizioni entry level perché non ho acquisito alcuna esperienza specifica in una lingua?


8
La lingua non sarà importante finché ti sentirai a tuo agio con il tuo lavoro, l'ambiente di lavoro e le tue responsabilità.
Marcelo,

5
La laurea con una laurea in CS significa che hai la capacità di imparare cose nuove. Ti verranno continuamente presentate situazioni in cui devi acquisire / imparare una nuova lingua o tecnologia e questo non è diverso. Ciò che porti da un lavoro all'altro è l'esperienza di risoluzione dei problemi. La sintassi di una lingua specifica arriva per la corsa.
Chris,

11
Il linguaggio proprietario MUMPS è per caso?
R0MANARMY,

3
Se è Wasabi ( blog.fogcreek.com/the-origin-of-wasabi ) - prendilo!
Gerry,

3
@DaveShaw: E le persone corrono ancora con i tori. Non lo rende necessariamente una buona idea;).
R0MANARMY,

Risposte:


28

I principali aspetti negativi:

  • lavorare in un "ambiente personalizzato" può significare strumenti / supporto limitati che possono essere esasperanti quando rimani bloccato su un problema.
  • Il linguaggio che usano potrebbe essere mal progettato, portandoti subito a catturare le cattive abitudini e scrivere il codice hacky per creare soluzioni alternative.
  • I baffoni delle risorse umane non riconosceranno la tua esperienza. (Va bene. Una società che si affida alle risorse umane per fare assunzioni tecniche non è il tipo per cui in genere vuoi lavorare. Dopo un paio d'anni, la maggior parte dei grandi lavori passa comunque attraverso le connessioni.)

Se fossi in me, chiederei loro perché usano un linguaggio interno. Se lo è per un motivo legittimo, come pazzi contrasti hardware, un dominio che non è facilmente modellabile in nessuna lingua esistente, allora va benissimo. D'altra parte, se la loro risposta suggerisce che hanno creato il loro linguaggio in modo da poter riunire un mucchio di hack e logiche aziendali in ciò che equivale a un mucchio di macro stravaganti, allora questa è una grande bandiera rossa. Vuoi assicurarti che utilizzino buoni principi ingegneristici, in modo da poter imparare da loro e avere successo con loro.In questo caso puoi vedere se possono giustificare razionalmente l'uso di una lingua cresciuta in casa che non ha una base di conoscenza della comunità e supporto esterno. Potresti scoprire che la loro decisione è perfettamente razionale (credo che Facebook abbia creato la propria versione di PHP per gestire la scalabilità, che ha funzionato abbastanza bene per loro), o potresti aver scoperto che hanno creato una mostruosità di un linguaggio che è stato così strettamente associati ai loro sistemi di base, che non riescono a staccarsi da esso. Fidati di me, non vuoi lavorare in una lingua il cui tipo di dati di base si chiama ImARInObj (Immutable Accounts Receivable Invoice Object). In questi tipi di situazioni spesso si verifica un stretto accoppiamento tra una lingua e le esigenze di un'azienda e sarebbe un incubo assoluto gestire quel tipo di sistema ogni giorno.


12
In realtà non va bene perché i baffo delle risorse umane gestiscono la maggior parte delle assunzioni, anche per molte buone compagnie ....
Cervo,

1
Concordo con gli strumenti / supporto. Nel mio vecchio lavoro, abbiamo usato un motore di accesso ai dati personalizzato. Non posso dirvi quante volte ho voluto google la proliferazione di errori di runtime che ho riscontrato ma ho dovuto ricordare a me stesso che questa era una cosa interna. Non puoi nemmeno pubblicare domande su StackOverflow per chiedere aiuto. Sei in balia della tua azienda e faresti meglio a predare che hanno cose ben documentate, una pagina / sezione della sezione FAQs o una documentazione sulla risoluzione di quei fastidiosi problemi imprevisti che normalmente richiederebbero ore per rintracciarli. Ha fatto schifo piuttosto male. Sono contento di tornare di nuovo con NHibernate.
A-Dubb,

"Non puoi nemmeno pubblicare domande su StackOverflow per chiedere aiuto." E se convincessi una delle persone che mantiene la rete interna a creare un clone SO interno?
JAB

Ho riscontrato un problema simile. Lingue molto specializzate senza base di utenti hanno problemi con i loro strumenti. Un'opzione, che ho usato, è prendere uno strumento simile a un ingranaggio e scrivere codice per scrivere il codice. Soprattutto se è in gran parte una piastra di cottura.
Spencer Rathbun,

96

Scappa e scappa rapidamente. A meno che tu non sia alla disperata ricerca di un lavoro e abbia molta fame, questa è una situazione che vuoi evitare.

Ho esperienza con un'azienda che lo ha fatto e l'unica ragione per cui è stato fatto è che i loro dipendenti non avrebbero acquisito un'esperienza significativa e trasferibile . Si trattava davvero di controllo.

Altri che hanno detto qui che "programmare è programmazione" hanno ragione, ma io vorrei rovesciarlo e chiedere, perché non usare un linguaggio standard per il quale ci sono supporto esterno, librerie, forum e un pool di programmatori disponibili tra cui scegliere a partire dal?

L'unica volta in cui penso che una situazione del genere sarebbe OK sarebbe se il linguaggio esclusivo dell'azienda fosse per l'hardware personalizzato. Ad esempio, è necessario scrivere tutto per l'interferometro gamma-ray 9000X utilizzando un codice assembly / macchina specifico per quella macchina.


21
La potenziale mancanza di supporto e documentazione (non ho mai saputo che gli strumenti interni siano ben documentati come gli strumenti standard) è una grande preoccupazione, IMO. E le ragioni per fare le cose in questo modo devono essere ben comprese.
Ethel Evans,

15
+100 Pensaci ... la prossima posizione che cerchi ha un linguaggio tradizionale, con zero anni di esperienza professionale / applicabile. Ricomincerai da capo come sviluppatore Junior.

2
E se parla di Google e la lingua è sawzall ( labs.google.com/papers/sawzall.html ) o Go (prima che fosse pubblico)? Non ci sono altri buoni motivi per inventare una nuova lingua?
Neil G,

3
@Neil - Molte ottime ragioni, e la gente di solito le chiama piccole lingue, DSL (lingue specifiche del dominio) o (nel caso di Google) "la prossima grande cosa". Certamente non ho nulla contro le lingue proprietarie. L'OP ha affermato che questa è l' unica lingua in uso. Google non ha nulla contro le lingue standard.
unpythonic il

3
Mi piace l'idea di cercare le motivazioni dell'azienda, ma IMHO, inventare la tua lingua al solo scopo di intrappolare i tuoi dipendenti non è un'idea che sarebbe decollata. Invece, quasi certamente, qualcuno ha inventato un linguaggio per risolvere un problema specifico, e ora viene utilizzato principalmente per motivi legacy. Non un ambiente ideale, ma almeno benigno.
Tylerl,

22

Dal momento che il tuo curriculum è praticamente vuoto dopo la laurea, il tuo primo lavoro dà molto slancio al tuo futuro percorso professionale. Il tuo prossimo potenziale datore di lavoro darà molto peso a questo lavoro. Quindi, a meno che non programmerai anche in altre lingue (più commerciabili), ti consiglio vivamente di non accettare questo lavoro.

Lo dico per esperienza perché ho appena lasciato il primo lavoro che ho avuto dopo aver conseguito la laurea in CS, dove ero in una posizione quasi esattamente come la descrivi. Gran parte della programmazione è stata fatta in un linguaggio sostanzialmente sconosciuto chiamato Progress (aka OpenEdge ABL). È orribile. Non male come COBOL, ma vicino. Ero bloccato lì perché la zona in cui mi sono laureato non ha molti lavori di programmazione, e stavo aspettando mia moglie per laurearsi con la sua laurea prima di trasferirmi.

Far parlare quella lingua con altre lingue o database era quasi impossibile (è stato bloccato anche con un proprio database proprietario - bonus!). Ho trascorso molto tempo a scrivere quadri per conto mio che esistevano già in altre lingue e probabilmente erano già meglio implementati poiché la lingua non supportava molto bene questo tipo di paradigma di "estensione". La lingua era più su misura per un approccio "contattare Progress Corp. con una richiesta di funzionalità e attendere fino alla versione n + 1 per la nuova funzionalità". Inutile dire che l'industria del software non si muove abbastanza lentamente da renderlo un approccio praticabile. Non andrò avanti su quanto male sia stato, ma presumo che dovrai affrontare una cosa simile se hai a che fare anche con un linguaggio proprietario.

In aggiunta, la base di codice esistente era, diciamo, non ottimale. Molti codici legacy risalgono alla fine degli anni '80 / primi anni '90. Scommetto che dovresti aspettarti qualcosa di simile, dal momento che penso che la maggior parte delle compagnie rispetti solo le lingue proprietarie perché portano con sé un sacco di questo bagaglio legacy. Ricorda, probabilmente è difficile per un datore di lavoro trovare programmatori disposti a programmare in questo ambiente legacy / proprietario, inoltre probabilmente devono pagare anche per la formazione poiché nessuno ne ha mai sentito parlare. Probabilmente i tuoi colleghi non saranno titani dell'ingegneria del software, a causa dell'effetto Mar Morto(chiunque abbia talento probabilmente è già partito). Ho avuto molti problemi durante le revisioni del codice nel tentativo di utilizzare il codice orientato agli oggetti, per non parlare di qualsiasi tipo di modello di progettazione, in quanto non lo capivano (le persone del mio team avevano, nella migliore delle ipotesi, un grado MIS (senza offesa) )).

Infine, supponendo che accetti questo lavoro ma desideri ardentemente fare qualcosa di meglio una volta che parti, al fine di renderti competitivo per il tuo prossimo lavoro devi sacrificare molto del tuo tempo libero al di fuori del lavoro creando giocattoli fragili in lingue più commerciabili (e probabilmente open source la maggior parte di ciò che fai), o fai quello che ho fatto e risparmia un po 'di denaro prima di smettere e passare un mese o due a fare lo stesso. Ad ogni modo, questa è una cosa molto stressante, specialmente se ti piace avere qualsiasi tipo di relazione sociale al di fuori del lavoro o trascorrere il tuo tempo libero facendo qualcosa che non codifica di tanto in tanto.

Ora, le mie esperienze potrebbero non essere mappate direttamente sulla tua scelta, ma sono sicuro che alcune di esse si applicheranno. Speriamo che almeno ti dia alcune domande da sollevare. Come altri hanno già detto, probabilmente vorrai scoprire quali strumenti usano (hardware, ambiente di sviluppo software / IDE e sicuramente controllo delle versioni). Il test Joel potrebbe essere una guida utile.

TL; DR

Non farlo

PS A coloro che dicono che imparare qualsiasi nuova lingua è utile, che da solo è vero. Il problema è quando rimani bloccato usando quella lingua quasi esclusivamente a tempo pieno per un lungo periodo di tempo, perdendo l'esposizione a lingue (e tecniche) più utili. Questo è ciò che vuoi evitare.


Questo. Qualcosa del genere è buono per un lavoro comodo e a basso stress da durare fino al pensionamento. E ' non è un buon modo per kickstart la carriera.
Wayne Molina,

È un pensiero terrificante @Wayne: impara una lingua proprietaria appena fuori dalla scuola, quindi usa quella lingua esclusivamente per 50 anni dispari ...
Morgan Herlocker,

Terrificante è metterlo alla leggera. Non importa il fatto che se tu fossi mai stato licenziato o la compagnia fosse passata sotto, avresti zero abilità commerciabili di valore per chiunque. Potresti anche non essere esistito nel mondo degli affari.
Wayne Molina,

Ho appena concluso un contratto in un luogo di medie dimensioni il cui sistema principale è scritto in Progress - non è poi così sconosciuto. Fortunatamente, ero uno dei nuovi programmatori .Net che si interfacciavano al sistema tramite chiamate al servizio web. Sono comunque riusciti a ottenere programmatori Progress ogni volta che ne avevano bisogno.
Dave,

16

L'ovvio aspetto negativo è che non sarai in grado di aggiungere questo lavoro al requisito "5+ esperienza nell'uso della lingua x" che avranno i lavori futuri a cui vorresti candidarti. Questo può essere più fastidioso di quanto tu possa pensare (parlando come qualcuno che ha avuto molti anni di esperienza, ma una vasta gamma di linguaggi di programmazione). Ho un'esperienza professionale con VBA che potrebbe anche essere stata un'esperienza con LOLCODE, basata sui lavori che cerco oggi.

Ma usano esclusivamente quella lingua? È raro che un'azienda usi una sola lingua. Anche il mio tempo con VBA includeva alcuni ASP, Java e PostgreSQL.


Ho modificato la mia domanda per renderla più specifica; finora non hanno menzionato altre lingue, quindi devo chiederglielo la prossima volta che parlerò con loro.
AlexMA,

3
In realtà ho problemi perché voglio un lavoro Java e tutta la mia esperienza è in .NET, quindi nessuno mi assumerà e sono MOLTO simili. Con un linguaggio totalmente personalizzato, avrai un momento ancora più difficile. Le risorse umane e la maggior parte dei reclutatori sono idioti e pensano di aver bisogno di 5 anni di esperienza in ogni tecnologia che tocchi ....
Cervo,

8

Tendo ad essere d'accordo con il mantra, "la programmazione è programmazione ", indipendentemente dal linguaggio in cui stai lavorando. Gran parte della programmazione sta imparando a pensare e il resto è solo sintassi. Un potenziale datore di lavoro futuro sarà più colpito da " Ho realizzato X con la società Y " che da " Ho conosciuto il linguaggio X per Y anni ".

L'ultimo lavoro che ho svolto ha coinvolto molto lavoro PL / SQL e non avevo mai scritto una sola riga di PL / SQL: l'ho raccolto in circa due settimane.

Detto questo, mi terrei sicuramente in pratica con altre lingue, solo per rimanere aggiornato. Durante il nuovo lavoro, disponi di uno o due progetti per animali domestici che manterranno il tuo braccio di programmazione in forma con un linguaggio più standard, ma non preoccuparti troppo di esso.


Quello era il mio piano; scrivere le mie app (o qualsiasi altra cosa) nei fine settimana per migliorare le mie competenze con le tecnologie che mi interessano. Detto questo, come dice Brian, potrei non ottenere le qualifiche per le offerte di lavoro che richiedono X anni di esperienza con la lingua Y. Ha fatto il lavoro hai richiesto una certa esperienza PL / SQL?
AlexMA,

@Alex: "... potrebbe non ottenere le qualifiche per le offerte di lavoro che richiedono X anni di esperienza con la lingua Y" è una perdita di qualsiasi lavoro. Fare un lavoro particolare significa che stai perdendo altre opportunità.
Chris,

2
@Chris Sì ... ma è un po 'diverso se stai imparando "FooBar" e non hai alcuna speranza di trasferirlo a un'altra società che utilizza anche "FooBar". se impari PHP ... certo che non stai imparando C ... ma ci sono tonnellate di aziende che pagano per PHP.
WernerCD,

3
-1 Questa è la risposta corretta, ma non per questa domanda.
Wilhelmtell,

2
"Un potenziale datore di lavoro futuro sarà più colpito da" Ho realizzato X con la società Y "di quanto non lo avrebbero fatto con" Conosco il linguaggio X da Y anni "." --- La mia esperienza su entrambi i lati delle interviste tecniche è stata esattamente l'opposto.

6

Nell'IT, l'azienda ha spesso a che fare con il recruiter per trovare buoni candidati. I reclutatori non sono specialisti IT, quindi ha alcuni criteri e abbina i candidati con e quindi rispediscili alla società. Va alla stessa maniera con le risorse umane nelle grandi aziende.

Hai un problema con quello. Non rientrerai nei criteri del recruiter. Quindi, direi che non è un problema a salvaguardare le tue competizioni. La programmazione è programmazione e un programmatore solido dovrebbe sapere come passare da una lingua all'altra, perché la sintassi è meno importante del saper fare codice affidabile, codice verificabile e codice manutenibile. Queste capacità sono per lo più indipendenti dalla lingua.

Tuttavia, fintanto che non ti adeguerai ai criteri di corrispondenza di nessun personale IT che ti recluta, sarà probabilmente un inconveniente trovare un nuovo impiego. Anche se sarai comunque concorrente. Quelle persone non sanno come giudicarlo perché non sono IT.

Non consiglierei questo lavoro per la prima volta. Ma se hai già qualche voce nel tuo CV sulle tecnologie ampiamente utilizzate (Java, PHP, C, C ++, C #,...) Provaci se ti piace.


Grazie per la tua conoscenza dei recruiter; sembra giusto.
AlexMA,

5

Esistono sicuramente competenze che puoi acquisire / migliorare utilizzando linguaggi e ambienti proprietari. Come è stato menzionato in altre risposte, alcune abilità trascendono la lingua e possono essere molto utili in un curriculum.

Tuttavia, tali competenze sono spesso trascurate quando le persone che esaminano i curriculum non sono tecniche. Spesso (nella parte bassa dello spettro di qualità del lavoro, che, purtroppo, è spesso la migliore scommessa per sviluppatori relativamente inesperti) i curricula saranno valutati principalmente su x anni di linguaggio y , e le altre abilità che potresti non aver acquisito gioca fino a quando non hai ottenuto un piede nella porta con un'intervista.

Un altro fattore da considerare è che gli ambienti proprietari tendono (almeno, almeno) ad avere più probabilità di essere mal progettati, ingannevoli e generalmente frustranti rispetto agli ambienti tradizionali. Lavorare esclusivamente in un cattivo sistema proprietario può essere molto scoraggiante, specialmente per qualcuno che ha appena iniziato una carriera nella programmazione.

Detto questo, ricorda che l'esperienza con un sistema proprietario, mentre non è così buona come l'esperienza simile che lavora con i linguaggi tradizionali popolari, è ancora meglio di nessuna esperienza da un colpo lungo. Avrai un vantaggio oltre il livello base per alcune posizioni e per altri, potresti (o meno) qualificarti ancora come livello base per lingue specifiche, ma la tua esperienza ti porterà significativamente in vantaggio rispetto alla maggior parte delle altre persone in competizione per quei lavori.

Prima di considerare di rinunciare a un'offerta a causa della focalizzazione su un linguaggio proprietario, assicurati di considerare l'attuale mercato del lavoro e il modo in cui le tue domande vengono generalmente ricevute.


3

Dipende da quali lingue e abilità ausiliarie acquisirai. Se davvero il loro linguaggio interno non viene utilizzato o addirittura conosciuto al di fuori dell'azienda, sarà di beneficio in termini di carriera limitata (a meno che non sia probabile che esploda e sia la prossima grande novità). Ho trascorso alcuni anni a lavorare con uno strumento di terze parti che di per sé è inutile per me (dal punto di vista della carriera), tuttavia lavorando su quei progetti le mie abilità HTML, CSS e JavaScript sono migliorate. Ho anche imparato molto su come i progetti aziendali sono gestiti e strutturati, come gestire i clienti, gestire le aspettative. Tutte le cose che fanno parte dello sviluppo di software moderno che non sono in realtà la lingua.


Ho modificato la mia domanda per notare che non hanno menzionato alcuna lingua ausiliaria; tuttavia punti positivi su competenze specifiche non linguistiche.
AlexMA,

2

Che dire del framework: IDE, editor, librerie? Le app aziendali più complesse. in questi giorni non può essere fatto con un semplice editor di testo e un compilatore da riga di comando.

Ne hanno un po 'per il loro linguaggio di programmazione personalizzato?


Buon punto. Ancora una volta, non l'hanno menzionato. Ho bisogno di chiedere.
AlexMA,

2
A volte gli IDE / i set di strumenti proprietari sono terribilmente dannosi (ho lavorato con alcuni).
FrustratedWithFormsDesigner il

2

Spesso, imparare un business è più importante che apprendere una tecnologia. Se pensi di voler rimanere nel particolare settore in cui si trova questa azienda, vai avanti e prendilo. Se si tratta di un mercato di nicchia o di uno a cui non sei particolarmente interessato, ti suggerirei di saltarlo. Conoscere i dettagli di (diciamo) farmacocinetica e il processo di scoperta di farmaci aprirà le porte che essere un altro programmatore C # / Python / Java non lo farà. E a meno che questo linguaggio "unico" non sia più un generatore di codice o un configuratore, risolverai comunque i problemi più comuni, quindi otterrai comunque un'esperienza complessiva, anche se le tecniche specifiche potrebbero non essere direttamente trasferibili.


Anche questo. L' unico modo in cui questo lavoro sarebbe un vantaggio è se le conoscenze del settore aiuteranno e si desidera passare al dominio aziendale reale. Se vuoi rimanere uno sviluppatore, nelle parole immortali dell'ammiraglio Ackbar,IT'S A TRAP!
Wayne Molina,

2

Prenderei in considerazione l'idea di prenderlo se, e solo se, puoi avere molta esperienza in altre lingue. Se si fa prendere il lavoro, si può (e si deve) continuare i vostri abilità con le lingue principali, lavorando su progetti open-source nel tempo libero.

Quello che vuoi evitare è la possibilità che le tue abilità siano fortemente sintonizzate su questa specifica azienda e non trasferibili ad altri. Tecnicamente, la programmazione è programmazione e l'esperienza al di fuori di un singolo ambiente di programmazione è vantaggiosa, non dannosa, poiché ti aiuta a vedere i problemi più chiaramente.

Pensala in questo modo: se ti impegni a scrivere programmi Perl, ciò non ti condurrà necessariamente all'eternità di scrivere programmi Perl. Né accettare un lavoro in .NET ti condanna ad essere per sempre legato a Microsoft.

Ma ecco la parte importante: non assumerei mai un programmatore che conosca solo una lingua , anche se è quella che voglio che usi. Un programmatore che non ha una vasta esperienza in molte lingue è spesso povero anche con la sua lingua preferita. Riflette anche la mancanza di ambizione di imparare cose nuove.

D'altra parte, se un programmatore conosce Python, Ruby, C #, PHP, C ed Erlang, allora il fatto che sappia anche APL non è uno sciopero contro di lui, anche se non c'è alcuna possibilità all'inferno di usare APL per nulla.

Quindi, se hai la disciplina, impedisci alla lingua di diventare il tuo unico obiettivo, quindi prendi il lavoro.

E vale la pena ribadirlo: contribuisci a progetti open source. Contano per tonnellate di più di "esperienza lavorativa" perché non è qualcosa che hai appena fatto per fare uno stipendio. I programmatori che lavorano su progetti open source sono come l'oro.


2

Il mio primo lavoro dopo la laurea con la laurea in CS consisteva nello sviluppo di un linguaggio oscuro. Non unico. Non sviluppato internamente. Ma un VMS 4GL abbastanza oscuro da non aver mai visto nessun altro usarlo.

Col senno di poi, questa è stata una decisione poco saggia. Mentre ho imparato molto sullo sviluppo di software professionale facendo quel lavoro, sarebbe stato molto meglio sviluppare anche una competenza linguistica commerciabile per andare d'accordo con le competenze "soft".

Sono stato fortunato: il mio secondo lavoro stava lavorando con un altro oscuro VMS 4GL. Mi hanno assunto perché sapevano che non potevano trovare persone che già conoscevano la lingua - il fatto che avessi esperienza sulla piattaforma VMS con un 4GL era sufficiente. E a quel lavoro, ho avuto l'opportunità di allenarmi in un linguaggio commerciabile mentre cercavano di spostarsi dal VMS ai server Windows.

Ma non avrei potuto facilmente avere quella fortuna, e mi sono ritrovato a cinque anni dalla mia carriera con un'esperienza assolutamente nulla che avrebbe convinto un reclutatore o una persona delle risorse umane a guardare il mio curriculum.

Per il tuo primo lavoro dopo la laurea, non lo consiglio davvero.


2

Per dare una meta-risposta, ho notato che molte risposte dicono: "Per esperienza personale, questa è una cosa negativa".

Molti altri dicono: "In teoria, questo non deve essere male".

Ma nessuna delle risposte che ho visto proviene da persone che hanno fatto qualcosa di simile e hanno pensato che fosse una bella esperienza.

Ora forse alcune persone hanno fatto questo e sono entusiasti del loro lavoro, ma non sono su Stack Exchange. Questo è vero per alcuni software commerciali. Ad esempio, ci sono alcuni amministratori di Software AG Natural / Adabas davvero dedicati, ma non ci sono molte discussioni correlate su Stack Exchange. Tuttavia almeno qualcuno sta cercando anche questi specialisti di nicchia. Ciò non sarebbe vero per un linguaggio completamente proprietario.

Quindi, se l'obiettivo è quello di spostarsi verso il tipo di tecnologie discusse qui, il fatto che pochi sostengano ciò dalla reale esperienza suggerisce che non è necessariamente l'inizio migliore. Potrebbe non essere il bacio della morte. Ma vorresti lavorare per evitare che diventi un terribile blocco stradale, ad esempio avviando o contribuendo a un progetto open source relativo alle tue aspirazioni.


1

Accetta il lavoro se ritieni che ci siano programmatori bravi / bravi che ti aiuteranno e ti guideranno. Penseresti che un posto che fa questo ha persone abbastanza buone, ma non puoi esserne certo. Inoltre, questa azienda ha qualche tipo di reputazione nell'assumere i migliori candidati? Potresti essere assunto da qualcun altro indipendentemente dalle lingue utilizzate nel lavoro.


1

Prestare particolare attenzione se il dominio problematico è dominato da una o poche lingue del settore. Lo sviluppo del database è strettamente legato a SQL. Lo sviluppo di FPGA è principalmente suddiviso tra Verilog e VHDL. Contrastalo con le applicazioni web che sono scritte in (combinazioni di) Java, PHP, perl, python, Scala, C ++, ecc. Un gestore delle assunzioni alla ricerca di sviluppatori web sarà molto più comprensivo sulle competenze trasferibili se non hai esperienza specifica nella loro lingua preferita. Un responsabile delle assunzioni in cerca di qualcuno che scriva query di database si aspetta un'esperienza SQL.


1

Ho programmato in un linguaggio proprietario. Ma quella non era la lingua usata dappertutto. Non ho nulla contro quell'esperienza ora, anche se ho pianto ogni momento di fare quel lavoro. Ho avuto la possibilità di usare quella lingua, mantenerla e migliorarla, oltre a mantenere il programma scritto in quella lingua.

Lungo la strada, ho imparato a leggere e capire come avrebbe funzionato un piccolo interprete. Se il tuo potenziale datore di lavoro ha le fonti per il compilatore / interprete per il linguaggio proprietario, potresti anche avere la possibilità di lavorare sui suoi interni. Posso dire che, per esperienza, farai tesoro di questa esperienza lavorativa per gli anni a venire.

Quali competenze trasferibili avresti acquisito sono, lavoro di gruppo, ingegneria del software, scrittura di un compilatore / interprete o, parti di esso, algoritmi, ecc. Se è un interprete, il linguaggio proprietario è solo una maschera sotto la quale troverai l'interprete scritto, diciamo, in C, o in un'altra lingua. Se viene compilato un linguaggio proprietario, avresti la possibilità di lavorare su un compilatore di produzione completamente bloccato. Quindi, quando cerchi il prossimo lavoro, devi vendere queste abilità più duramente di, diciamo, C / C ++ / Java / Python per sviluppatori di applicazioni o, Python, Perl, Java, HTML, CSS, JavaScript, Flash per lo sviluppo web oppure, Verilog, VHDL per lo sviluppo integrato o qualsiasi altra serie di lingue per altri domini di applicazioni.

Tutto questo, supponendo che il tuo potenziale datore di lavoro abbia le fonti per la lingua proprietaria e che tu sia disposto a lavorare più che altro sui programmi scritti nella lingua proprietaria. Tuttavia, ammetto di essere estremamente ottimista nel dire che potresti avere un'opportunità simile a quella che ho avuto qualche anno fa.

Durante le interviste, anni di esperienza e abilità tecniche non sono le sole a prendere decisioni. La tua sete di apprendimento, adattamento culturale, inclinazione culturale, prende gran parte della decisione.

Quindi, per un primo lavoro, se il tuo lavoro non si limiterà ai programmi scritti solo nel linguaggio proprietario, ma ti consentirà di lavorare anche sulla sua implementazione, prendilo.


1

Penso che ci siano due lati in questo. Prima c'è questo lavoro specifico e, in secondo luogo, c'è come influenza le tue prospettive di carriera.

Quello che vorrei sapere su questo lavoro è il motivo per cui hanno creato il loro linguaggio di programmazione. Ha senso? Altrimenti farei un lavoro diverso.

Negli ultimi dieci anni ho lavorato per tre aziende nella loro lingua. Il primo perché, quando è stato avviato il progetto, non c'era nulla che potesse fare ciò di cui avevano bisogno. (Hanno scritto una versione tecnica di Visual Basic, ma questa era su Unix e anni prima che esistesse VB.) Le altre due avevano requisiti prestazionali che non potevano essere soddisfatti con le lingue esistenti. Considero queste ottime ragioni.

Per quanto riguarda le prospettive di carriera, come altri hanno già detto, i reclutatori e le risorse umane che non comprendono la programmazione e il lavoro utilizzando una serie di caselle di controllo avranno difficoltà con il tuo CV. Molte aziende che desiderano un programmatore C ++ plug-and-play si affrettano a pagare per farti imparare una nuova lingua. Tutto questo è vero.

Ma vuoi davvero lavorare per un'azienda del genere?

Se la risposta è "Sì", probabilmente dovresti rifiutare questo lavoro e cercarne uno con requisiti più convenzionali. Inoltre, a seconda di dove vivi, potresti non avere molta scelta e dovresti lavorare per aziende che non capiscono davvero i programmatori.

Personalmente, non voglio lavorare per un'azienda del genere e penso che sia giusto dire che non ho trovato le mie scelte eccessivamente limitanti. Se hai una comprovata esperienza nell'imparare rapidamente nuove tecnologie, risolvere problemi del mondo reale e, forse, alcune conoscenze di "business", penso che dovresti andare bene.

Inoltre ci sono aspetti positivi. In quanti altri posti giochi con il compilatore / interprete? Quanto spesso riesci a influenzare le nuove funzionalità e la sintassi della lingua che usi ogni giorno?


1

Prima di tutto, un linguaggio di programmazione interno non è necessariamente una cosa negativa, tuttavia, ci sono alcune regole di base necessarie per giustificare un linguaggio personalizzato.

Scrivi che pensi che non usino nessun'altra lingua. La prima domanda che dovresti porre è se usano anche un'altra lingua.

I linguaggi di programmazione personalizzati possono avere buone giustificazioni. So che la matematica lavora con linguaggi specializzati. Ho sentito che l'agenzia fiscale usa un linguaggio speciale per calcolare le tasse con le leggi che cambiano ogni anno su di loro. Benvenuti nel dominio della metaprogrammazione .

Qualsiasi linguaggio personalizzato, tuttavia, non dovrebbe mai implementare un linguaggio completo. Al di fuori del suo dominio dovresti ancora ricorrere a un linguaggio di programmazione classico / ampiamente conosciuto. Anche nel dominio della lingua non è probabile che ogni piccolo dettaglio sia coperto dalla lingua del dominio.

Buone domande da porre:

  1. Altre lingue sono utilizzate in questa azienda?
  2. Qual è il motivo per cui l'altra lingua non è adatta a loro?
  3. È la lingua utilizzata al di fuori dell'azienda (dai ricercatori o su licenza di altre società)
  4. Quante persone conoscono la lingua.
  5. Quanti progetti / programmi (riusciti) vengono realizzati con la lingua.

Da queste risposte dovresti essere in grado di scoprire qual è lo stato della lingua. se è una lingua di dominio che aggiunge un grande valore, va tutto bene. Se è il progetto di alcuni animali domestici per sostituire Java o C #, esci da lì al più presto .

Modifica: ti suggerisco di leggere l' articolo del linguaggio specifico di dominio su Wikipedia, che dovrebbe dare qualche informazione in più.


1

Potrebbe non piacerci, ma come programmatore di computer dobbiamo avere un CV che gli agenti e i dipartimenti delle risorse umane sono disposti a inoltrare ai project manager . Il nostro CV deve anche distinguersi come corrispondente al necessario impostato entro 30 secondi da qualcuno che lo guarda, deve anche avere le parole chiave corrette per corrispondere a una ricerca nel database cv.

Quindi, solo lavorando in un linguaggio di programmazione unico è un grande rischio! Tuttavia, l'utilizzo di un mix di DSL e una lingua di flusso principale può essere presentato bene nel CV. (Devi dire la verità sul tuo CV, ma non deve essere tutta la verità!)


1

Sarei meno nervoso nel prendere un lavoro del genere se avessi già una vasta gamma di conoscenze di programmazione. Se sei nuovo di zecca nel settore, questo potrebbe rovinarti professionalmente piuttosto male, forse al punto che dovresti praticamente ricominciare da capo o stagista in seguito ... Questo potrebbe essere particolarmente brutto se rimani con questa compagnia per un po ', solo per partire senza competenze trasferibili.

Se hai già abbastanza esperienza nel settore, allora questo potrebbe essere un ottimo punto elenco per la tua carriera. E la percezione se / quando lasciassi questo posto sarebbe più "maledetto, è un jedi, ha fatto tutto"


1

Unisciti all'azienda solo se lavorerai nell'azienda per tutto il tuo tempo di vita, altrimenti non penserai nemmeno di prenderla in carico anche se stai ottenendo un buon pacchetto salariale. di molte frustrazioni nel lavoro, perché nessuna esperienza in altri linguaggi di programmazione per cercare un altro lavoro.


Questo. Attenzione a questa "opportunità", è solo un'opportunità per un rapido ritiro.
Wayne Molina,

0

Ho visto qualcuno con 15 anni di esperienza, principalmente come lead o sviluppatore principale, incapace di trovare un lavoro per molto tempo, principalmente perché la società non lo aveva lasciato a conoscenza di ciò che era diventato lingue e API contemporanee.

I programmatori vengono messi mentalmente nei cestini proprio come fanno gli attori nei film (eroe, villian, ecc ...) e una volta stabilito quale sia il tuo cestino, penso che puoi rendere molto più difficile trovare un lavoro che se sei appena uscito da Università.

Cioè, se hai una laurea in CS, probabilmente sei un candidato per una serie di lavori.

Ma se hai una laurea in CS con 3 anni di esperienza in PHP, in realtà sei MENO di un candidato per una posizione di sviluppatore web Java rispetto a quando ti sei laureato. Ti sei ancorato come sviluppatore di PHP e fino a quando non avrai esperienza del contrario, questo è ciò che ti verrà chiesto di fare. (Strano, ma penso che sia vero, hai un'esperienza più totale, ma il tuo curriculum sarà ignorato come irrilevante perché è il tipo di esperienza sbagliato, mentre appena uscito dal college il tuo curriculum potrebbe non essere stato)

E se hai una laurea in CS con 1 anno di esperienza in SpecialtyLanguageX, hai chiuso tutti i tipi di porte per te.

Queste sono solo le mie opinioni e osservazioni ovviamente, non ho mai fatto l'assunzione, questo è proprio quello che mi sembra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.