Sviluppatore C++ (m/f/d)

Ora anche da remoto!

Unisciti a noi come sviluppatore C++
Sede: Berlino, Germania o da remoto

Credi nella bellezza quando si tratta di programmazione? Nutri un vivo interesse per gli algoritmi eleganti? Conosci il C++ in modo fluente? Se la tua risposta è sì, saremmo lieti di incontrarti. Ecco una breve sintesi di ciò che offriamo:

  • Un’ampia gamma di attività di sviluppo C++ estremamente stimolanti
  • Un team internazionale di menti brillanti
  • Un ambiente di lavoro che promuove la permanenza e la crescita del team
  • Tempo sufficiente per garantire una soluzione perfetta nei minimi dettagli
  • Una struttura gerarchica orizzontale e ampio spazio per sviluppare le tue idee
  • Nessuna riunione programmata
  • Orario lavorativo compatibile con le esigenze familiari, nessuna scadenza, nessuno straordinario
  • Assistenza per il trasferimento
  • Una retribuzione competitiva fin dall’inizio e un aumento fino a 130.000 EUR annuali dopo solo un anno

Chi siamo

Grazie think-cell per aver sponsorizzato la Standard C++ Foundation e di aver messo alla prova il nostro team di compilatori Microsoft con un codice C++ complesso.

Herb Sutter, presidente della Standard C++ Foundation

think-cell è un’azienda produttrice di software in rapida espansione con sede a Berlino, in Germania, che ha l’obiettivo di sviluppare prodotti di grafica che offrano qualcosa in più rispetto alla concorrenza. Più di 1.000.000 di utenti in tutto il mondo hanno scelto il nostro software per il proprio lavoro quotidiano, poiché semplifica, velocizza e rende piacevole la creazione di presentazioni grafiche. Fra i nostri clienti annoveriamo numerose società di consulenza e grandi multinazionali.

Non dobbiamo fare compromessi per quanto riguarda la qualità e la bellezza del codice, in quanto think-cell è un’azienda altamente redditizia. Siamo pronti a fare tutto il possibile per sviluppare algoritmi sofisticati e affinare la nostra interfaccia utente e siamo orgogliosi della quantità di clienti soddisfatti che possiamo vantare. Il fatto che la società sia detenuta e gestita da informatici esperti contribuisce certamente a creare un ambiente di lavoro che invoglia sviluppatori straordinari a trasferirsi e a rimanere.

Informazioni sul nostro software

Dirigiamo la nostra attenzione alle diapositive aziendali (invece che ad applicazioni più artistiche) poiché offrono un ampio potenziale di automazione delle attività di layout generalmente eseguite dagli stessi utenti di PowerPoint. Le sfide non mancano: da una profonda comprensione delle qualità che costituiscono un buon layout e delle linee guida seguite dagli utenti che eseguono layout manuali, agli algoritmi che producono risultati accettabili in modo sufficientemente veloce per la progettazione di diapositive interattiva, a un’interfaccia utente grafica che supporta il nostro nuovo ed originale approccio al layout di diapositive in modo facile e immediato, a valide soluzioni tecniche per la segnalazione automatica di errori e aggiornamenti automatici, alla compatibilità con software di terze parti sui computer di mezzo milione di utenti.

Ecco alcuni dei risultati del nostro lavoro:

Linguaggio

  • Usiamo C++ per tutto quello che facciamo. Anche il nostro portale clienti è scritto in C++. Anche se talvolta, quando necessario, usiamo un codice di collegamento Assembler e scriviamo gli script dei nostri build in Python, in think-cell C++ è il linguaggio principale.
  • Teniamo traccia con attenzione delle ultime versioni dei nostri compilatori, Visual C++ e Xcode, in modo da poter utilizzare sempre le funzionalità standard C++ più aggiornate non appena sono disponibili.
  • Finanziamo il gruppo di lavoro per i linguaggi di programmazione dell'Istituto tedesco per la standardizzazione (DIN). Alcuni dei nostri dipendenti fanno parte di questa commissione e votano nel processo di standardizzazione internazionale di ISO/IEC C++.
  • Sponsorizziamo la Fondazione per lo standard C++ aiutandola a diffondere la comprensione e l’uso del moderno standard C++ su tutti i compilatori e su tutte le piattaforme.

Libreria

  • Utilizziamo Boost in tutto il nostro codice, ad esempio Boost.Spirit per l’analisi.
  • Disponiamo della nostra libreria di range, nella stessa ottica dei Boost.Range o dei range v3 di Eric Niebler, ma siamo andati oltre, per esempio con l’unificazione dell’iterazione interna ed esterna. Abbiamo tenuto una conferenza in merito e la maggior parte del codice è pubblico.
  • Abbiamo sviluppato una libreria multi-piattaforma che supporta Mac e Windows con un unico codebase.
  • Disponiamo di librerie per il conteggio dei riferimenti e permanenti per salvare e ripristinare intere strutture di oggetti.
  • Disponiamo di una vasta infrastruttura per la segnalazione degli errori. Il controllo di asserzioni ed errori si trova nel codice di rilascio e il nostro software segnala automaticamente gli errori al nostro server. Il server analizza l'errore, lo categorizza e lo cataloga in un database a cui possono accedere tutti gli sviluppatori. Se un aggiornamento corregge l'errore, l'utente può scaricarlo direttamente dalla pagina Web di risposta all'errore.

Algoritmi

  • think-cell è stato fondato a partire da un’idea per un algoritmo di automazione del layout delle diapositive e stiamo ancora lavorando con entusiasmo alla realizzazione di questa ambiziosa visione. Potrai vedere la nostra versione più recente in azione!
  • Abbiamo sviluppato un nuovo algoritmo per l'etichettatura automatica delle nuvole di punti che consente il posizionamento delle etichette lontano dai punti effettivi.
  • Abbiamo sviluppato un nuovo algoritmo per l'etichettatura automatica degli istogrammi.
  • Collaboriamo con John Forrest, autore del risolutore lineare CLP, per rendere il suo codice simplex più rapido con il nostro tipo di problemi.
  • Abbiamo sviluppato diverse strutture di dati generiche che non usano C++ o Boost, per esempio le partizioni.
  • Il nostro software non solo produce i grafici, ma è anche in grado di leggerli a partire da materiale cartaceo. Per il nostro strumento di riconoscimento grafici, ci affidiamo a OpenCV e a Leptonica Image Processing Library.

Ingegneria inversa

  • Per ottenere risultati impossibili da raggiungere con le API di Microsoft Office documentate, utilizziamo diversi strumenti di ingegneria inversa unitamente al disassemblatore IDA della Hex-Rays.
  • Abbiamo scritto probabilmente il miglior motore di aggancio funzioni in circolazione. Ad ogni avvio del nostro software, aggiorniamo i file Microsoft Office eseguibili in memoria. Per sostenere le piccole modifiche ai file eseguibili, preferiamo cercare piccole porzioni resistenti di codice di assemblaggio invece che indirizzi patch hardcoded.

Guarda il nostro Direttore tecnico Arno mentre risponde alle domande frequenti

Arno Schoedl (fondatore e Direttore tecnico di think-cell) e Volker Schöch (Sviluppatore software senior) rispondono alle domande frequenti relative alle candidature e a cosa significa lavorare in think-cell come sviluppatore C++.

In questo video scoprirai:

Informazioni su questo lavoro

Cerchiamo sviluppatori intelligenti e creativi con solide basi teoriche. Il nostro team di sviluppatori è composto da persone con più di 15 anni di esperienza commerciale in vari settori e da neo-laureati in Scienze informatiche, Fisica e Matematica. Una laurea e una precedente esperienza in C++, insieme ad una approccio nuovo e creativo al problem-solving, sono una combinazione perfetta per questo ruolo. Tutte le nostre fasi di selezione si basano su attività e scelta del candidato si basa sulla dimostrazione delle proprie competenze durante lo svolgimento dei nostri test.

Lavorerai per gran parte del tempo in modo indipendente e sarai responsabile di una vasta gamma di attività durante l'implementazione di una nuova funzione. Devi essere in grado di analizzare il problema dalla prospettiva dell'utente e discutere di concetti astratti con i tuoi colleghi sviluppatori. Preferiamo che ciascuno dei nostri sviluppatori si occupi di architettura, design, implementazione, feedback degli utenti e risoluzione degli errori piuttosto che suddividere queste attività tra più persone. Da noi, tutti sono in controllo del proprio lavoro.

A think-cell, non esistono scadenze o riunioni programmate. Una funzionalità è pronta per il rilascio quando sei convinto di aver implementato la migliore soluzione possibile. Le riunioni hanno luogo solo quando è necessario e devono prendervi parte solo le persone effettivamente coinvolte. Durante tutte le fasi del processo, si incoraggiano e si prendono in seria considerazione idee, suggerimenti e critiche da parte di tutti i membri del team. Le tue idee sono le benvenute, anche se ciò dovesse significare cambiare molto il codice per rendere le cose migliori.

Abbiamo pubblicato un gran numero di articoli scientifici nei settori dell'intelligenza artificiale e la grafica digitale e incoraggiamo i nostri dipendenti a fare lo stesso. Sponsorizziamo la partecipazione a conferenze e abbiamo rapporti stretti con università e istituti di ricerca negli Stati Uniti e in Germania.

think-cell incoraggia un sano equilibrio tra vita lavorativa e vita privata. Non lavoriamo di sera o durante i weekend.

Le nostre retribuzioni sono competitive e dopo un anno offriamo ai nostri sviluppatori 130.000 EUR all’anno. Se necessario, faremo il possibile per aiutarvi a trovare una sistemazione a Berlino o per ottenere un permesso di lavoro. Si richiede la capacità di comunicare correntemente in inglese e non è richiesta la conoscenza del tedesco. Per chi lo desidera vengono organizzati corsi di lingua tedesca.

Ulteriori informazioni sul nostro DevOps

Che IDE e che compilatore usate?

Utilizziamo Visual Studio con il compilatore MSVC su Windows e Xcode con Clang sul Mac. Come accennato in precedenza, eseguiamo la compilazione dallo stesso codice sorgente per entrambe le piattaforme.

Che toolkit usate per l’interfaccia utente?

Utilizziamo OpenGL su Mac e DirectX su Windows che ci consentono di riprodurre la nostra interfaccia utente sui contenuti delle finestre di PowerPoint ed Excel.

Che metodo usate per l’issue tracking?

Da anni ci serviamo di Request Tracker (RT), anche se stiamo prendendo in considerazione possibili alternative.

Che sistema di controllo della versione usate?

Git ospitato in modalità locale.

Eseguite test unitari?

Abbiamo introdotto un toolkit che consente la facile definizione dei test unitari direttamente nella nostra base di codice. I test unitari vengono eseguiti all’interno di ogni compilazione.

Disponete di un build server?

Disponiamo di un computer dedicato che esegue Jenkins per la costruzione continua del progetto e che, in caso di errori, invia automaticamente un’e-mail agli sviluppatori che hanno sottoposto codici nuovi dall’ultimo build riuscito.

Disponete di convenzioni di codificazione?

Abbiamo scritto una serie di convenzioni di codificazione, ognuna delle quali è supportata da solidi argomenti. Non esitiamo ad aggiornare le nostre convenzioni di codificazioni in presenza di argomenti nuovi o migliori.

Cosa pensate dell’analisi statica del codice?

Abbiamo provato alcuni strumenti, che tuttavia non hanno offerto risultati validi. Sembra che riusciamo comunque ad evitare le insidie più comuni grazie alle nostre convenzioni di codificazione e alle revisioni del codice. Inoltre, i problemi più complessi che eludono le nostre revisioni del codice tendono a passare inosservate anche durante l’analisi statica del codice. Ci siamo resi conto che disporre di un team di test con il personale adeguato e un team di assistenza attento con diretto accesso agli sviluppatori si è rivelato molto più efficace nell’identificare i bug più nascosti rispetto all’analisi statica del codice. Nonostante ciò, siamo sempre alla ricerca di strumenti che aiutino i nostri tester e sviluppatori a individuare più velocemente un numero maggiore di errori.

Cosa pensate della metodologia Agile nell’ambito dello sviluppo software?

Siamo a conoscenza delle moderne metodologie di sviluppo software che si sono espanse attorno al movimento Agile e ci serviamo di qualsiasi elemento che sia utile per il nostro progetto senza interferire. Ciò include: le peer review; un alto grado di auto-organizzazione e responsabilità; test di usabilità hallway; test più formali con utenti reali; la prontezza di soppesare nuovi requisiti o nuove scoperte in qualsiasi fase del processo di sviluppo; aggiornamenti frequenti ed automatici; un ciclo di feedback breve, basato sul riscontro di utenti attivi e report automatici dal software; l’uso dei migliori strumenti disponibili sul mercato, come RAID SSD ed enormi quantità di RAM per ogni sviluppatore; disporre del tempo necessario per assicurarsi che ogni dettaglio di implementazione goda dell’attenzione che merita; disporre del tempo necessario a non scrivere codice inutile.

Ti sembra interessante?

Se sei la persona che manca al nostro team, inviaci la tua candidatura in formato elettronico.

Vuoi saperne di più?

In caso di domande sul lavoro in think-cell, sulle nostre opportunità di lavoro o i nostri eventi, ti invitiamo a contattare la nostra collega Julia Zhachuk.

hr@think-cell.com
+49 30 6664731-81

rappresentante HR di think-cell.


Condividi